Sobes.tech
Middle

Helm şablonlarını GitLab-da düzgün saxlamaq necədir?

sobes.tech Süni İntellekt

AI-dan cavab

GitLab-da Helm şablonlarını ayrıca bir Git deposunda saxlamaq tövsiyə olunur. Bu, onları versiyalaşdırmağa, CI/CD boru xətlərini linting və paketləmə üçün tətbiq etməyə və giriş hüquqlarını idarə etməyə imkan verir.

Depo strukturu aşağıdakı kimi ola bilər:

my-helm-charts/
├── Chart.yaml          // Chart haqqında meta məlumat
├── values.yaml         // Varsayılan dəyərlər
├── templates/          // Kubernetes manifest şablonları
│   ├── deployment.yaml
│   ├── ingress.yaml
│   └── service.yaml
└── charts/             // Asılı chartlər (istəyə bağlı)
    └── redis/
        └── ...

Avtomatlaşdırma üçün GitLab CI/CD istifadə oluna bilər. Nümunə .gitlab-ci.yml:

stages:
  - lint
  - package
  - deploy # İstəyə bağlı

variables:
  HELM_VERSION: "3.x.x" # Helm-in cari versiyasını göstərin
  HELM_REGISTRY: "my-gitlab-registry" # GitLab-da qeydiyyat adınız

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 ilə imaj istifadə edin
  script:
    - helm lint ./my-chart-directory # Chart-in kataloq yolu

package_chart:
  stage: package
  image: docker.io/alpine/helm:latest
  script:
    - helm package ./my-chart-directory # .tgz faylını yaradın
  artifacts:
    paths:
      - ./*.tgz # Paketlənmiş chart-i artefakt kimi saxlayın

publish_chart:
  stage: package
  image: docker.io/alpine/helm:latest
  script:
    # Helm qeydiyyatını GitLab-da konfiqurasiya edin
    - 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-ə göndərin
  variables:
    # CI_REGISTRY_USER və CI_REGISTRY_PASSWORD dəyişənlərinin GitLab CI/CD-də qurulduğundan əmin olun
    GIT_STRATEGY: none # Yenidən klonlamayın

# İstəyə bağlı deploy mərhələsi nümunəsi
# deploy_chart:
#   stage: deploy
#   image: alpine/helm:latest
#   script:
#     # Asılılıqları konfiqurasiya edin (məsələn, kubectl, bulud provayderləri)
#     # 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 # Yaxud başqa mühit
#   when: manual # Yaxud on_branch və s.

Paketlənmiş chartləri (.tgz) saxlamaq üçün:

  • GitLab Paket Registry (Helm OCI chartləri): Tövsiyə olunan üsul. Chartləri OCI formatında birbaşa GitLab-da saxlamağa imkan verir.
  • Ümumi paketlər: Helm OCI dəstəklənmirsə və ya digər səbəblərdən.
  • Özəl statik fayl saxlama: Məsələn, S3-uyumlu saxlama və ya GitLab Pages.

Helm deposu kimi əlavə etmək üçün GitLab Paket Registry (Helm OCI) istifadə edin:

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

<sizin-namespace><sizin-helm-proyekt> uyğun dəyərlərlə əvəz edin.