Template Helm simples para deploy de aplicações customizadas no GKE.
O cluster deve ter instalado:
- Traefik (ingress controller)
- Cert Manager (certificados SSL)
- External Secrets (gerenciamento de secrets)
- Workload Identity habilitado
- Requer autenticação via external secrets
- Usa secret tipo
kubernetes.io/dockerconfigjson
- Usa workload identity para autenticação
- Não precisa de image pull secrets
- Imagens públicas não precisam de autenticação
- Imagens privadas precisam de dockerconfigjson secret
Todas as variáveis em env: são automaticamente colocadas em um ConfigMap:
env:
NODE_ENV: production
API_URL: https://api.exemplo.comReferencia secrets existentes (nunca coloque valores de secrets no values.yaml):
# Secrets completos como env vars
envFromSecrets:
- database-credentials
- api-keys
# Chaves específicas de secrets
envFromSecretKeys:
- name: DATABASE_URL
secretName: db-credentials
key: urlexternalSecrets:
enabled: true
secretStore: gcp-secrets
secrets:
- name: ghcr-auth-secret
key: ghcr-credentials
type: dockerconfigjsongcloud iam service-accounts create meu-app-sa \
--project=seu-projetogcloud iam service-accounts add-iam-policy-binding \
--role="roles/iam.workloadIdentityUser" \
--member="serviceAccount:seu-projeto.svc.id.goog[namespace/service-account-k8s]" \
--project=seu-projeto \
meu-app-sa@seu-projeto.iam.gserviceaccount.comworkloadIdentity:
enabled: true
serviceAccountName: meu-app-sa
projectId: seu-projetoImportante: Quando usar workload identity, não precisa configurar GOOGLE_APPLICATION_CREDENTIALS. As bibliotecas do Google Cloud detectam automaticamente.
replicaCount: 3hpa:
enabled: true
minReplicas: 2
maxReplicas: 10
targetCPUUtilizationPercentage: 70Sempre configure limites de recursos:
resources:
limits:
cpu: 1000m
memory: 1Gi
requests:
cpu: 200m
memory: 256MiVeja a pasta examples/ para configurações completas:
ghcr-example.yaml: Deploy com GHCR e external secretsartifact-registry-example.yaml: Artifact Registry com workload identitydockerhub-example.yaml: Imagem pública do DockerHubworkload-identity-example.yaml: Exemplo completo de workload identityminimal-example.yaml: Deploy mínimoargocd-application.yaml: Exemplo de Application do ArgoCD
helm install meu-app https://github.com/retize-io/retize-chart.git//app -f values-production.yamlUse o exemplo em examples/argocd-application.yaml:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-app
spec:
source:
repoURL: https://github.com/retize-io/retize-chart.git
path: app
helm:
valueFiles:
- ../examples/ghcr-example.yaml- Nunca coloque secrets no values.yaml - Use external secrets ou referencie secrets existentes
- Use workload identity para serviços GCP ao invés de montar chaves de service account
- Separe config de secrets - Use ConfigMap para dados não-sensíveis
- Configure resource limits - Sempre defina CPU e memória
- Use tags específicas - Evite tag
latestem produção