Helm Charts — Manutenção¶
Publicação Automática¶
Quando um chart é modificado e o PR é mergeado na branch main, o workflow release.yaml publica automaticamente apenas os charts alterados:
flowchart TD
MERGE[Merge na main] --> DETECT[Detecta charts modificados via git diff]
DETECT --> PKG[helm package para cada chart]
PKG --> PUSH[helm push para oci://ghcr.io/ads-saude]
PUSH --> DONE[Chart disponível no GHCR]
Atualizar Versão de um Chart¶
- Editar
charts/{app}/Chart.yaml— incrementar o campoversion - Fazer as alterações necessárias nos templates ou
values.yaml - Criar PR, aguardar review e merge
- O CI publica automaticamente o chart atualizado no GHCR
Atualizar ads-tenants-config
Após publicar uma nova versão do chart, é necessário atualizar o chartVersion nos arquivos app-config.yaml dos tenants no repositório ads-tenants-config para que o ArgoCD use a nova versão.
Criar Novo Chart¶
-
Copiar um chart existente como template:
bash cp -r charts/auth-api charts/nova-api -
Editar
Chart.yaml:yaml apiVersion: v2 name: nova-api description: A Helm chart for Nova API type: application version: 1.0.0 appVersion: "1.0.0" -
Editar
values.yaml:- Atualizar
image.repositorypara o caminho OCIR correto - Ajustar porta do container
- Configurar path do HTTPRoute
- Ajustar path do ESO no Vault
- Atualizar
-
Editar
doc.yamlcom metadados para geração de README -
Gerar README:
bash make readme # ou para um chart específico: ./scripts/generate-readme.sh --charts nova-api -
Criar PR, merge → CI publica automaticamente
Makefile¶
O repositório inclui um Makefile com os seguintes targets:
| Target | Descrição |
|---|---|
make all |
Gera READMEs + publica charts modificados |
make readme |
Gera README.md para todos os charts via chart-doc-gen |
make publish |
Publica apenas charts modificados no GHCR (sem SBOM) |
make publish-sbom |
Publica todos os charts com geração de SBOM |
make publish-chart-sbom chart=auth-api |
Publica um chart específico com SBOM |
make scan url=ghcr.io/ads-saude/auth-api:1.0.0 target=chart |
Escaneia chart remoto por vulnerabilidades |
Scripts¶
publish-modified-charts.sh¶
Script principal de publicação. Determina quais charts foram modificados via git diff e publica apenas esses:
```bash
Publicar charts modificados (padrão)¶
./scripts/publish-modified-charts.sh
Publicar todos os charts¶
./scripts/publish-modified-charts.sh --force
Publicar charts específicos com SBOM¶
./scripts/publish-modified-charts.sh --charts auth-api,is-core-ui --sbom true
Modo pipeline (usa apenas HEAD commit para detectar mudanças)¶
./scripts/publish-modified-charts.sh --pipeline ```
generate-readme.sh¶
Gera documentação automática dos charts usando chart-doc-gen:
```bash
Gerar README para todos os charts¶
./scripts/generate-readme.sh
Gerar README para chart específico¶
./scripts/generate-readme.sh --charts auth-api ```
Inputs por chart: doc.yaml + values.yaml + Chart.yaml → README.md
scan-remote-sbom.sh¶
Escaneia um chart ou imagem remoto por vulnerabilidades:
```bash
Escanear SBOM de um chart¶
./scripts/scan-remote-sbom.sh ghcr.io/ads-saude/auth-api:1.0.0 chart
Escanear SBOM de uma imagem¶
./scripts/scan-remote-sbom.sh ghcr.io/ads-saude/auth-api:1.0.0 image ```
Usa Grype e Trivy para análise de vulnerabilidades.
delete-packages.sh¶
Remove pacotes OCI do GHCR via GitHub API:
```bash
Deletar um pacote específico¶
./scripts/delete-packages.sh --package auth-api
Deletar todos os pacotes da org¶
./scripts/delete-packages.sh --force ```
Segurança — SBOM¶
O pipeline suporta geração de Software Bill of Materials (SBOM) no formato SPDX:
- Chart SBOM: gerado pelo Syft a partir do
.tgzdo chart - Image SBOM: gerado pelo Syft a partir da imagem Docker referenciada no chart
- Ambos são anexados ao artefato OCI via ORAS como annotations
- Scan de vulnerabilidades via Grype e Trivy
SBOM na CI
Na CI automática (merge na main), o SBOM não é gerado por padrão (--sbom false). Para gerar SBOMs, use make publish-sbom localmente ou no pipeline manualmente.