Podpora Helmu a Kustomize

Azure Developer CLI poskytuje podporu pro Helm a Kustomize, aby se zlepšil proces zřizování a nasazení ve službě Azure Kubernetes Service (AKS). Helm a Kustomize jsou nástroje, které vám pomůžou nakonfigurovat a spravovat aplikace Kubernetes. V dalších částech se dozvíte, jak povolit a přizpůsobit podporu těchto nástrojů v azd šablonách.

Povolení podpory Helmu

Pokud chcete povolit podporu Helmu, ujistěte se, že máte nainstalované rozhraní příkazového řádku Helm. azd Spuštěním azd config příkazu povolte příznak funkce Helm:

azd config set alpha.aks.helm on

Konfigurace a nasazení Helmu

azd Podpora Helm umožňuje definovat seznam grafů Helm, které se mají nainstalovat pro každou azd službu. V konfiguračních oddílech helm a k8s souboru azure.yaml definujte seznam helm repozitářů nebo vydání, která se mají nainstalovat.

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

Příkaz azd deploy zpracovává následující úlohy pomocí oddílu helm :

  • Přidá všechna odkazovaná úložiště Helm nebo je aktualizuje.
  • Nainstaluje odkazované grafy Helm.
  • Čeká na to, aby release Helm přešel do nasazeného stavu.
  • Zobrazí seznam relevantních služeb a příchozích dat definovaných v rámci nasazených prostředků.

Snímek obrazovky s výstupem nasazení Helm

Povolení podpory Kustomize

Pokud chcete povolit podporu Kustomize, ujistěte se, že máte nainstalované rozhraní příkazového řádku Kustomize. Povolte příznak funkce Kustomize azd pomocí příkazu azd config.

azd config set alpha.aks.kustomize on

Konfigurace a nasazení Kustomize

Funkce Kustomize umožňuje používat Kustomize jako součást nasazení Kubernetes a poskytuje následující funkce:

  • Podpora base a variant konfigurace
  • edits které je možné spustit před nasazením
  • configMapGenerator s prostředími azd

Pomocí následujících azure.yaml částí nakonfigurujte funkce Kustomize:

  • dir: Relativní cesta ze služby do vašeho adresáře Kustomize, který obsahuje kustomization.yaml soubor.
    • Podporuje nahrazení proměnných prostředí.
  • edits: Pole výrazů pro úpravy, které se použijí před nasazením
    • Podporuje nahrazení proměnných prostředí.
  • env: Mapování párů klíč/hodnota vygenerovaných před nasazením
    • Hodnoty mapování podporují nahrazení proměnných prostředí

Případy použití

azd podporuje následující případy použití Kustomize.

Nasaďte manifesty K8s

Následující konfigurace provede kubectl apply -k <dir> příkaz, který odkazuje na složku manifestů, která obsahuje 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

Nasazujte různé varianty pomocí překryvných vrstev

Tento případ použití se obvykle používá pro nasazení vlastních konfigurací do různých fází nebo prostředí, například dev, test a prod. V následujícím příkladu může uživatel zadat proměnnou ${AZURE_ENV_NAME} prostředí v adresáři kustomize, která automaticky použije prostředí azd jako výchozí konvenci překrytí:

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

Upravit kustomization.yaml před nasazením

Běžným případem použití pro úpravu kustomization.yaml je změna názvů a verzí obrazů kontejneru používaných v rámci nasazení.

Následující příklad určuje edits konfiguraci a nastaví libovolný platný kustomize edit ... příkaz. azd automaticky interpoluje všechny proměnné prostředí odkazované v edit rámci příkazu.

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

Použití azd proměnných prostředí v rámci konfiguračních map

Při konfiguraci clusterů K8s jsou důležité konfigurační mapy nebo tajné kódy. Vzhledem k tomu, že kustomize nepodporuje žádnou přímou náhradu proměnných prostředí , můžeme kustomize configMapGenerator použít se souborem .env .

kustomize Oddíl konfigurace podporuje oddíl env, ve kterém lze definovat jeden nebo více párů klíč/hodnota. Tato konfigurace automaticky vygeneruje dočasný .env soubor ve vašem adresáři kustomization, který může použít configMapGenerator.

Následující konfigurace vytvoří .env s určenými páry klíč/hodnota.

# 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 vygeneruje konfiguraci mapy K8s se zadaným názvem, která obsahuje všechny páry klíč/hodnota, jež jsou uvedeny v souboru .env.

# kustomization.yaml

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

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

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