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.