Middle
Kaip teisingai saugoti Helm šablonus GitLab?
sobes.tech AI
Atsakymas iš AI
Rekomenduojama Helm šablonus saugoti atskirame Git repozitorijoje GitLab'e. Tai leidžia juos valdyti versijomis, naudoti CI/CD pipeline lintingui ir pakavimui, taip pat valdyti prieigą.
Repo struktūra gali atrodyti taip:
my-helm-charts/
├── Chart.yaml // Chart metaduomenys
├── values.yaml // Numatyti reikšmės
├── templates/ // Kubernetes manifestų šablonai
│ ├── deployment.yaml
│ ├── ingress.yaml
│ └── service.yaml
└── charts/ // Priklausomi šablonai (neprivaloma)
└── redis/
└── ...
Automatizacijai galima naudoti GitLab CI/CD. Pavyzdys .gitlab-ci.yml:
stages:
- lint
- package
- deploy # Neprivaloma
variables:
HELM_VERSION: "3.x.x" # Aktualus Helm versija
HELM_REGISTRY: "my-gitlab-registry" # Jūsų registras
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 vaizdas
script:
- helm lint ./my-chart-directory # Jūsų chart katalogo kelias
package_chart:
stage: package
image: docker.io/alpine/helm:latest
script:
- helm package ./my-chart-directory # Sukurti .tgz archyvą
artifacts:
paths:
- ./*.tgz # Išsaugoti paketą
publish_chart:
stage: package
image: docker.io/alpine/helm:latest
script:
# Helm registrą nustatyti 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 # Pusht į OCI
variables:
# Užtikrinkite, kad CI_REGISTRY_USER ir CI_REGISTRY_PASSWORD yra nustatyti
GIT_STRATEGY: none # Niekada nekopijuoti iš naujo
# Pavyzdinis deploy etapas (neprivaloma)
# deploy_chart:
# stage: deploy
# image: alpine/helm:latest
# script:
# # Priklausomybių nustatymas (pvz., kubectl, debesų teikėjai)
# # 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 # Arba kita aplinka
# when: manual # Arba on_branch ir t.t.
Paketo šablonų (.tgz) saugojimui:
- GitLab Package Registry (Helm OCI charts): Rekomenduojamas būdas. Leidžia saugoti šablonus OCI formatu tiesiog GitLab'e.
- Bendri paketai: Jei Helm OCI nepalaikomas arba dėl kitų priežasčių.
- Privatus statinis failų saugykla: Pvz., S3 suderinama saugykla arba GitLab Pages.
Naudojant Helm OCI registrą, jį galima pridėti kaip Helm saugyklą:
helm registry login registry.gitlab.com
helm repo add my-gitlab-charts oci://registry.gitlab.com/<your-namespace>/<your-helm-chart-project>
Pakeiskite <your-namespace> ir <your-helm-chart-project> atitinkamomis reikšmėmis.