Middle
Hoe bewaar je Helm-sjablonen correct in GitLab?
sobes.tech AI
Antwoord van AI
Het wordt aanbevolen om Helm-sjablonen op te slaan in een aparte Git-repository in GitLab. Dit maakt versiebeheer mogelijk, het toepassen van CI/CD-pijplijnen voor linting en packaging, en het beheren van toegang.
De structuur van de repository kan er als volgt uitzien:
my-helm-charts/
├── Chart.yaml // Meta-informatie over de chart
├── values.yaml // Standaardwaarden
├── templates/ // Kubernetes manifest sjablonen
│ ├── deployment.yaml
│ ├── ingress.yaml
│ └── service.yaml
└── charts/ // Afhankelijke charts (optioneel)
└── redis/
└── ...
Voor automatisering kan GitLab CI/CD worden gebruikt. Voorbeeld .gitlab-ci.yml:
stages:
- lint
- package
- deploy # Optioneel
variables:
HELM_VERSION: "3.x.x" # Geef de actuele Helm-versie op
HELM_REGISTRY: "my-gitlab-registry" # Naam van je registry in 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 # Gebruik een image met Helm
script:
- helm lint ./my-chart-directory # Pad naar je chart directory
package_chart:
stage: package
image: docker.io/alpine/helm:latest
script:
- helm package ./my-chart-directory # Maak een .tgz-archief
artifacts:
paths:
- ./*.tgz # Bewaar het verpakte chart als artifact
publish_chart:
stage: package
image: docker.io/alpine/helm:latest
script:
# Configureer de Helm registry in 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 naar OCI registry
variables:
# Zorg dat de variabelen CI_REGISTRY_USER en CI_REGISTRY_PASSWORD zijn ingesteld in GitLab CI/CD
GIT_STRATEGY: none # Kloneer de repository niet opnieuw
# Voorbeeld van een deploy-stap (optioneel)
# deploy_chart:
# stage: deploy
# image: alpine/helm:latest
# script:
# # Configureer afhankelijkheden (bijv. kubectl, cloud providers)
# # 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 # Of andere omgeving
# when: manual # Of on_branch, etc.
Voor het opslaan van verpakte charts (.tgz) kan worden gebruikt:
- GitLab Package Registry (Helm OCI charts): Aanbevolen methode. Hiermee kunnen charts direct in OCI-formaat in GitLab worden opgeslagen.
- Generieke pakketten: Als Helm OCI niet wordt ondersteund of om andere redenen.
- Privé statisch bestand opslag: Bijvoorbeeld S3-compatibele opslag of GitLab Pages.
Bij gebruik van de GitLab Package Registry (Helm OCI), voeg deze toe als Helm-repository:
helm registry login registry.gitlab.com
helm repo add my-gitlab-charts oci://registry.gitlab.com/<jouw-namespace>/<jouw-helm-project>
Vervang <jouw-namespace> en <jouw-helm-project> door de juiste waarden.