Stöd för Helm och Kustomize

Azure Developer CLI ger stöd för Helm och Kustomize för att förbättra etablerings- och distributionsprocessen till Azure Kubernetes Service (AKS). Helm och Kustomize är verktyg som hjälper dig att konfigurera och hantera Kubernetes-program. I de kommande avsnitten får du lära dig hur du aktiverar och anpassar stöd för dessa verktyg i dina azd mallar.

Aktivera Helm-stöd

Om du vill aktivera Helm-stöd kontrollerar du att Helm CLI är installerat. azd Aktivera helm-funktionsflaggan genom att azd config köra kommandot:

azd config set alpha.aks.helm on

Helm-konfiguration och -distribution

azd Med Helm-stöd kan du definiera en lista över Helm-diagram som ska installeras för varje azd tjänst. Använd konfigurationsavsnitten helmk8s och azure.yaml i filen för att definiera en lista över helm-lagringsplatser eller versioner som ska installeras.

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

Kommandot azd deploy hanterar följande uppgifter med hjälp av avsnittet helm :

  • Lägger till alla refererade Helm-lagringsplatser och/eller uppdaterar dem
  • Installerar de refererade Helm-diagrammen
  • Väntar på att Helm-releasen ska övergå till ett driftsatt tillstånd
  • Visar relevanta tjänster och ingresser som definierats i de distribuerade resurserna

En skärmbild av Helm-distributionens utdata.

Aktivera Kustomize-stöd

Om du vill aktivera Kustomize-stöd kontrollerar du att Kustomize CLI är installerat. Aktivera funktionsflaggan azd Kustomize med kommandot azd config :

azd config set alpha.aks.kustomize on

Kustomize-konfiguration och distribution

Med funktionen Kustomize kan du använda Kustomize som en del av Kubernetes-distributioner och tillhandahåller följande funktioner:

  • Stöd base och variant konfigurationer
  • edits som kan köras före driftsättningar
  • configMapGenerator med azd miljöer

Konfigurera Kustomize-funktioner med hjälp av följande azure.yaml avsnitt:

  • dir: Relativ sökväg från tjänsten till din Kustomize-katalog som innehåller en kustomization.yaml fil.
    • Stöder ersättning av miljövariabler.
  • edits: Matris med redigeringsuttryck som tillämpas före distributionen
    • Stöder ersättning av miljövariabler
  • env: Karta över nyckel/värde-par som genererats före distributionen
    • Kartvärden stöder miljövariabelersättning

Användningsfall

azd stöder följande Kustomize-användningsfall.

Distribuera K8s-manifest

Följande konfiguration utför ett kubectl apply -k <dir> kommando som pekar på din manifestmapp som innehåller en 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

Använd överlägg för att distribuera med olika varianter

Det här användningsfallet används vanligtvis för att ha anpassade konfigurationer för distribution till olika faser eller miljöer, till exempel dev, test och prod. I följande exempel kan användaren ange ${AZURE_ENV_NAME} miljövariabeln i katalogen kustomize för att automatiskt använda azd-miljöerna som standardöverläggskonvention:

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

Ändra kustomization.yaml före distribution

Ett vanligt användningsfall för att modifiera kustomization.yaml är att ändra de bildnamn/versioner för behållare som används som en del av din distribution.

I följande exempel anges en edits-konfiguration och vilket giltigt kustomize edit ...-kommando som helst. azd interpolerar automatiskt alla miljövariabler som refereras i edit kommandot.

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

Använda azd miljövariabler i konfigurationskartor

Konfigurationskartor eller hemligheter är viktiga för att konfigurera dina K8s-kluster. Eftersom kustomize inte stöder någon direkt miljövariabelersättning kan vi använda kustomize configMapGenerator med en .env fil.

Konfigurationsavsnittet kustomize stöder ett env avsnitt där ett eller flera nyckel/värde-par kan definieras. Den här konfigurationen genererar automatiskt en tillfällig .env fil i kustomiseringskatalogen som kan användas av en configMapGenerator.

Följande konfiguration skapar en .env med de angivna nyckel-/värdeparen.

# 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 Genererar en K8s-konfigurationskarta med det angivna namnet och innehåller alla nyckel/värde-par som refereras i .env filen.

# kustomization.yaml

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

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

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