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 রেজিস্ট্রার সেটআপ করুন GitLab-এ
    - 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> যথাযথ মানে প্রতিস্থাপন করুন।