Alıştırma - Dağıtım için Helm grafiği oluşturma
Bu ünitede, GitHub Actions'ı kullanarak Azure Kubernetes Service'e (AKS) dağıtmak için bir Helm grafiği oluşturacaksınız. Helm grafiğini oluşturmak için aşağıdaki görevleri tamamlarsınız:
- Helm yüklemesini denetleyin.
- Grafik oluşturun.
- Grafiği yapılandırın.
- Dağıtım oluşturma.
- Boş bir YAML dosyası oluşturun.
- YAML dosyasına içerik ekleyin.
- Bir servis oluşturun.
- Giriş oluşturun.
- BIR DNS bölgesi adı oluşturun.
Helm yüklemesini denetleyin ve depoyu güncelleştirin
Helm CLI, Azure Cloud Shell'de zaten yüklüdür. Cloud Shell açık değilse Cloud Shell'de oturum açın ve Bash'in Cloud Shell terminali olarak ayarlandığından emin olun.
Görüntülenen Helm sürümünün 3'ten büyük olduğundan emin olmak için komutunu çalıştırın
helm version
.komutunu çalıştırarak
cd mslearn-aks-deployment-pipeline-github-actions
bu modül için çatallanmış deponuza geçin.Önceki ünitelerdeki değişikliklerinizi çekmek için komutunu çalıştırın
git pull origin main
.
Helm grafiği oluşturma
Deponuzun kubernetes dizininde ortak bir Helm şablonu oluşturun.
Cloud Shell'de kubernetes dizinine geçin:
cd kubernetes
kubernetes dizininde contoso-website adlı yeni bir dizin oluşturmak için kullanın
helm create
:helm create contoso-website
ile
cd
yeni dizine geçin.cd contoso-website
Bu dizindeki grafik ve şablon klasörlerini silin.
rm -r charts templates
Yeni bir boş şablonlar klasörü oluşturun.
mkdir templates
Boş grafiğinizde iş yükleri oluşturmaya başlamak için kubernetes'teki mevcut dosyaları yeni şablonlar klasörüne taşıyarak yeni bir YAML dosyaları kümesi oluşturun:
mv ../*.yaml ./templates
Artık yeni bir Helm grafiğiniz var. Ardından grafiği yapılandırın.
Grafiği yapılandırma
Komutunu çalıştırarak
cd ../..
deponuzun köküne geçin.Geçerli dizinde kod düzenleyicisini açmak için komutunu çalıştırın
code .
.Sol menüde kubernetes/contoso-web sitesi klasörünü genişletin ve Chart.yaml dosyasını açın. Chart.yaml , grafiğe ad veren dosyadır ve Helm'in grafik hakkında bilgi arayacağı yerdir.
İlk üç satır ve grafik sürümü dışında dosyanın tüm içeriğini kaldırın ve açıklamayı düzenleyerek dosyanın şu örneğe benzer görünmesini sağlayın:
apiVersion: v2 name: contoso-website description: Chart for the Contoso company website version: 0.1.0
Düzenleyici araç çubuğunun sağ üst köşesini seçip Kaydet'i seçerek veya Ctrl+S tuşlarına basarak dosyayı kaydedin.
Dağıtım oluşturma
Bu dağıtım için şablonlar ekleyin.
Sol menüden kubernetes/templates klasöründe deployment.yaml dosyasını açın.
Ana
metadata
bölümde değeriyle{{ default "staging" .Release.Namespace }}
adlınamespace
yeni bir anahtar ekleyin. Bölümmetadata
şu örnekteki gibi görünmelidir:metadata: name: contoso-website namespace: {{ default "staging" .Release.Namespace }}
Varsayılan olarak, iş akışı bu kaynağı
staging
ad alanına dağıtır, ancak komutunhelm install
birNamespace
seçeneği varsa, iş akışı bunun yerine bu ad alanını kullanır.template
containers
/spec
/bölümünün altında değerini AKS kümenizdeki veyatag
sürümleriylelatest
değiştirin.!IMAGE!
Onlarla daha kolay çalışabilmek için görüntü adının ,
image
vetag
bölümlerini bölmekregistry
iyi bir uygulamadır. ,Values.image.name
veValues.image.tag
değerleriniValues.image.registry
kullanan üç yeni şablon değişkeni ekleyin.- image: {{ .Values.image.registry }}.azurecr.io/{{ .Values.image.name }}:{{ default "latest" .Values.image.tag }}
deployment.yaml dosyanız aşağıdaki örnekteki gibi görünmelidir:
apiVersion: apps/v1 kind: Deployment metadata: name: contoso-website namespace: {{ default "staging" .Release.Namespace }} spec: selector: matchLabels: app: contoso-website template: metadata: labels: app: contoso-website spec: containers: - image: {{ .Values.image.registry }}.azurecr.io/{{ .Values.image.name }}:{{ default "latest" .Values.image.tag }} name: contoso-website resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi ports: - containerPort: 80 name: http
Dosyayı kaydedin.
values.yaml dosyasına içerik ekleme
Daha önce, değişken kapsamı olarak Release
kullanılır{{ .Release.Namespace }}
. Her değişken kapsamın varsayılan değerleri ve değişkenleri farklıdır. values.yaml dosyası başka bir değişken kapsamıdır. Helm, ile {{ .Values }}
başlayan tüm şablon değerlerini almak için values.yaml dosyasını kullanır.
Bu dosya, değişkenleri çağırmak için kullandığınız dosyayla aynı yapıya sahip olmalıdır. Yapıyı görmek için düzenlenen deployment.yaml dosyanıza hızlıca göz atın. deployment.yaml dosyasında , .Values.image.name
ve .Values.image.tag
kullandığınıza .Values.image.registry
dikkat edin.
contoso-website dizininin kökünde values.yaml dosyasını açın.
Dosyanın içeriğini silerek boş bir YAML dosyası elde edin.
Aşağıdaki içeriği boş dosyaya ekleyin ve yer tutucuyu
<ACR-NAME>
Azure Container Registry adınızla değiştirin.image: registry: <ACR-NAME> name: contoso-website tag: latest
Helm komutunun seçeneğini kullanarak
--set
parametre olarak farklı bir değer geçirmezseniz bu değerler varsayılan değerdir.Dosyayı kaydedin.
Bir servis oluşturmak
templates klasöründe service.yaml dosyasını açın.
metadata
Dosyanın bölümünde, deployment.yaml dosyasında kullandığınız değeri kullanan adlınamespace
yeni bir anahtar ekleyin.namespace: {{ default "staging" .Release.Namespace }}
service.yaml dosyanız aşağıdaki örnekteki gibi görünmelidir:
apiVersion: v1 kind: Service metadata: name: contoso-website namespace: {{ default "staging" .Release.Namespace }} spec: ports: - port: 80 protocol: TCP targetPort: http name: http selector: app: contoso-website type: ClusterIP
Dosyayı kaydedin.
Giriş oluşturma
ingress.yaml dosyasını açın.
metadata
Dosyanın bölümünde deployment.yaml dosyasında kullandığınız değeri yeniden ekleyinnamespace
.host
anahtarına gidin. Hazırlama ve üretim dağıtımları için ayrı konaklar oluşturursunuz, böylece kullanıcılar üretim URL'lerini kullanarak ad alanına erişemezstaging
. Ad alanını konak adına ekleyin. Ad çözümlemesi, AKS kümesindeki HTTP uygulama yönlendirme eklentisi tarafından gerçekleştirilir.- host: contoso-{{ default "staging" .Release.Namespace }}.!DNS!
değerini DNS bölgenizin adı için yeni bir şablon değişkeniyle değiştirin
!DNS!
.- host: contoso-{{ default "staging" .Release.Namespace }}.{{ .Values.dns.name }}
Son ingress.yaml dosyanız aşağıdaki örnekteki gibi görünmelidir:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: contoso-website namespace: {{ default "staging" .Release.Namespace }} annotations: kubernetes.io/ingress.class: addon-http-application-routing spec: rules: - host: contoso-{{ default "staging" .Release.Namespace }}.{{ .Values.dns.name }} http: paths: - backend: service: name: contoso-website port: name: http path: / pathType: Prefix
Dosyayı kaydedin.
DNS bölgesi adı değeri ekleme
values.yaml dosyasını açın ve anahtarın
image
arkasına birdns.name
anahtar ekleyin. değerini Container Registry adınızla ve<DNS-NAME>
kurulum betiği çıkışındaki AKS DNS Bölge Adınızla değiştirin<ACR-NAME>
. Dosyanız aşağıdaki örneğe benzer olmalıdır:image: registry: <ACR-NAME> name: contoso-website tag: latest dns: name: <DNS-NAME>
Özgün kurulum betiği çıkışından DNS bölgenizin adı yoksa, aşağıdaki Azure CLI sorgusunu farklı bir Cloud Shell penceresinde çalıştırarak yer tutucuyu
<resource-group-name>
kaynak grubu adınızla değiştirin.az aks show -g <resource-group-name> -n contoso-website -o tsv --query addonProfiles.httpApplicationRouting.config.HTTPApplicationRoutingZoneName
Dosyayı kaydedin.
Değişikliklerinizi gönderme
Düzenleyici araç çubuğunun sağ üst köşesini ve ardından Düzenleyiciyi Kapat'ı seçerek Cloud Shell Düzenleyicisi'ni kapatın.
Tüm değişiklikleri çatalınıza göndermek için Cloud Shell'de sırasıyla aşağıdaki komutları çalıştırın:
git add .
git commit -m "Add helm"
git push -u origin main
İstendiğinde, daha önce oluşturduğunuz PAT'yi parola olarak belirtin.
GitHub Actions'ı kullanarak Helm grafiğinizi ve uygulamanızı AKS'ye dağıtmak için sonraki üniteye geçin.