Sobes.tech
Middle

Jak správně ukládat Helm šablony v GitLab?

sobes.tech AI

Odpověď od AI

Doporučuje se ukládat Helm šablony do samostatného Git repozitáře na GitLab. To umožňuje verzování, použití CI/CD pipeline pro linting a balení, stejně jako správu přístupu.

Struktura repozitáře může vypadat takto:

my-helm-charts/
├── Chart.yaml          // Metadata chartu
├── values.yaml         // Výchozí hodnoty
├── templates/          // Šablony manifestů Kubernetes
│   ├── deployment.yaml
│   ├── ingress.yaml
│   └── service.yaml
└── charts/             // Závislé chart (volitelné)
    └── redis/
        └── ...

Pro automatizaci lze použít GitLab CI/CD. Příklad .gitlab-ci.yml:

stages:
  - lint
  - package
  - deploy # Volitelné

variables:
  HELM_VERSION: "3.x.x" # Aktuální verze Helm
  HELM_REGISTRY: "my-gitlab-registry" # Název vašeho registru v 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 # Použití Helm image
  script:
    - helm lint ./my-chart-directory # Cesta k adresáři s vaším chartem

package_chart:
  stage: package
  image: docker.io/alpine/helm:latest
  script:
    - helm package ./my-chart-directory # Vytvoření archivu .tgz
  artifacts:
    paths:
      - ./*.tgz # Uložení zabaleného chartu jako artefakt

publish_chart:
  stage: package
  image: docker.io/alpine/helm:latest
  script:
    # Nastavení Helm registru v 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 do OCI registry
  variables:
    # Ujistěte se, že proměnné CI_REGISTRY_USER a CI_REGISTRY_PASSWORD jsou nastaveny
    GIT_STRATEGY: none # Neklonovat repozitář znovu

# Příklad deploy fáze (volitelné)
# deploy_chart:
#   stage: deploy
#   image: alpine/helm:latest
#   script:
#     # Nastavení závislostí (např. kubectl, cloudové providery)
#     # 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 # Nebo jiné prostředí
#   when: manual # Nebo on_branch atd.

Pro ukládání zabalených chartů (.tgz) lze použít:

  • GitLab Package Registry (Helm OCI charts): Doporučený způsob. Umožňuje ukládat chart v OCI formátu přímo v GitLab.
  • Obecné balíčky: Pokud Helm OCI není podporováno nebo z jiných důvodů.
  • Privátní statické úložiště: Například S3-kompatibilní úložiště nebo GitLab Pages.

Při použití Helm OCI registry jej lze přidat jako Helm repository:

helm registry login registry.gitlab.com
helm repo add my-gitlab-charts oci://registry.gitlab.com/<your-namespace>/<your-helm-chart-project>

Nahraďte <your-namespace> a <your-helm-chart-project> odpovídajícími hodnotami.