Middle
Ako správne ukladať Helm šablóny v GitLab?
sobes.tech AI
Odpoveď od AI
Odporúča sa ukladať Helm šablóny do samostatného Git repozitára na GitLab-e. To umožňuje verzionovanie, použitie CI/CD pipeline na linting a balenie, ako aj správu prístupu.
Štruktúra repozitára môže vyzerať takto:
my-helm-charts/
├── Chart.yaml // Metadata o šablóne
├── values.yaml // Predvolené hodnoty
├── templates/ // Šablóny manifestov Kubernetes
│ ├── deployment.yaml
│ ├── ingress.yaml
│ └── service.yaml
└── charts/ // Závislé šablóny (voliteľné)
└── redis/
└── ...
Pre automatizáciu môžeš použiť GitLab CI/CD. Príklad .gitlab-ci.yml:
stages:
- lint
- package
- deploy # Voliteľné
variables:
HELM_VERSION: "3.x.x" # Aktuálna verzia Helm
HELM_REGISTRY: "my-gitlab-registry" # Názov tvojho registry v GitLab-e
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žite obraz s Helm
script:
- helm lint ./my-chart-directory # Cesta k adresáru s tvojím chartom
package_chart:
stage: package
image: docker.io/alpine/helm:latest
script:
- helm package ./my-chart-directory # Vytvorenie archívu .tgz
artifacts:
paths:
- ./*.tgz # Uloženie zabaleného chartu ako artefaktu
publish_chart:
stage: package
image: docker.io/alpine/helm:latest
script:
# Nastavenie Helm registry v GitLab-e
- 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:
# Uistite sa, že premenné CI_REGISTRY_USER a CI_REGISTRY_PASSWORD sú nastavené
GIT_STRATEGY: none # Neklonovať repozitár znovu
# Príklad deploy fázy (voliteľné)
# deploy_chart:
# stage: deploy
# image: alpine/helm:latest
# script:
# # Nastavenie závislostí (napr. kubectl, cloud provideri)
# # 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 # Alebo iné prostredie
# when: manual # Alebo on_branch atď.
Pre uloženie zabalených chartov (.tgz) môžeš použiť:
- GitLab Package Registry (Helm OCI charts): Odporúčaný spôsob. Umožňuje ukladať chart v OCI formáte priamo v GitLab-e.
- Všeobecné balíky: Ak Helm OCI nie je podporované alebo z iných dôvodov.
- Súkromné statické úložisko: Napríklad S3-kompatibilné úložisko alebo GitLab Pages.
Pri použití Helm OCI registry ho môžeš pridať ako 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ď <your-namespace> a <your-helm-chart-project> zodpovedajúcimi hodnotami.