Freigeben über


Helm- und Kustomize-Unterstützung

Die Azure Developer CLI bietet Unterstützung für Helm und Kustomize, um den Prozess der Bereitstellung und des Deployments für den 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 Helm-Feature-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- und k8s-Konfigurationsabschnitte in der azure.yaml-Datei, um eine Liste der Helm-Repositories oder Releases 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 Helm-Charts.
  • 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 können
  • 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 von Bearbeitungsausdrücken, die vor der Bereitstellung angewendet werden
    • Unterstützt die Ersetzung von Umgebungsvariablen
  • env: Abbildung der Schlüssel-Wert-Paare, die vor der Bereitstellung generiert wurden
    • Kartenwerte unterstützen die Ersetzung von Umgebungsvariablen

Anwendungsfälle

azd unterstützt die folgenden Kustomize-Anwendungsfälle.

Bereitstellen von K8s-Manifesten

Die folgende Konfiguration führt einen kubectl apply -k <dir>-Befehl aus, der auf deinen Manifestordner verweist, der ein kustomization.yaml enthält.

# 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, wie z. B. dev, test und prod, zu erstellen. Im folgenden Beispiel kann der Benutzer die ${AZURE_ENV_NAME} Umgebungsvariable im Kustomize-Verzeichnis angeben, um die azd-Umgebungen automatisch als Standardüberlagerungskonvention zu verwenden:

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

Ändern Sie kustomization.yaml vor der Bereitstellung

Ein gängiger Anwendungsfall zum Anpassen von kustomization.yaml ist das Ändern der Image-Namen/-Versionen von Containern, die im Rahmen Ihrer Bereitstellung genutzt 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 Sie azd Umgebungsvariablen in Konfigurationskarten

Konfigurationszuordnungen oder geheime Schlüssel sind für die Konfiguration Ihrer K8s-Cluster wichtig. Da kustomize keine direkte Ersetzung von Umgebungsvariablen unterstützt , können wir die Kustomize configMapGenerator mit einer .env Datei verwenden.

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 verwendet werden kann.

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