Sdílet prostřednictvím


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 následující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. helm Oddíly konfigurace k8s v azure.yaml souboru slouží k definování seznamu úložišť helm nebo vydaných verzí, 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 přechod verze Helm 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. azd Pomocí příkazu povolte příznak azd config funkce Kustomize:

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
  • configMapGenerators 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ýrazu pro úpravy použitého 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í

Následující případy použití Kustomize jsou podporovány azd.

Nasazení manifestů 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

Použití překryvných vrstev k nasazení s různými variantami

Tento případ použití se obvykle používá k tomu, aby se vlastní konfigurace nasazovaly do různých fází nebo prostředí, například deva test prod. V následujícím příkladu může uživatel zadat proměnnou ${AZURE_ENV_NAME} prostředí v adresáři kustomize, aby automaticky využívala 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 je kustomization.yaml úprava názvů a verzí imagí 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 využít kustomize configMapGenerator se souborem .env .

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

Následující konfigurace vytvoří .env dvojici klíč/hodnota se zadaný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}

Vygeneruje configMapGenerator mapu konfigurace k8s se zadaným názvem a obsahuje všechny páry klíč/hodnota odkazované v .env souboru.

# kustomization.yaml

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

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

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