Middle
Kuidas õigesti salvestada Helm-mallid GitLabis?
sobes.tech AI
Vastus AI-lt
Soovitatav on Helm šabloneid hoida eraldi Git repodes GitLabis. See võimaldab neid versioonida, kasutada CI/CD pipeline'e lintimiseks ja pakendamiseks ning hallata juurdepääsu.
Repositooriumi struktuur võib välja näha selline:
my-helm-charts/
├── Chart.yaml // Chart metaandmed
├── values.yaml // Vaikimisi väärtused
├── templates/ // Kubernetes manifestide mallid
│ ├── deployment.yaml
│ ├── ingress.yaml
│ └── service.yaml
└── charts/ // Sõltuvad chartid (valikuline)
└── redis/
└── ...
Automatiseerimiseks saab kasutada GitLab CI/CD-d. Näide .gitlab-ci.yml:
stages:
- lint
- package
- deploy # Valikuline
variables:
HELM_VERSION: "3.x.x" # Aktuaalne Helm versioon
HELM_REGISTRY: "my-gitlab-registry" # Teie registri nimi
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 pilt
script:
- helm lint ./my-chart-directory # Teie charti kataloogi tee
package_chart:
stage: package
image: docker.io/alpine/helm:latest
script:
- helm package ./my-chart-directory # Pakendi loomine (.tgz)
artifacts:
paths:
- ./*.tgz # Pakendatud charti salvestamine
publish_chart:
stage: package
image: docker.io/alpine/helm:latest
script:
# Helm registri seadistamine GitLabis
- 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 # Pushing OCI registrisse
variables:
# Veenduge, et muutujad CI_REGISTRY_USER ja CI_REGISTRY_PASSWORD on seadistatud
GIT_STRATEGY: none # Reposiitri uuesti kloonimist ei toimu
# Näide deploy etapist (valikuline)
# deploy_chart:
# stage: deploy
# image: alpine/helm:latest
# script:
# # Sõltuvuste seadistamine (nt kubectl, pilveteenuse pakkujad)
# # 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 # Või muu keskkond
# when: manual # Või on_branch jne.
Pakendatud chartide (.tgz) salvestamiseks:
- GitLab Package Registry (Helm OCI charts): Soovitatav viis. Võimaldab salvestada chartid OCI formaadis otse GitLabis.
- Üldised paketid: Kui Helm OCI ei ole toetatud või muudel põhjustel.
- Privaatne staatiline failiserver: Näiteks S3-sarnane salvestus või GitLab Pages.
Helm OCI registrit kasutades saab seda lisada Helm repositooriumina:
helm registry login registry.gitlab.com
helm repo add my-gitlab-charts oci://registry.gitlab.com/<your-namespace>/<your-helm-chart-project>
Asendage <your-namespace> ja <your-helm-chart-project> sobivate väärtustega.