Helm ile dağıtma
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:
- 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.