Skip to content

feat: infraestrutura Prefect 3 no cluster (servidor, workers, banco) - #137

Merged
Winzen merged 14 commits into
mainfrom
feat/reduce-observability-resources
Jul 9, 2026
Merged

feat: infraestrutura Prefect 3 no cluster (servidor, workers, banco)#137
Winzen merged 14 commits into
mainfrom
feat/reduce-observability-resources

Conversation

@Winzen

@Winzen Winzen commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

feat: infraestrutura Prefect 3 no cluster

Contexto

Este PR adiciona toda a infraestrutura necessária para rodar o Prefect 3 no cluster Kubernetes, substituindo o Prefect 0.

A nova arquitetura separa o servidor Prefect 3 (API, UI, banco de dados) dos workers (processos que executam os flows). Os workers se conectam ao servidor via API e executam os flows dentro do cluster, com acesso às credenciais GCP necessárias para cada ambiente.

O banco de dados do Prefect 3 roda no Cloud SQL (provisionado via Terraform) e é exposto ao cluster via headless service, seguindo o mesmo padrão já usado pelo banco do backend.


Organização de arquivos

k8s/prefect3/                          # servidor Prefect 3
├── namespace.yaml
├── chart/values.yaml                  # Helm values do servidor
├── ingress.yaml                       # rota prefect3.basedosdados.org
├── issuer.yaml                        # certificado TLS
├── db-service.yaml                    # headless service → Cloud SQL
└── secret-00_sealed.yaml              # credenciais do servidor (DB, API key)

k8s/prefect_workers/
├── basedosdados/                      # worker de produção
│   ├── namespace.yaml
│   ├── chart/values.yaml
│   ├── secret-01_sealed.yaml          # GCP credentials (prod)
│   ├── secret-02_sealed.yaml          # GCP credentials (dev bucket — staging flows)
│   └── secret-03_sealed.yaml          # Vault credentials
└── basedosdados-dev/                  # worker de desenvolvimento
    ├── namespace.yaml
    ├── chart/values.yaml
    ├── secret-01_sealed.yaml          # GCP credentials (dev)
    └── secret-02_sealed.yaml          # Vault credentials

terraform/cloud_sql/                   # banco de dados Prefect 3
├── main.tf
└── variables.tf

Componentes

Servidor Prefect 3

Instalado via Helm no namespace prefect3. Exposto em prefect3.basedosdados.org com TLS via cert-manager.

O banco de dados roda no Cloud SQL e é acessado pelo servidor via db-service.yaml (headless service que resolve para o IP da instância Cloud SQL), sem necessidade de Cloud SQL Proxy.

Workers

Dois workers instalados via Helm, cada um em seu próprio namespace:

Worker Namespace Ambiente
basedosdados prefect-worker Produção
basedosdados-dev prefect-worker-dev Desenvolvimento

Cada worker recebe as credenciais GCP necessárias via sealed secrets montados como arquivos. O worker de produção recebe uma credencial extra para acesso ao bucket de dev (usado por flows de staging que rodam no worker de prod).

Banco de dados (Terraform)

Instância Cloud SQL PostgreSQL provisionada via Terraform, referenciada nos variables.tf do módulo raiz.


Credenciais

Os sealed secrets de cada worker contêm:

Secret Conteúdo
secret-01 GCP service account credentials (JSON)
secret-02 GCP credentials do ambiente secundário (prod worker) ou Vault credentials (dev worker)
secret-03 Vault credentials (prod worker apenas)

O secret-00 do servidor contém as credenciais de conexão com o banco e a API key do Prefect 3.

Winzen added 13 commits April 17, 2026 04:44
- Add Cloud SQL database and user for Prefect 3 (prefect3/prefect3)
  with auto-generated password stored in GCP Secret Manager
- Add k8s/prefect3 namespace with db-service, issuer and ingress
  pointing to prefect3.basedosdados.org
chunksCache: 8192 MB -> 512 MB (pico real de 7d: 387Mi)
resultsCache: 1024 MB -> 64 MB (uso real constante: 2Mi)
Retenção de 6 meses (4320h) via compactor — PVC cresce ~10 GB/mês,
estado estável estimado em ~60 GB dos 100 GB disponíveis.
@github-actions

github-actions Bot commented Jun 18, 2026

Copy link
Copy Markdown

💰 Infracost report

Monthly estimate increased by $0.06 📈

Changed project Baseline cost Usage cost* Total change New monthly cost
basedosdados/iac/terraform +$0.06 - +$0.06 (0%) $458

*Usage costs can be estimated by updating Infracost Cloud settings, see docs for other options.

Estimate details
Key: * usage cost, ~ changed, + added, - removed

──────────────────────────────────
Project: main

+ module.cloudsql.google_secret_manager_secret_version.prefect3_db_password
  +$0.06

    + Active secret versions
      +$0.06

    + Access operations
      Monthly cost depends on usage
        +$0.03 per 10K requests

+ module.cloudsql.google_secret_manager_secret.prefect3_db_password
  Monthly cost depends on usage

    + Active secret versions
      Monthly cost depends on usage
        +$0.06 per versions

    + Access operations
      Monthly cost depends on usage
        +$0.03 per 10K requests

    + Rotation notifications
      Monthly cost depends on usage
        +$0.05 per rotations

Monthly cost change for basedosdados/iac/terraform
Amount:  +$0.06 ($458 → $458)
Percent: 0%

──────────────────────────────────
Key: * usage cost, ~ changed, + added, - removed

*Usage costs can be estimated by updating Infracost Cloud settings, see docs for other options.

32 cloud resources were detected:
∙ 14 were estimated
∙ 18 were free

Infracost estimate: Monthly estimate increased by $0.06 ↑
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
┃ Changed project                                    ┃ Baseline cost ┃ Usage cost* ┃ Total change ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━╋━━━━━━━━━━━━━━┫
┃ basedosdados/iac/terraform                         ┃        +$0.06 ┃           - ┃  +$0.06 (0%) ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━┻━━━━━━━━━━━━━━┛
This comment will be updated when code changes.

@Winzen Winzen self-assigned this Jun 18, 2026
@mergify

mergify Bot commented Jul 9, 2026

Copy link
Copy Markdown

Tick the box to add this pull request to the merge queue (same as @mergifyio queue).

  • Queue this pull request

@Winzen Winzen changed the title feat: reduce loki cache memory and add 6-month log retention feat: add Prefect 3 infrastructure (workers, secrets, database) Jul 9, 2026
@Winzen Winzen changed the title feat: add Prefect 3 infrastructure (workers, secrets, database) feat: infraestrutura Prefect 3 no cluster (servidor, workers, banco) Jul 9, 2026
@Winzen
Winzen merged commit 5fc6227 into main Jul 9, 2026
3 checks passed
@Winzen
Winzen deleted the feat/reduce-observability-resources branch July 9, 2026 17:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant