Sobes.tech
Middle

Helm шаблондорун GitLabта туура сактоо кандай?

sobes.tech AI

AIден жооп

GitLabда Helm шаблондорун отделдүү Git репозиторийде сактоо сунушталат. Бул версиялоого, CI/CD пайплайндарын линтинг жана пактоо үчүн колдонууга, ошондой эле жеткиликтүүлүктү башкарууга мүмкүндүк берет.

Репозиторий структурасы мындай көрүнүшү мүмкүн:

my-helm-charts/
├── Chart.yaml          // Чарттын мета маалыматтары
├── values.yaml         // Бөлөк маанилер
├── templates/          // Kubernetes манифест шаблондору
│   ├── deployment.yaml
│   ├── ingress.yaml
│   └── service.yaml
└── charts/             // Тармактуу чарты (опционал)
    └── redis/
        └── ...

Автоматташтыруу үчүн GitLab CI/CD колдонсо болот. Мисал .gitlab-ci.yml:

stages:
  - lint
  - package
  - deploy # Опционал

variables:
  HELM_VERSION: "3.x.x" # Актуалдуу Helm версиясы
  HELM_REGISTRY: "my-gitlab-registry" # Сиздин реестрдин аты

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 образын колдонуңуз
  script:
    - helm lint ./my-chart-directory # Чарттын директорий жолу

package_chart:
  stage: package
  image: docker.io/alpine/helm:latest
  script:
    - helm package ./my-chart-directory # Архив түзүү (.tgz)
  artifacts:
    paths:
      - ./*.tgz # Опакталган чарты сактоо

publish_chart:
  stage: package
  image: docker.io/alpine/helm:latest
  script:
    # Helm реестрин конфигурациялоо
    - 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 реестрге жүктөө
  variables:
    # CI_REGISTRY_USER жана CI_REGISTRY_PASSWORD өзгөрмөлөрү орнотулганына ишениңиз
    GIT_STRATEGY: none # Репозиторий кайра клондоону болтурбоо

# Орнотуу этапы (опционал)
# deploy_chart:
#   stage: deploy
#   image: alpine/helm:latest
#   script:
#     # Талабдар (мисалы, kubectl, булут провайдерлер)
#     # 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 # Башка чөйрө
#   when: manual # же on_branch жана башка

Опакталган чарты (.tgz) сактоо үчүн:

  • GitLab Package Registry (Helm OCI charts): сунушталган ыкма. Бул чартарды OCI форматында сактоого мүмкүндүк берет.
  • Жалпы пакеттер: Эгер Helm OCI колдоого алынбаса же башка себептерден.
  • Жеке статикалык файл сактагыч: мисалы, S3-үйлесимдүү сактагыч же GitLab Pages.

Helm OCI реестрин колдонуп жатканда, аны Helm репозиторий катары кошуу:

helm registry login registry.gitlab.com
helm repo add my-gitlab-charts oci://registry.gitlab.com/<your-namespace>/<your-helm-chart-project>

<your-namespace> жана <your-helm-chart-project> маанилерин алмаштырыңыз.