Skip to content

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

  1. Editar charts/{app}/Chart.yaml — incrementar o campo version
  2. Fazer as alterações necessárias nos templates ou values.yaml
  3. Criar PR, aguardar review e merge
  4. 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

  1. Copiar um chart existente como template: bash cp -r charts/auth-api charts/nova-api

  2. 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"

  3. Editar values.yaml:

    • Atualizar image.repository para o caminho OCIR correto
    • Ajustar porta do container
    • Configurar path do HTTPRoute
    • Ajustar path do ESO no Vault
  4. Editar doc.yaml com metadados para geração de README

  5. Gerar README: bash make readme # ou para um chart específico: ./scripts/generate-readme.sh --charts nova-api

  6. 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.yamlREADME.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:

  1. Chart SBOM: gerado pelo Syft a partir do .tgz do chart
  2. Image SBOM: gerado pelo Syft a partir da imagem Docker referenciada no chart
  3. Ambos são anexados ao artefato OCI via ORAS como annotations
  4. 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.