Skip to content

Enterprise Overrides

Malindentado edited this page Oct 27, 2026 · 3 revisions

Enterprise Overrides

O sistema de overrides permite adaptar a stack do Yby para qualquer ambiente corporativo sem modificar templates ou forkar o projeto.


Como Funciona

O Yby gera infraestrutura a partir de uma stack opinativa com defaults para PMEs. O arquivo de overrides substitui valores hardcoded por configuracoes da sua organizacao.

Sem overrides (PME):    Traefik + Let's Encrypt + local-path + Docker Hub
Com overrides (Enterprise): Nginx + CA interna + gp3 + ECR privado

Precedencia de Carregamento

  1. --config <path> (flag explicita)
  2. .yby/overrides.yaml (diretorio do projeto)
  3. ~/.yby/overrides.yaml (global do usuario)
  4. Defaults vazios (comportamento padrao)
# Uso explicito
yby init --config .yby/overrides.yaml --topology standard

# Auto-detect (se .yby/overrides.yaml existir)
yby init --topology standard

Referencia Completa

# .yby/overrides.yaml

# ============================================================
# REGISTRY DE IMAGENS
# Redireciona todas as imagens para um registry privado.
# ============================================================
registry:
  url: "012345678.dkr.ecr.sa-east-1.amazonaws.com"  # Prefixo aplicado a todas as imagens
  pullSecret: "regcred"                               # Nome do imagePullSecret no cluster

# ============================================================
# CLOUD PROVIDER
# Ajusta storage class e provider para o ambiente cloud.
# ============================================================
cloud:
  provider: "aws"        # aws, gcp, azure, "" (on-prem)
  storageClass: "gp3"    # Storage class do cluster (default: local-path)

# ============================================================
# INGRESS
# Define o ingress controller do cluster.
# ============================================================
ingress:
  className: "nginx"     # nginx, traefik, alb (default: traefik)

# ============================================================
# TLS E CERTIFICADOS
# Configura emissao de certificados TLS.
# ============================================================
tls:
  issuer: "custom"               # custom | letsencrypt-staging | letsencrypt-prod
  caSecretName: "corp-ca-tls"    # Secret com CA corporativa (quando issuer=custom)
  acmeSolver: "dns01"            # http01 | dns01 (quando issuer=letsencrypt-*)

# ============================================================
# NAMESPACES
# Adiciona prefixo e labels a todos os namespaces gerados.
# ============================================================
namespaces:
  prefix: "fintech"      # Resultado: fintech-argocd, fintech-monitoring, etc.
  labels:                 # Labels injetadas em todos os namespaces
    cost-center: "platform"
    team: "devops"
    compliance: "pci-dss"

# ============================================================
# HELM CHARTS
# Configura mirror de repositorios e versoes de charts.
# ============================================================
helm:
  repoBaseURL: "https://charts.internal.corp"  # Mirror interno (substitui repos publicos)
  versions:                                     # Versoes especificas de charts
    argocd: "6.7.0"
    keda: "2.16.0"
    kepler: "0.5.14"

# ============================================================
# IMAGENS (OVERRIDES EXPLICITOS)
# Substitui imagens especificas por versoes customizadas.
# Tem precedencia sobre registry.url.
# ============================================================
images:
  overrides:
    "ubuntu:22.04": "registry.corp/hardened/ubuntu:22.04-cis"
    "bitnami/kubectl:1.31": "registry.corp/bitnami/kubectl:1.31"

# ============================================================
# GIT PROVIDER
# Define o provider Git para discovery de repositorios.
# ============================================================
git:
  provider: "gitlab"     # github | gitlab | bitbucket (default: github)

# ============================================================
# OBSERVABILIDADE
# Define o backend de monitoramento.
# ============================================================
observability:
  mode: "thanos"         # prometheus | thanos | loki (default: prometheus)

# ============================================================
# RESOURCE PROFILES
# Define o perfil de recursos para componentes do cluster.
# ============================================================
profiles:
  resources: "large"     # small | medium | large (default: medium)
  # small:  128Mi/100m  (dev local)
  # medium: 256Mi/250m  (staging)
  # large:  512Mi/500m  (producao)

Capabilities vs Produtos

O Yby usa nomes de produtos como defaults (MinIO, Kepler, KEDA), mas eles representam capabilities da plataforma:

Flag do CLI Capability Default Como Trocar
--enable-minio Object Storage MinIO Desabilite e adicione seu provider via charts/
--enable-kepler Energy Metrics Kepler Desabilite e adicione exporters customizados
--enable-keda Event Autoscaling KEDA Desabilite e use HPA nativo
--enable-metrics-server Observability Prometheus Use observability.mode no overrides

A estrutura gerada pelo yby init e sempre a mesma — GitOps com App of Apps. Trocar um componente significa:

  1. Desabilitar a flag do default (--enable-minio=false)
  2. Adicionar seu chart customizado em charts/
  3. Criar uma Application no manifests/argocd/

Cenarios de Uso

Banco Digital (AWS)

registry:
  url: "012345678.dkr.ecr.sa-east-1.amazonaws.com"
  pullSecret: "ecr-regcred"
cloud:
  provider: "aws"
  storageClass: "gp3"
ingress:
  className: "alb"
tls:
  issuer: "custom"
  caSecretName: "bank-internal-ca"
namespaces:
  prefix: "bank"
  labels:
    compliance: "pci-dss"
    cost-center: "infrastructure"

Startup (GCP, defaults rapidos)

cloud:
  provider: "gcp"
  storageClass: "standard-rwo"
ingress:
  className: "nginx"
tls:
  issuer: "letsencrypt-prod"
  acmeSolver: "dns01"

On-Prem (Air-gapped)

registry:
  url: "harbor.internal:5000"
  pullSecret: "harbor-cred"
helm:
  repoBaseURL: "https://chartmuseum.internal"
tls:
  issuer: "custom"
  caSecretName: "corp-root-ca"
namespaces:
  prefix: "prod"

Configuração Cloud em Environments

O arquivo .yby/environments.yaml suporta configuração de clusters cloud gerenciados via cloud:

Campos por Provider

Campo AWS Azure GCP Descrição
provider x x x Provider cloud (aws, azure, gcp)
region x Região AWS (ex: sa-east-1)
cluster x x x Nome do cluster K8s gerenciado
profile x AWS profile (~/.aws/credentials)
role_arn x ARN do IAM Role para AssumeRole
resource_group x Resource Group do AKS
subscription x ID da Subscription Azure
tenant_id x ID do Tenant Azure AD
login_mode x Modo de login (cli, sp, msi)
project_id x ID do projeto GCP
zone x Zona GCP (ex: us-east1-b)

Exemplo AWS (ECR + EKS)

# .yby/environments.yaml
environments:
  prod-aws:
    type: remote
    cloud:
      provider: aws
      region: sa-east-1
      cluster: prod-eks
      profile: production
      role_arn: "arn:aws:iam::123456789:role/eks-admin"

Combinado com overrides para ECR:

# .yby/overrides.yaml
registry:
  url: "012345678.dkr.ecr.sa-east-1.amazonaws.com"
  pullSecret: "ecr-regcred"
cloud:
  provider: "aws"
  storageClass: "gp3"

Exemplo Azure (ACR + AKS)

# .yby/environments.yaml
environments:
  prod-azure:
    type: remote
    cloud:
      provider: azure
      cluster: prod-aks
      resource_group: rg-platform
      subscription: "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
      tenant_id: "ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj"
      login_mode: cli

Combinado com overrides para ACR:

# .yby/overrides.yaml
registry:
  url: "meurepo.azurecr.io"
  pullSecret: "acr-regcred"
cloud:
  provider: "azure"
  storageClass: "managed-premium"

Exemplo GCP (GCR + GKE)

# .yby/environments.yaml
environments:
  prod-gcp:
    type: remote
    cloud:
      provider: gcp
      cluster: prod-gke
      project_id: meu-projeto-id
      zone: us-east1-b

Combinado com overrides para GCR:

# .yby/overrides.yaml
registry:
  url: "gcr.io/meu-projeto-id"
  pullSecret: "gcr-regcred"
cloud:
  provider: "gcp"
  storageClass: "standard-rwo"

Integracao com Bootstrap

O yby bootstrap cluster não lê o arquivo de overrides nem aceita --config (a flag só existe no yby init). Os overrides chegam ao cluster pelo que o yby init --config gerou: os values.yaml dos charts bootstrap e cluster-config saem com eles aplicados.

  • Namespaces: Nomes com o prefixo configurado
  • Registry: Imagens apontando para o registry privado
  • Chart versions: Versões de keda e kepler em helm.versions
  • Ingress e TLS: Ingress class e issuer configurados
# Os overrides entram na geração; o bootstrap instala o que foi gerado
yby init --config .yby/overrides.yaml
yby bootstrap cluster

Clone this wiki locally