Freigeben über


Helm- und Kustomize-Unterstützung

Die Azure Developer CLI bietet Unterstützung für Helm und Kustomize, um den Bereitstellungs- und Bereitstellungsprozess für Azure Kubernetes Service (AKS) zu verbessern. Helm und Kustomize sind Tools, mit denen Sie Kubernetes-Anwendungen konfigurieren und verwalten können. In den folgenden Abschnitten erfahren Sie, wie Sie die Unterstützung für diese Tools in Ihren azd Vorlagen aktivieren und anpassen.

Aktivieren der Helmunterstützung

Um die Helm-Unterstützung zu aktivieren, stellen Sie sicher, dass die Helm CLI installiert ist. Aktivieren Sie das azd Steuerfeature-Flag, indem Sie den azd config Befehl ausführen:

azd config set alpha.aks.helm on

Helmkonfiguration und -bereitstellung

azd Mit der Helmunterstützung können Sie eine Liste der Helmdiagramme definieren, die für jeden azd Dienst installiert werden sollen. Verwenden Sie die helm Abschnitte und k8s Konfigurationsabschnitte in der azure.yaml Datei, um eine Liste der Helmrepositorys oder Versionen zu definieren, die installiert werden sollen.

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

Der azd deploy Befehl behandelt die folgenden Aufgaben mithilfe des helm Abschnitts:

  • Fügt alle referenzierten Helm-Repositorys hinzu und/oder aktualisiert sie.
  • Installiert die referenzierten Helmdiagramme.
  • Wartet auf die Helm-Freigabe auf den Übergang zu einem bereitgestellten Zustand
  • Listet relevante Dienste und Ingresse auf, die innerhalb der bereitgestellten Ressourcen definiert sind.

Screenshot der Helm-Bereitstellungsausgabe.

Aktivieren der Kustomize-Unterstützung

Um die Kustomize-Unterstützung zu aktivieren, stellen Sie sicher, dass die Kustomize CLI installiert ist. Aktivieren Sie das azd Kustomize-Feature-Flag mit dem azd config Befehl:

azd config set alpha.aks.kustomize on

Kustomize-Konfiguration und -Bereitstellung

Mit dem Kustomize-Feature können Sie Kustomize als Teil von Kubernetes-Bereitstellungen verwenden und die folgenden Features bereitstellen:

  • Unterstützt base und variant Konfigurationen
  • edits die vor Bereitstellungen ausgeführt werden kann
  • configMapGenerator mit azd Umgebungen

Konfigurieren Sie Kustomize-Features mithilfe der folgenden azure.yaml Abschnitte:

  • dir: Relativer Pfad vom Dienst zu Ihrem Kustomize-Verzeichnis, das eine kustomization.yaml Datei enthält.
    • Unterstützt die Ersetzung von Umgebungsvariablen.
  • edits: Array des Bearbeitungsausdrucks, der vor der Bereitstellung angewendet wird
    • Unterstützt die Ersetzung von Umgebungsvariablen
  • env: Zuordnung von Schlüssel-Wert-Paaren, die vor der Bereitstellung generiert wurden
    • Kartenwerte unterstützen die Ersetzung von Umgebungsvariablen

Anwendungsfälle

Die folgenden Kustomize-Anwendungsfälle werden von azd.

Bereitstellen von k8s-Manifesten

Die folgende Konfiguration führt einen kubectl apply -k <dir> Befehl aus, der auf den Manifestordner verweist, der eine 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

Verwenden von Überlagerungen für die Bereitstellung mit unterschiedlichen Varianten

Dieser Anwendungsfall wird in der Regel verwendet, um benutzerdefinierte Konfigurationen für die Bereitstellung in verschiedenen Phasen oder Umgebungen zu verwenden, z dev. B. und test prod. Im folgenden Beispiel kann der Benutzer die ${AZURE_ENV_NAME} Umgebungsvariable innerhalb des Kustomize-Verzeichnisses angeben, um die azd-Umgebungen automatisch als Standardüberlagerungskonvention zu nutzen:

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

Vor der Bereitstellung ändern kustomization.yaml

Ein gängiger Anwendungsfall zum Ändern des kustomization.yaml Containers besteht darin, die Containerimagenamen /-versionen zu ändern, die als Teil der Bereitstellung verwendet werden.

Im folgenden Beispiel wird eine edits Konfiguration angegeben und ein beliebiger gültiger kustomize edit ... Befehl festgelegt. azd Interpoliert automatisch alle Umgebungsvariablen, auf die innerhalb des edit Befehls verwiesen wird.

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

Verwenden von azd Umgebungsvariablen in Konfigurationszuordnungen

Konfigurationszuordnungen oder geheime Schlüssel sind bei der Konfiguration Ihrer k8s-Cluster von entscheidender Bedeutung. Da kustomize keine direkte Ersetzung von Umgebungsvariablen unterstützt, können wir die Kustomize configMapGenerator mit einer .env Datei nutzen.

Der kustomize Konfigurationsabschnitt unterstützt einen env Abschnitt, in dem ein oder mehrere Schlüssel-Wert-Paare definiert werden können. Diese Konfiguration generiert automatisch eine temporäre .env Datei in Ihrem Kustomisierungsverzeichnis, die von einem configMapGenerator.

Die folgende Konfiguration erstellt ein .env mit den angegebenen Schlüssel-Wert-Paaren.

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

Die configMapGenerator generiert eine k8s-Konfigurationszuordnung mit dem angegebenen Namen und enthält alle Schlüssel-Wert-Paare, auf die in der .env Datei verwiesen wird.

# kustomization.yaml

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

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

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