Ondersteuning voor Helm en Kustomize

De Azure Developer CLI biedt ondersteuning voor Helm en Kustomize om het inrichtings- en implementatieproces voor Azure Kubernetes Service (AKS) te verbeteren. Helm en Kustomize zijn hulpprogramma's waarmee u Kubernetes-toepassingen kunt configureren en beheren. In de volgende secties leert u hoe u ondersteuning voor deze hulpprogramma's in uw azd sjablonen inschakelt en aanpast.

Helm-ondersteuning inschakelen

Als u Helm-ondersteuning wilt inschakelen, moet u ervoor zorgen dat de Helm CLI is geïnstalleerd. Schakel de azd helm-functievlag in door de opdracht uit te azd config voeren:

azd config set alpha.aks.helm on

Helm-configuratie en -implementatie

azd Met Helm-ondersteuning kunt u een lijst met Helm-grafieken definiëren die voor elke azd service moeten worden geïnstalleerd. Gebruik de helm en k8s configuratiesecties in het azure.yaml bestand om een lijst met Helm-opslagplaatsen of releases te definiëren die moeten worden geïnstalleerd.

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

De azd deploy opdracht verwerkt de volgende taken met behulp van de helm sectie:

  • Voegt eventuele Helm-opslagplaatsen toe waarnaar wordt verwezen en/of werkt deze bij
  • Installeert de Helm-grafieken waarnaar wordt verwezen
  • Wacht tot de Helm-release is overgestapt op een geïmplementeerde status
  • Toont relevante services en ingresses die zijn gedefinieerd in de geïmplementeerde resources

Een schermopname van de uitvoer van de Helm-implementatie.

Ondersteuning voor Kustomize inschakelen

Als u ondersteuning voor Kustomize wilt inschakelen, moet u ervoor zorgen dat de Kustomize CLI is geïnstalleerd. Schakel de azd kustomize-functievlag in met behulp van de azd config opdracht:

azd config set alpha.aks.kustomize on

Kustomize-configuratie en -implementatie

Met de Functie Kustomize kunt u Kustomize gebruiken als onderdeel van Kubernetes-implementaties en beschikt u over de volgende functies:

  • Ondersteunt base en variant configuraties
  • edits die kan worden uitgevoerd vóór implementaties
  • configMapGenerator met azd omgevingen

Configureer Kustomize-functies met behulp van de volgende azure.yaml secties:

  • dir: relatief pad van de service naar de Kustomize-map die een kustomization.yaml bestand bevat.
    • Ondersteunt vervanging van omgevingsvariabelen.
  • edits: Matrix van bewerkingsexpressies die vóór de implementatie worden toegepast
    • Ondersteunt vervanging van omgevingsvariabelen
  • env: Kaart van sleutel-/waardeparen die vóór de implementatie zijn gegenereerd
    • Map-waarden ondersteunen vervanging van omgevingsvariabelen

Gebruikssituaties

azd ondersteunt de volgende Kustomize-gebruiksvoorbeelden.

K8s-manifesten implementeren

Met de volgende configuratie wordt een kubectl apply -k <dir> opdracht uitgevoerd die verwijst naar uw manifestmap die een kustomization.yaml bevat:

# 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

Gebruik overlays om te implementeren naar verschillende varianten

Deze use-case wordt meestal gebruikt om aangepaste configuraties te hebben voor implementatie in verschillende fasen of omgevingen, zoals devtest , en prod. In het volgende voorbeeld kan de gebruiker de ${AZURE_ENV_NAME} omgevingsvariabele in de kustomize-map opgeven om de azd-omgevingen automatisch te gebruiken als uw standaardoverlayconventie:

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

Wijzigen kustomization.yaml vóór implementatie

Een veelvoorkomend gebruiksvoorbeeld voor het wijzigen van de kustomization.yaml is het wijzigen van de namen/versies van de container images die worden gebruikt als onderdeel van uw implementatie.

In het volgende voorbeeld wordt een edits configuratie opgegeven en wordt een geldige kustomize edit ... opdracht ingesteld. azd interpoleert automatisch alle omgevingsvariabelen waarnaar wordt verwezen in de edit opdracht.

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

azd Omgevingsvariabelen gebruiken in configuratiemap

Configuratietoewijzingen of geheimen zijn essentieel voor het configureren van uw K8s-clusters. Omdat kustomize geen directe vervanging van omgevingsvariabelen ondersteunt , kunnen we de kustomize configMapGenerator gebruiken met een .env bestand.

De kustomize configuratiesectie ondersteunt een env sectie waarin een of meer sleutel-waardeparen kunnen worden gedefinieerd. Deze configuratie genereert automatisch een tijdelijk .env bestand in uw kustomisatiemap die kan worden gebruikt door een configMapGenerator.

Met de volgende configuratie wordt een .env met de opgegeven sleutel-/waardeparen gemaakt.

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

De configMapGenerator genereert een K8s-configuratietoewijzing met de opgegeven naam en bevat alle sleutel-/waardeparen waarnaar in het .env bestand wordt verwezen.

# kustomization.yaml

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

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

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