Alıştırma - Dağıtım için Helm grafiği oluşturma

Tamamlandı

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.

  1. 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ınhelm version.

  2. komutunu çalıştırarak cd mslearn-aks-deployment-pipeline-github-actionsbu modül için çatallanmış deponuza geçin.

  3. Ö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.

  1. Cloud Shell'de kubernetes dizinine geçin:

    cd kubernetes
    
  2. kubernetes dizininde contoso-website adlı yeni bir dizin oluşturmak için kullanınhelm create:

    helm create contoso-website
    
  3. ile cdyeni dizine geçin.

    cd contoso-website
    
  4. Bu dizindeki grafik ve şablon klasörlerini silin.

    rm -r charts templates
    
  5. Yeni bir boş şablonlar klasörü oluşturun.

    mkdir templates
    
  6. 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

  1. Komutunu çalıştırarak cd ../.. deponuzun köküne geçin.

  2. Geçerli dizinde kod düzenleyicisini açmak için komutunu çalıştırın code . .

  3. 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.

  4. İ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
    
  5. 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.

  1. Sol menüden kubernetes/templates klasöründe deployment.yaml dosyasını açın.

  2. Ana metadata bölümde değeriyle {{ default "staging" .Release.Namespace }}adlı namespace yeni bir anahtar ekleyin. Bölüm metadata ş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 komutun helm install bir Namespace seçeneği varsa, iş akışı bunun yerine bu ad alanını kullanır.

  3. templatecontainers/spec/bölümünün altında değerini AKS kümenizdeki veya tag sürümleriyle latest değiştirin.!IMAGE!

    Onlarla daha kolay çalışabilmek için görüntü adının , imageve tag bölümlerini bölmek registryiyi bir uygulamadır. , Values.image.nameve Values.image.tagdeğerlerini Values.image.registrykullanan üç 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
    
  4. 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.nameve .Values.image.tag kullandığınıza .Values.image.registrydikkat edin.

  1. contoso-website dizininin kökünde values.yaml dosyasını açın.

  2. Dosyanın içeriğini silerek boş bir YAML dosyası elde edin.

  3. 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.

  4. Dosyayı kaydedin.

Bir servis oluşturmak

  1. templates klasöründe service.yaml dosyasını açın.

  2. 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
    
  3. Dosyayı kaydedin.

Giriş oluşturma

  1. ingress.yaml dosyasını açın.

  2. metadata Dosyanın bölümünde deployment.yaml dosyasında kullandığınız değeri yeniden ekleyinnamespace.

  3. 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şemez staging . 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!
    
  4. 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
    
  5. Dosyayı kaydedin.

DNS bölgesi adı değeri ekleme

  1. values.yaml dosyasını açın ve anahtarın image arkasına bir dns.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
    
  2. 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.