Middle
Como armazenar corretamente os modelos Helm no GitLab?
sobes.tech IA
Resposta da IA
Recomenda-se armazenar os modelos Helm em um repositório Git separado no GitLab. Isso permite versioná-los, aplicar pipelines CI/CD para linting e empacotamento, bem como gerir o acesso.
A estrutura do repositório pode ser assim:
my-helm-charts/
├── Chart.yaml // Informação meta do chart
├── values.yaml // Valores padrão
├── templates/ // Modelos de manifestos do Kubernetes
│ ├── deployment.yaml
│ ├── ingress.yaml
│ └── service.yaml
└── charts/ // Charts dependentes (opcional)
└── redis/
└── ...
Para automatizar, pode usar GitLab CI/CD. Exemplo de .gitlab-ci.yml:
stages:
- lint
- package
- deploy # Opcional
variables:
HELM_VERSION: "3.x.x" # Indique a versão atual do Helm
HELM_REGISTRY: "my-gitlab-registry" # Nome do seu registo no GitLab
before_script:
- curl https://get.helm.sh/helm-v${HELM_VERSION}-linux-amd64.tar.gz | tar xz
- mv linux-amd64/helm /usr/local/bin/helm
- helm version
lint_chart:
stage: lint
image: docker.io/alpine/helm:latest # Use uma imagem com Helm
script:
- helm lint ./my-chart-directory # Caminho para o diretório do seu chart
package_chart:
stage: package
image: docker.io/alpine/helm:latest
script:
- helm package ./my-chart-directory # Criar arquivo .tgz
artifacts:
paths:
- ./*.tgz # Guardar o chart empacotado como artefato
publish_chart:
stage: package
image: docker.io/alpine/helm:latest
script:
# Configurar o registo Helm no GitLab
- HE=helm-registry.$CI_SERVER_HOST helm registry login $CI_REGISTRY -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD
- helm push my-chart-*.tgz oci://$CI_REGISTRY/$CI_PROJECT_NAMESPACE/$HELM_REGISTRY # Push ao registo OCI
variables:
# Certifique-se de que as variáveis CI_REGISTRY_USER e CI_REGISTRY_PASSWORD estão configuradas no GitLab CI/CD
GIT_STRATEGY: none # Não re-clonar o repositório
# Exemplo de etapa de deploy (opcional)
# deploy_chart:
# stage: deploy
# image: alpine/helm:latest
# script:
# # Configurar dependências (ex., kubectl, provedores cloud)
# # helm upgrade --install my-release oci://$CI_REGISTRY/$CI_PROJECT_NAMESPACE/$HELM_REGISTRY/my-chart --version latest -n my-namespace -f values.yaml
# environment: production # Ou outro ambiente
# when: manual # Ou on_branch, etc.
Para armazenar os charts empacotados (.tgz), pode usar:
- Registro de Pacotes do GitLab (charts Helm OCI): Método recomendado. Permite armazenar charts em formato OCI diretamente no GitLab.
- Pacotes genéricos: Se Helm OCI não for suportado ou por outras razões.
- Armazenamento privado de ficheiros estáticos: Por exemplo, armazenamento compatível com S3 ou GitLab Pages.
Ao usar o Registro de Pacotes do GitLab (charts Helm OCI), para adicioná-lo como repositório Helm:
helm registry login registry.gitlab.com
helm repo add my-gitlab-charts oci://registry.gitlab.com/<o-seu-namespace>/<seu-projeto-de-helm-charts>
Substitua <o-seu-namespace> e <seu-projeto-de-helm-charts> pelos valores correspondentes.