Sobes.tech
Middle

Helm shablonlarini GitLabda to'g'ri saqlash qanday?

sobes.tech AI

AIdan javob

GitLab'da Helm shablonlarini alohida Git repozitoriyada saqlash tavsiya etiladi. Bu, ularni versiyalash, CI/CD pipeline'larini linting va paketlash uchun qo'llash, shuningdek, kirishni boshqarish imkonini beradi.

Repository tuzilishi quyidagicha bo'lishi mumkin:

my-helm-charts/
├── Chart.yaml          // Chart haqida meta ma'lumot
├── values.yaml         // Standart qiymatlar
├── templates/          // Kubernetes manifest shablonlari
│   ├── deployment.yaml
│   ├── ingress.yaml
│   └── service.yaml
└── charts/             // Bog'liq chartlar (ixtiyoriy)
    └── redis/
        └── ...

Avtomatlashtirish uchun GitLab CI/CD dan foydalanish mumkin. Misol .gitlab-ci.yml:

stages:
  - lint
  - package
  - deploy # Ixtiyoriy

variables:
  HELM_VERSION: "3.x.x" # Helm ning hozirgi versiyasini ko'rsating
  HELM_REGISTRY: "my-gitlab-registry" # GitLab'dagi registringiz nomi

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 bilan image ishlating
  script:
    - helm lint ./my-chart-directory # Chart katalogiga yo'l

package_chart:
  stage: package
  image: docker.io/alpine/helm:latest
  script:
    - helm package ./my-chart-directory # .tgz faylini yaratish
  artifacts:
    paths:
      - ./*.tgz # Paketlangan chartni artefakt sifatida saqlash

publish_chart:
  stage: package
  image: docker.io/alpine/helm:latest
  script:
    # Helm registry'ni sozlash
    - 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 # OCI registry'ga push qilish
  variables:
    # CI_REGISTRY_USER va CI_REGISTRY_PASSWORD o'zgaruvchilarini GitLab CI/CD da sozlang
    GIT_STRATEGY: none # Repozitoriyani qayta klonlamang

# Ixtiyoriy deploy bosqichi misoli
# deploy_chart:
#   stage: deploy
#   image: alpine/helm:latest
#   script:
#     # bog'liqliklarni sozlash (masalan, kubectl, bulut provayderlari)
#     # 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 # Yoki boshqa muhit
#   when: manual # Yoki on_branch va boshqalar

Paketlangan chartlarni (.tgz) saqlash uchun:

  • GitLab Paket Registry (Helm OCI chartlar): Tavsiya etilgan usul. Chartlarni OCI formatida GitLab'da saqlash imkonini beradi.
  • Umumiy paketlar: Helm OCI qo'llab-quvvatlanmasa yoki boshqa sabablarga ko'ra.
  • Maxfiy statik fayl saqlash joyi: Masalan, S3 bilan mos keladigan saqlash yoki GitLab Pages.

Helm repository sifatida qo'shish uchun GitLab Paket Registry (Helm OCI) dan foydalaning:

helm registry login registry.gitlab.com
helm repo add my-gitlab-charts oci://registry.gitlab.com/<sizning-namespace>/<sizning-helm-loyiha>

<sizning-namespace> va <sizning-helm-loyiha> mos qiymatlar bilan almashtiring.