Bagikan melalui


Dukungan Helm dan Kustomisasi

Azure Developer CLI menyediakan dukungan untuk Helm dan Kustomize untuk meningkatkan proses provisi dan penyebaran ke Azure Kubernetes Service (AKS). Helm dan Kustomize adalah alat yang membantu Anda mengonfigurasi dan mengelola aplikasi Kubernetes. Di bagian depan, Anda akan mempelajari cara mengaktifkan dan menyesuaikan dukungan untuk alat-alat ini di templat Anda azd .

Mengaktifkan dukungan Helm

Untuk mengaktifkan dukungan Helm, pastikan Anda telah menginstal Helm CLI. Aktifkan azd bendera fitur helm dengan menjalankan azd config perintah:

azd config set alpha.aks.helm on

Konfigurasi dan penyebaran Helm

azd Dukungan Helm memungkinkan Anda menentukan daftar bagan Helm untuk diinstal untuk setiap azd layanan. Gunakan bagian helm konfigurasi dan k8s dalam azure.yaml file untuk menentukan daftar repositori helm atau rilis untuk diinstal.

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

Perintah azd deploy menangani tugas berikut menggunakan bagian helm :

  • Menambahkan repositori Helm yang direferensikan dan/atau memperbaruinya
  • Menginstal bagan Helm yang dirujuk
  • Menunggu rilis Helm beralih ke status yang disebarkan
  • Mencantumkan layanan dan ingress yang relevan yang ditentukan dalam sumber daya yang disebarkan

Cuplikan layar output penyebaran Helm.

Aktifkan dukungan Kustomisasi

Untuk mengaktifkan dukungan Kustomisasi, pastikan Anda telah menginstal Kustomize CLI. Aktifkan azd bendera fitur Kustomisasi menggunakan azd config perintah :

azd config set alpha.aks.kustomize on

Kustomisasi konfigurasi dan penyebaran

Fitur Kustomisasi memungkinkan Anda menggunakan Kustomize sebagai bagian dari penyebaran Kubernetes dan menyediakan fitur-fitur berikut:

  • base Dukungan dan variant konfigurasi
  • edits yang dapat dijalankan sebelum penyebaran
  • configMapGenerator dengan azd lingkungan

Konfigurasikan fitur Kustomisasi menggunakan bagian berikut azure.yaml :

  • dir: Jalur relatif dari layanan ke direktori Kustomisasi Anda yang berisi kustomization.yaml file.
    • Mendukung substitusi variabel lingkungan.
  • edits: Array ekspresi edit yang diterapkan sebelum penyebaran
    • Mendukung substitusi variabel lingkungan
  • env: Peta pasangan kunci/nilai yang dihasilkan sebelum penyebaran
    • Nilai peta mendukung substitusi variabel lingkungan

Kasus penggunaan

Kasus penggunaan Kustomisasi berikut didukung oleh azd.

Menyebarkan manifes k8s

Konfigurasi berikut melakukan kubectl apply -k <dir> perintah yang menunjuk ke folder manifes Anda yang berisi kustomization.yaml:

# 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

Gunakan overlay untuk disebarkan dengan varian yang berbeda

Kasus penggunaan ini biasanya digunakan untuk memiliki konfigurasi kustom untuk disebarkan ke berbagai tahap atau lingkungan, seperti dev, test dan prod. Dalam contoh berikut, pengguna dapat menentukan ${AZURE_ENV_NAME} variabel lingkungan dalam direktori kustomisasi untuk secara otomatis memanfaatkan lingkungan azd sebagai konvensi overlay default Anda:

# 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}

Ubah kustomization.yaml sebelum penyebaran

Kasus penggunaan umum untuk memodifikasi kustomization.yaml adalah memodifikasi nama/versi gambar kontainer yang digunakan sebagai bagian dari penyebaran Anda.

Contoh berikut menentukan edits konfigurasi dan menetapkan perintah yang valid kustomize edit ... . azd secara otomatis menginterpolasi variabel lingkungan apa pun yang dirujuk dalam edit perintah.

# 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}

Menggunakan azd variabel lingkungan dalam peta konfigurasi

Peta konfigurasi atau rahasia sangat penting dalam mengonfigurasi kluster k8s Anda. Karena kustomisasi tidak mendukung substitusi variabel lingkungan langsung, kami dapat memanfaatkan kustomisasi configMapGenerator dengan .env file.

Bagian kustomize konfigurasi mendukung env bagian di mana satu atau banyak pasangan kunci/nilai dapat ditentukan. Konfigurasi ini secara otomatis menghasilkan file sementara .env dalam direktori kustomisasi Anda yang dapat digunakan oleh configMapGenerator.

Konfigurasi berikut akan membuat .env dengan pasangan kunci/nilai yang ditentukan.

# 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}

configMapGenerator menghasilkan peta konfigurasi k8s dengan nama yang ditentukan dan berisi semua pasangan kunci/nilai yang dirujuk dalam .env file.

# kustomization.yaml

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

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

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