1
0
Fork 0
mirror of https://github.com/imjasonh/terraform-playground synced 2026-07-06 23:12:22 +00:00

Merge pull request #10 from imjasonh/diagram

diagram
This commit is contained in:
Jason Hall 2026-02-03 14:04:02 -05:00 committed by GitHub
commit e7291474b8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 277 additions and 0 deletions

35
driftlessaf/dashboard.tf Normal file
View file

@ -0,0 +1,35 @@
# Dashboards for the PR reconciler infrastructure
module "pr-reconciler-dashboard" {
source = "chainguard-dev/common/infra//modules/dashboard/reconciler"
project_id = var.project_id
name = "pr-logger"
# Workqueue configuration (should match reconciler module settings)
max_retry = 100
concurrent_work = 20
# Enable GitHub API metrics section since we call GitHub
sections = {
github = true
}
notification_channels = []
labels = {
team = var.team
}
}
module "pr-workqueue-dashboard" {
source = "chainguard-dev/common/infra//modules/dashboard/workqueue"
name = "pr-logger-wq"
concurrent_work = 20
max_retry = 100
labels = {
team = var.team
}
}

242
driftlessaf/diagram.md Normal file
View file

@ -0,0 +1,242 @@
# Infrastructure Diagram
This diagram shows all GCP resources created by the driftlessaf Terraform configuration.
```mermaid
flowchart TB
subgraph External
GH[GitHub Webhooks]
end
subgraph "Cloud Run Services"
subgraph "GitHub Events Trampoline"
GHE_C1[driftless-github-events<br/>us-central1]
GHE_E4[driftless-github-events<br/>us-east4]
end
subgraph "CloudEvent Broker Ingress"
BRK_C1[driftlessaf<br/>us-central1]
BRK_E4[driftlessaf<br/>us-east4]
end
subgraph "PR Events Workqueue Subscriber"
PRSUB_C1[pr-events<br/>us-central1]
PRSUB_E4[pr-events<br/>us-east4]
end
subgraph "PR Reconciler Workqueue"
WQRCV_C1[pr-logger-wq-rcv<br/>us-central1]
WQRCV_E4[pr-logger-wq-rcv<br/>us-east4]
WQDSP_C1[pr-logger-wq-dsp<br/>us-central1]
WQDSP_E4[pr-logger-wq-dsp<br/>us-east4]
end
subgraph "PR Reconciler"
REC_C1[pr-logger-rec<br/>us-central1]
REC_E4[pr-logger-rec<br/>us-east4]
end
end
subgraph "Cloud Run Jobs"
REENQ[pr-logger-wq-reenqueue<br/>us-central1]
end
subgraph "Pub/Sub Topics (Broker)"
TOPIC_C1[driftlessaf-us-central1]
TOPIC_E4[driftlessaf-us-east4]
end
subgraph "Pub/Sub - PR Events Workqueue"
PRSUB_SUB_C1[pr-events-us-central1-0]
PRSUB_SUB_E4[pr-events-us-east4-0]
PRSUB_DLQ_C1[pr-events-us-central1-0-dlq]
PRSUB_DLQ_E4[pr-events-us-east4-0-dlq]
end
subgraph "Pub/Sub - Workqueue Change Notifications"
WQTOPIC_C1[pr-logger-wq-global-us-central1]
WQTOPIC_E4[pr-logger-wq-global-us-east4]
WQSUB_C1[pr-logger-wq-global-us-central1 sub]
WQSUB_E4[pr-logger-wq-global-us-east4 sub]
end
subgraph "Pub/Sub - Event Recorder (per event type x2 regions)"
REC_SUBS[20 subscriptions<br/>github-events-recorder-*<br/>write to GCS]
REC_DLQ[20 DLQ topics + subs<br/>github-events-recorder-dlq-*]
end
subgraph "Cloud Storage"
WQBKT[pr-logger-wq-6ct2oc<br/>Workqueue State]
RECBKT_C1[github-events-recorder-us-central1-73af<br/>Event JSON Files]
RECBKT_E4[github-events-recorder-us-east4-73af<br/>Event JSON Files]
end
subgraph "BigQuery"
BQDS[cloudevents_github_events_recorder dataset]
subgraph "Tables (10 event types)"
BQT1[dev_chainguard_github_check_run]
BQT2[dev_chainguard_github_check_suite]
BQT3[dev_chainguard_github_issue_comment]
BQT4[dev_chainguard_github_issues]
BQT5[dev_chainguard_github_projects_v2_item]
BQT6[dev_chainguard_github_pull_request]
BQT7[dev_chainguard_github_pull_request_review]
BQT8[dev_chainguard_github_pull_request_review_comment]
BQT9[dev_chainguard_github_push]
BQT10[dev_chainguard_github_workflow_run]
end
BQDTS[20 Data Transfer Jobs<br/>GCS → BigQuery<br/>every 15 minutes]
end
subgraph "Cloud Scheduler"
CRON_C1[pr-logger-wq-cron-us-central1<br/>Dispatch trigger]
CRON_E4[pr-logger-wq-cron-us-east4<br/>Dispatch trigger]
REENQ_CRON[pr-logger-wq-reenqueue-cron<br/>Re-enqueue stale items]
end
subgraph "Secret Manager"
SECRET[driftlessaf-github-app-private-key]
end
%% Data Flow - Webhook to Broker
GH -->|POST webhook| GHE_C1
GH -->|POST webhook| GHE_E4
GHE_C1 -->|CloudEvent| BRK_C1
GHE_E4 -->|CloudEvent| BRK_E4
BRK_C1 -->|publish| TOPIC_C1
BRK_E4 -->|publish| TOPIC_E4
%% Data Flow - PR Events Workqueue
TOPIC_C1 -->|filter: pullrequesturl| PRSUB_SUB_C1
TOPIC_E4 -->|filter: pullrequesturl| PRSUB_SUB_E4
PRSUB_SUB_C1 -->|push| PRSUB_C1
PRSUB_SUB_E4 -->|push| PRSUB_E4
PRSUB_SUB_C1 -.->|failures| PRSUB_DLQ_C1
PRSUB_SUB_E4 -.->|failures| PRSUB_DLQ_E4
PRSUB_C1 -->|gRPC enqueue| WQRCV_C1
PRSUB_E4 -->|gRPC enqueue| WQRCV_E4
%% Data Flow - Workqueue to Reconciler
WQRCV_C1 -->|write state| WQBKT
WQRCV_E4 -->|write state| WQBKT
WQBKT -->|GCS notification| WQTOPIC_C1
WQBKT -->|GCS notification| WQTOPIC_E4
WQTOPIC_C1 --> WQSUB_C1
WQTOPIC_E4 --> WQSUB_E4
WQSUB_C1 -->|push| WQDSP_C1
WQSUB_E4 -->|push| WQDSP_E4
CRON_C1 -->|trigger| WQDSP_C1
CRON_E4 -->|trigger| WQDSP_E4
WQDSP_C1 -->|gRPC process| REC_C1
WQDSP_E4 -->|gRPC process| REC_E4
REC_C1 -->|read state| WQBKT
REC_E4 -->|read state| WQBKT
%% Reconciler external calls
REC_C1 -->|GitHub API| GH
REC_E4 -->|GitHub API| GH
SECRET -->|env var| REC_C1
SECRET -->|env var| REC_E4
%% Re-enqueue job
REENQ_CRON -->|trigger| REENQ
REENQ -->|scan & requeue| WQBKT
%% Data Flow - Event Recorder
TOPIC_C1 -->|filter: type| REC_SUBS
TOPIC_E4 -->|filter: type| REC_SUBS
REC_SUBS -->|cloud_storage_config| RECBKT_C1
REC_SUBS -->|cloud_storage_config| RECBKT_E4
REC_SUBS -.->|failures| REC_DLQ
RECBKT_C1 --> BQDTS
RECBKT_E4 --> BQDTS
BQDTS --> BQDS
BQDS --> BQT1
BQDS --> BQT2
BQDS --> BQT3
BQDS --> BQT4
BQDS --> BQT5
BQDS --> BQT6
BQDS --> BQT7
BQDS --> BQT8
BQDS --> BQT9
BQDS --> BQT10
```
## Resource Summary
### Cloud Run Services (12 total, 6 per region)
| Service | Purpose |
|---------|---------|
| `driftless-github-events` | GitHub webhook receiver, converts to CloudEvents |
| `driftlessaf` | CloudEvent broker ingress |
| `pr-events` | Workqueue subscriber, filters PR-related events |
| `pr-logger-wq-rcv` | Workqueue receiver, accepts enqueue requests |
| `pr-logger-wq-dsp` | Workqueue dispatcher, triggers reconciler |
| `pr-logger-rec` | PR reconciler, processes PR events |
### Cloud Run Jobs (1)
| Job | Purpose |
|-----|---------|
| `pr-logger-wq-reenqueue` | Re-enqueues stale workqueue items |
### Pub/Sub Topics (26 total)
| Topic Pattern | Count | Purpose |
|---------------|-------|---------|
| `driftlessaf-{region}` | 2 | CloudEvent broker |
| `pr-events-{region}-0-dlq` | 2 | PR workqueue dead letter |
| `pr-logger-wq-global-{region}` | 2 | Workqueue GCS notifications |
| `github-events-recorder-dlq-*` | 20 | Recorder dead letter (10 types x 2 regions) |
### Pub/Sub Subscriptions (46 total)
| Subscription Pattern | Count | Purpose |
|----------------------|-------|---------|
| `pr-events-{region}-0` | 2 | Push to pr-events subscriber |
| `pr-events-{region}-0-dlq` | 2 | Dead letter pull |
| `pr-logger-wq-global-{region}` | 2 | Push to workqueue dispatcher |
| `github-events-recorder-*` | 20 | Write to GCS (10 types x 2 regions) |
| `github-events-recorder-dlq-*` | 20 | Dead letter pull |
### Cloud Storage Buckets (3)
| Bucket | Purpose |
|--------|---------|
| `pr-logger-wq-*` | Workqueue state storage |
| `github-events-recorder-us-central1-*` | Event JSON files (central) |
| `github-events-recorder-us-east4-*` | Event JSON files (east) |
### BigQuery
| Resource | Count | Purpose |
|----------|-------|---------|
| Dataset | 1 | `cloudevents_github_events_recorder` |
| Tables | 10 | One per GitHub event type |
| Data Transfer Jobs | 20 | GCS → BQ import (10 types x 2 regions) |
### Cloud Scheduler Jobs (3)
| Job | Purpose |
|-----|---------|
| `pr-logger-wq-cron-us-central1` | Trigger dispatcher periodically |
| `pr-logger-wq-cron-us-east4` | Trigger dispatcher periodically |
| `pr-logger-wq-reenqueue-cron` | Trigger re-enqueue job |
### Secret Manager (1)
| Secret | Purpose |
|--------|---------|
| `driftlessaf-github-app-private-key` | GitHub App authentication |
### Cloud Monitoring Dashboards (5)
| Dashboard | Purpose |
|-----------|---------|
| `Reconciler: pr-logger` | PR reconciler metrics: workqueue state, error reporting, logs, HTTP/gRPC, GitHub API, resources |
| `Cloud Workqueue: pr-logger-wq` | Workqueue metrics: queue depth, processing rate, retries, latency |
| `github-events-recorder` | Event recorder metrics: Pub/Sub throughput, GCS writes |
| `driftless-github-events` | GitHub events trampoline metrics |
| `driftlessaf` | CloudEvent broker metrics |