Onboarding de Nova Aplicação¶
Checklist completo para adicionar uma nova aplicação à plataforma.
Visão Geral¶
flowchart LR
A[1. Helm Chart] --> B[2. Pipeline CI/CD]
B --> C[3. Vault Secrets]
C --> D[4. Tenants Config]
D --> E[5. ArgoCD Sync]
Passo 1: Criar Helm Chart¶
No repositório ads-helm-charts, criar charts/{app-name}/:
charts/{app-name}/
├── Chart.yaml
├── values.yaml
├── templates/
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ ├── service.yaml
│ ├── serviceaccount.yaml
│ ├── hpa.yaml
│ ├── http-route.yaml
│ ├── eso-config.yaml
│ ├── eso-imagepull-secrets.yaml
│ └── NOTES.txt
└── README.md
values.yaml Essenciais¶
```yaml image: repository: gru.ocir.io/grbtf2fwsmfh/{app-name} tag: latest
containerPort: 6001 # APIs: 6001-6003, UIs: 80 domain: nox.app.br
config: remoteSecretPath: "tenants/{{ .Release.Namespace }}/{app-name}/config" secretStore: vault
replicaCount: 1 ```
ESO Template (eso-config.yaml)¶
yaml
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: {{ include "app.fullname" . }}-config
spec:
secretStoreRef:
name: {{ .Values.config.secretStore }}
kind: ClusterSecretStore
target:
name: {{ include "app.fullname" . }}-config
data:
- secretKey: DB_PASSWORD
remoteRef:
key: {{ .Values.config.remoteSecretPath }}
property: DB_PASSWORD
Publicar o Chart¶
```bash cd ads-helm-charts
O workflow de CI publica automaticamente charts modificados¶
Ou manualmente:¶
make publish ```
Passo 2: Configurar Pipeline CI/CD¶
No Repositório da Aplicação¶
-
Copiar o template de pipeline:
bash cp ads-automations/templates/application-pipeline.yml \ {app-repo}/.github/workflows/application-pipeline.yml -
Adicionar Dockerfile baseado no template apropriado:
=== "Java"
bash
cp ads-automations/templates/Dockerfile-java {app-repo}/Dockerfile
Ajustar JAVA_VERSION se diferente de 21.
=== "Node/Angular"
bash
cp ads-automations/templates/Dockerfile-node {app-repo}/Dockerfile
- Configurar secrets do repositório no GitHub:
| Secret | Descrição |
|---|---|
PIPELINE_SECRETS |
JSON com credenciais compartilhadas |
OCI_RUNNER_ID |
OCID do Container Instance do runner |
TOKEN |
GitHub token para operações cross-repo |
- Primeiro build — Crie um PR e faça merge para gerar a primeira imagem Docker.
Passo 3: Criar Secrets no Vault¶
Para cada tenant que usará a aplicação:
```bash
Opção 1: Copiar de outra app do mesmo tenant¶
./scripts/vault/vault-backup.sh -cp \ -m secret/HML \ -sp tenants/tre/app-existente/config \ -dp tenants/tre/{app-name}/config
Opção 2: Criar manualmente via Vault UI¶
Path: secret/HML/tenants/{tenant}/{app-name}/config¶
Adicionar: DB_URL, DB_PASSWORD, etc.¶
```
Repetir para todos os tenants e ambientes (HML e NOX).
Passo 4: Configurar Tenants¶
Adicionar Templates¶
Criar templates/{env}/{app-name}/ no ads-tenants-config:
app-config.yaml:
yaml
chartVersion: 1.0.0
values.yaml (HML):
yaml
env: hml
image:
tag: 1.0.0-DEV@sha256:abc123...
values.yaml (NOX):
yaml
env: nox
image:
tag: v1.0.0@sha256:abc123...
Adicionar a Cada Tenant¶
Criar diretório tenants/oci/{env}/{tenant}/{app-name}/ com os mesmos 2 arquivos para cada tenant que deve receber a aplicação.
Automatizar com script
Para adicionar a todos os tenants de uma vez:
bash
for tenant in afpes cisne cmd fusex hic nfb rjv rvt scz tre; do
mkdir -p tenants/oci/hml/$tenant/{app-name}
cp templates/hml/{app-name}/* tenants/oci/hml/$tenant/{app-name}/
done
Commit e Push¶
bash
git add templates/ tenants/
git commit -m "feat: add {app-name} to all tenants"
git push
Passo 5: Verificar Deploy¶
Após o push para main do ads-tenants-config:
- ArgoCD detecta os novos
app-config.yamlautomaticamente - O ApplicationSet gera uma
Applicationpor tenant - O sync automático instala o chart em cada namespace
Verificar no ArgoCD¶
```bash
Verificar applications criadas¶
kubectl get applications -n argocd | grep {app-name}
Verificar status de um deploy específico¶
kubectl get all -n {tenant} -l app.kubernetes.io/name={app-name} ```
Checklist Resumo¶
1. [ ] Criar Helm chart em ads-helm-charts/charts/{app-name}/
2. [ ] Publicar chart no registry OCI
3. [ ] Adicionar Dockerfile ao repositório da aplicação
4. [ ] Copiar application-pipeline.yml para .github/workflows/
5. [ ] Configurar secrets do repo (PIPELINE_SECRETS, OCI_RUNNER_ID, TOKEN)
6. [ ] Fazer primeiro build (PR + merge ou tag manual)
7. [ ] Criar secrets no Vault para cada tenant
8. [ ] Adicionar app aos templates em ads-tenants-config
9. [ ] Adicionar app a cada tenant em tenants/oci/{env}/{tenant}/
10. [ ] Commit e push — ArgoCD sync automático
11. [ ] Verificar deploy no ArgoCD
12. [ ] (Se necessário) Provisionar infra: DB dedicado, FSS, etc.