Sobes.tech
Middle

Hogyan tároljuk helyesen a Helm sablonokat a GitLab-ben?

sobes.tech MI

Válasz az MI-től

Ajánlott Helm-sablonokat külön Git-repozitóriumban tárolni a GitLabban. Ez lehetővé teszi azok verziózását, CI/CD pipeline-ok alkalmazását linteléshez és csomagoláshoz, valamint a hozzáférés kezelését.

A repozitórium struktúrája így nézhet ki:

my-helm-charts/
├── Chart.yaml          // A chart metaadatai
├── values.yaml         // Alapértelmezett értékek
├── templates/          // Kubernetes manifest sablonok
│   ├── deployment.yaml
│   ├── ingress.yaml
│   └── service.yaml
└── charts/             // Függő chartok (opcionális)
    └── redis/
        └── ...

Automatizáláshoz használhatod a GitLab CI/CD-t. Példa .gitlab-ci.yml:

stages:
  - lint
  - package
  - deploy # Opcionális

variables:
  HELM_VERSION: "3.x.x" # A Helm aktuális verziója
  HELM_REGISTRY: "my-gitlab-registry" # A GitLab registry neve

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 # Helm képfájl használata
  script:
    - helm lint ./my-chart-directory # A chart könyvtárának útvonala

package_chart:
  stage: package
  image: docker.io/alpine/helm:latest
  script:
    - helm package ./my-chart-directory # .tgz archívum készítése
  artifacts:
    paths:
      - ./*.tgz # A csomagolt chart mentése artifactként

publish_chart:
  stage: package
  image: docker.io/alpine/helm:latest
  script:
    # Helm registry beállítása GitLabban
    - 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 az OCI registry-be
  variables:
    # Győződj meg róla, hogy a CI_REGISTRY_USER és CI_REGISTRY_PASSWORD változók be vannak állítva
    GIT_STRATEGY: none # A repository klónozásának elkerülése

# Opcionális deploy szakasz
# deploy_chart:
#   stage: deploy
#   image: alpine/helm:latest
#   script:
#     # Függőségek beállítása (pl. kubectl, felhő szolgáltatók)
#     # 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 # Vagy más környezet
#   when: manual # Vagy on_branch stb.

A csomagolt chartok (.tgz) tárolására használhatod:

  • GitLab Package Registry (Helm OCI charts): Ajánlott módszer. Lehetővé teszi a chartok tárolását OCI formátumban közvetlenül a GitLabban.
  • Általános csomagok: Ha Helm OCI nem támogatott vagy más okok miatt.
  • Privát statikus fájltároló: Például S3-kompatibilis tároló vagy GitLab Pages.

Helm OCI registry használatakor a hozzáadásához Helm repository-ként:

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

Cseréld ki <your-namespace> és <your-helm-chart-project> a megfelelő értékekre.