Helm ve Kustomize desteği

Azure Geliştirici CLI'sı, Azure Kubernetes Service'e (AKS) sağlama ve dağıtım sürecini geliştirmek için Helm ve Kustomize desteği sağlar. Helm ve Kustomize, Kubernetes uygulamalarını yapılandırmanıza ve yönetmenize yardımcı olan araçlardır. İlerideki bölümlerde şablonlarınızda bu araçlar için desteği etkinleştirmeyi ve özelleştirmeyi öğreneceksiniz azd .

Helm desteğini etkinleştirme

Helm desteğini etkinleştirmek için Helm CLI'nın yüklü olduğundan emin olun. azd config komutunu çalıştırarak azd helm özellik bayrağını etkinleştirin.

azd config set alpha.aks.helm on

Helm yapılandırması ve dağıtımı

azd Helm desteği, her azd hizmet için yüklenecek Helm grafiklerinin listesini tanımlamanızı sağlar. helm ve k8s yapılandırma bölümlerini azure.yaml dosyasında kullanarak, yüklenecek helm depolarının veya yayınlarının bir listesini tanımlayın.

name: todo-nodejs-mongo-aks
metadata:
  template: todo-nodejs-mongo-aks@0.0.1-beta
services:
  argocd:
    host: aks
    k8s:
      namespace: argo
      service:
        name: argocd-server
      helm:
        repositories:
          - name: argo
            url: https://argoproj.github.io/argo-helm
        releases:
          - name: argocd
            chart: argo/argo-cd
            version: 5.51.4
  jupyterhub:
    host: aks
    k8s:
      namespace: jupyterhub
      service:
        name: proxy-public
      helm:
        repositories:
          - name: jupyterhub
            url: https://hub.jupyter.org/helm-chart/
        releases:
          - name: jupyterhub
            chart: jupyterhub/jupyterhub
            version: 3.1.0

azd deploy komutu, helm bölümünü kullanarak aşağıdaki görevleri işler:

  • Referans verilen Helm depolarını ekler ve/veya günceller
  • Atıfta bulunulan Helm şemalarını yükler.
  • Helm sürümünün dağıtılan duruma geçmesini bekler
  • Dağıtılan kaynaklar içinde tanımlanan ilgili hizmetleri ve girişlerini listeler

Helm dağıtım çıkışının ekran görüntüsü.

Kustomize desteğini etkinleştirme

Kustomize desteğini etkinleştirmek için Kustomize CLI'nın yüklü olduğundan emin olun. azd Komutunu kullanarak Kustomize özellik bayrağını azd config etkinleştirin:

azd config set alpha.aks.kustomize on

Kustomize yapılandırması ve dağıtımı

Kustomize özelliği Kubernetes dağıtımlarının bir parçası olarak Kustomize kullanmanıza olanak tanır ve aşağıdaki özellikleri sağlar:

  • base ve variant yapılandırmalarını destekler
  • edits dağıtımlardan önce çalıştırılabilir
  • configMapGenerator ile azd ortamlar

Kustomize özelliklerini aşağıdaki azure.yaml bölümleri kullanarak yapılandırın:

  • dir: Hizmetten, bir kustomization.yaml dosyası içeren Kustomize dizininize göreli yol.
    • Ortam değişkeni değişimini destekler.
  • edits: Dağıtımdan önce uygulanan düzenleme ifadeleri dizisi
    • Ortam değişkeni değişimini destekler
  • env: Dağıtımdan önce oluşturulan anahtar/değer çiftlerinin haritası
    • Eşleme değerleri ortam değişkeni değişimini destekler

Kullanım örnekleri

azd aşağıdaki Kustomize kullanım örneklerini destekler.

K8s manifestleri dağıtın

Aşağıdaki yapılandırma, bir kubectl apply -k <dir> komutu gerçekleştirir; bu komut, kustomization.yaml içeren bildirimler klasörünüze işaret eder.

# azure.yaml

name: todo-nodejs-mongo-aks
metadata:
  template: todo-nodejs-mongo-aks@0.0.1-beta
services:
  api:
    project: ./src/api
    language: js
    host: aks
    k8s:
      kustomize:
        dir: ./kustomize/base

Farklı varyantlar ile dağıtım için üst üste bindirmeleri kullanma

Bu kullanım örneği genellikle , dev ve testgibi prodfarklı aşamalara veya ortamlara dağıtmak için özel yapılandırmalara sahip olmak için kullanılır. Aşağıdaki örnekte kullanıcı, varsayılan katman kuralınız olarak azd ortamlarını otomatik olarak kullanmak için kustomize dizinindeki ortam değişkenini belirtebilir ${AZURE_ENV_NAME} :

# azure.yaml

name: todo-nodejs-mongo-aks
metadata:
  template: todo-nodejs-mongo-aks@0.0.1-beta
services:
  api:
    project: ./src/api
    language: js
    host: aks
    k8s:
      kustomize:
        dir: ./kustomize/overlays/${AZURE_ENV_NAME}

Dağıtımdan önce kustomization.yaml'yi değiştirin

Bir kustomization.yaml öğesini değiştirmenin yaygın bir kullanım örneği, dağıtımınızın bir parçası olarak kullanılan kapsayıcı görüntü adlarını/sürümlerini değiştirmektir.

Aşağıdaki örnek bir edits yapılandırma belirtir ve geçerli kustomize edit ... bir komut ayarlar. azdkomutunda başvuruda bulunılan ortam değişkenlerini otomatik olarak ilişkilendirme.edit

# azure.yaml

name: todo-nodejs-mongo-aks
metadata:
  template: todo-nodejs-mongo-aks@0.0.1-beta
services:
  api:
    project: ./src/api
    language: js
    host: aks
    k8s:
      kustomize:
        dir: ./kustomize/overlays/${AZURE_ENV_NAME}
        edits:
          - set image todo-api=${SERVICE_API_IMAGE_NAME}

Yapılandırma eşlemeleri içinde ortam değişkenlerini kullanma azd

Yapılandırma eşlemeleri veya gizli dizileri, K8s kümelerinizi yapılandırmada kritik öneme sahiptir. Kustomize herhangi bir doğrudan ortam değişkeni değişimini desteklemediğinden kustomize configMapGenerator dosyasını bir .env dosyayla kullanabiliriz.

Yapılandırma kustomize bölümü, bir veya birden çok anahtar/değer çiftinin tanımlanabildiği bir env bölümü destekler. Bu yapılandırma, kustomization dizininizde configMapGenerator tarafından kullanılabilecek geçici bir .env dosyası otomatik olarak oluşturur.

Aşağıdaki yapılandırma, belirtilen anahtar/değer çiftleriyle bir .env oluşturur.

# azure.yaml

name: todo-nodejs-mongo-aks
metadata:
  template: todo-nodejs-mongo-aks@0.0.1-beta
services:
  api:
    project: ./src/api
    language: js
    host: aks
    k8s:
      kustomize:
        dir: ./kustomize/overlays/${AZURE_ENV_NAME}
        edits:
          - set image todo-api=${SERVICE_API_IMAGE_NAME}
        env:
          AZURE_AKS_IDENTITY_CLIENT_ID: ${AZURE_AKS_IDENTITY_CLIENT_ID}
          AZURE_KEY_VAULT_ENDPOINT: ${AZURE_KEY_VAULT_ENDPOINT}
          APPLICATIONINSIGHTS_CONNECTION_STRING: ${APPLICATIONINSIGHTS_CONNECTION_STRING}

Bu configMapGenerator, belirtilen ada sahip bir K8s config map oluşturur ve .env dosyası içerisindeki tüm anahtar/değer çiftlerini içerir.

# kustomization.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
  - deployment.yaml
  - service.yaml
  - ingress.yaml

configMapGenerator:
  - name: todo-web-config
    envs:
      - .env