Helm ile dağıtma

Tamamlandı

Hem hazırlama hem de üretim görüntülerinizi başarıyla oluşturdunuz ve Azure Container Registry örneğinize ilettiniz. Tüm adımları otomatikleştirmenin ve işlem hattının sizin için çalışmasını sağlamanın zamanı geldi.

Şu anda işlem hattını her çalıştırdığınızda dosyaları el ile değiştirmeniz gerekir, böylece otomatik olarak dağıtamazsınız. Bu sorunu çözmek için bir Helm grafiği kullanarak dağıtımlarınızı yönetebilirsiniz. Bu ünitede Helm grafikleri ve şablonları hakkında bilgi ediniyorsunuz.

Helm grafikleri

Helm, APT ve Yum gibi Linux paket yöneticilerine benzer bir açık kaynak paketleme aracıdır. Helm, Kubernetes uygulamalarının yaşam döngüsünü yüklemenize ve yönetmenize yardımcı olabilir.

Helm'i yapılandırma dosyaları ve grafik açıklama dosyasıyla paketlenmiş bir veya daha fazla iş yükü grubu olan Kubernetes grafiklerini yönetmek için kullanırsınız. Grafik halinde paketlenen dosyalar, birlikte Kubernetes kümesine kolayca dağıtılabilir.

Helm kullanmanın avantajlarından biri, dosyaları ayrı ayrı dağıtmak zorunda olmamasıdır. Grafiği dağıtmak için tek bir komut vekleyebilirsiniz. Hatta otomatik bağımlılık çözümüyle birden çok bağımlı grafiği aynı anda dağıtabilirsiniz.

Tipik bir Helm grafik dizininin yapısı aşağıda verilmiştir:

Screenshot that shows an example of a Helm chart tree.

  • Chart.yaml dosyası grafiğin adını, açıklamasını ve sürümünü içerir.
  • Grafik dizini bağımlı grafikler içerir.
  • Templates dizini tüm bildirim dosyalarını içerir.
  • values.yaml dosyası Helm şablonları için varsayılan değerleri içerir.

Helm şablonları

Helm aracının ayırt edici özelliklerinden biri, otomatik dağıtımlar gerçekleştirmek için şablonlar oluşturup yönetme özelliğidir. Şablonlar, bildirim dosyalarının otomatik hale getirilip CI/CD işlem hattına eklenmesini mümkün hale getirir. Şablon dosyası, değişken değerlerinin yerine yer tutucuların bulunduğu bir bildirim dosyasıdır.

Web sitesi çatalınızın kubernetes dizininde deployment.yaml dosyasının aşağıdaki örneğine bakın:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: contoso-website
spec:
  selector:
    matchLabels:
      app: contoso-website
  template:
    metadata:
      labels:
        app: contoso-website
    spec:
      containers:
        - image: !IMAGE!
          name: contoso-website
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 250m
              memory: 256Mi
          ports:
            - containerPort: 80
              name: http

İş akışınız yer tutucunun !IMAGE! yerini Container Registry örneğinizle ve görüntü adıyla değiştirir. El ile bir iş akışında aşağıdaki komutu çalıştırarak yer tutucuyu !IMAGE! değiştirebilir ve ardından sonucu yazdırabilirsiniz. Kodu el ile çalıştırmak için komutunu kubectl apply -f - kullanarak iş yüklerini oluşturabilirsiniz:

$ sed 's+!IMAGE!+'"$ACR_NAME"'/contoso-website+g' kubernetes/deployment.yaml

Ancak, bu el ile çözüm zarif veya verimli değildir. Helm yerel şablon oluşturma ile bunun yerine değişkenini {{.Values.containerImage}} kullanarak değiştirebilirsiniz!IMAGE!.

...
  template:
...
    spec:
      containers:
        - image: {{.Values.containerImage}}
...

Ardından, komutunu çalıştırarak helm install görüntünüzün üzerine gelin ve grafikler klasörünüzü geçirin:

$ helm install contoso-website ./chart-location --set containerImage="$ACR_NAME/contoso-website"

Helm, ortamınıza varsayılan ve gerekli değerleri dahil etmek gibi daha karmaşık mantık için şablon işlevleri de sunar. CI/CD işlem hattınızı daha verimli hale getirmek için bir Helm grafiği oluşturmak için sonraki üniteye geçin.

Bilgilerinizi kontrol edin

1.

Helm nedir?

2.

Helm'i ci/CD işlem hattında özellikle kullanışlı kılan nedir?