Partager via


Support Helm et Kustomize

Azure Developer CLI prend en charge Helm et Kustomize pour améliorer le processus d’approvisionnement et de déploiement sur Azure Kubernetes Service (AKS). Helm et Kustomize sont des outils qui vous aident à configurer et gérer des applications Kubernetes. Dans les sections à l’avance, vous allez apprendre à activer et personnaliser la prise en charge de ces outils dans vos azd modèles.

Activer la prise en charge de Helm

Pour activer la prise en charge de Helm, vérifiez que l’interface CLI Helm est installée. Activez l’indicateur de azd fonctionnalité Helm en exécutant la azd config commande :

azd config set alpha.aks.helm on

Configuration et déploiement Helm

azd La prise en charge de Helm vous permet de définir une liste de graphiques Helm à installer pour chaque azd service. Utilisez les helm sections et k8s les sections de configuration du azure.yaml fichier pour définir une liste de référentiels helm ou de mises en production à installer.

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

La azd deploy commande gère les tâches suivantes à l’aide de la helm section :

  • Ajoute tous les référentiels Helm référencés et/ou les met à jour
  • Installe les graphiques Helm référencés
  • Attend que helm soit mis en production pour passer à un état déployé
  • Répertorie les services et les ingresses pertinents définis dans les ressources déployées

Capture d’écran de la sortie du déploiement Helm.

Activer la prise en charge de Kustomize

Pour activer la prise en charge de Kustomize, vérifiez que l’interface CLI Kustomize est installée. Activez l’indicateur azd de fonctionnalité Kustomize à l’aide de la azd config commande :

azd config set alpha.aks.kustomize on

Configuration et déploiement kustomize

La fonctionnalité Kustomize vous permet d’utiliser Kustomize dans le cadre des déploiements Kubernetes et fournit les fonctionnalités suivantes :

  • Prise en charge base et variant configurations
  • edits qui peuvent être exécutés avant les déploiements
  • configMapGenerator avec azd des environnements

Configurez les fonctionnalités Kustomize à l’aide des sections suivantes azure.yaml :

  • dir: chemin relatif du service vers votre répertoire Kustomize qui contient un kustomization.yaml fichier.
    • Prend en charge la substitution de variable d’environnement.
  • edits: tableau d’expressions de modification appliquées avant le déploiement
    • Prend en charge la substitution de variable d’environnement
  • env: Mappage des paires clé/valeur générées avant le déploiement
    • Les valeurs de mappage prennent en charge la substitution des variables d’environnement

Cas d’utilisation

Les cas d’usage Kustomize suivants sont pris en charge par azd.

Déployer des manifestes k8s

La configuration suivante exécute une kubectl apply -k <dir> commande qui pointe vers votre dossier manifestes qui contient un 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

Utiliser des superpositions pour effectuer un déploiement avec différentes variantes

Ce cas d’usage est généralement utilisé pour avoir des configurations personnalisées pour le déploiement sur différentes phases ou environnements, tels que dev, test et prod. Dans l’exemple suivant, l’utilisateur peut spécifier la ${AZURE_ENV_NAME} variable d’environnement dans le répertoire kustomize pour tirer automatiquement parti des environnements azd comme convention de superposition par défaut :

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

Modifier kustomization.yaml avant le déploiement

Un cas d’usage courant pour modifier le kustomization.yaml fichier consiste à modifier les noms/versions d’images conteneur utilisés dans le cadre de votre déploiement.

L’exemple suivant spécifie une edits configuration et définit n’importe quelle commande valide kustomize edit ... . azd interpole automatiquement toutes les variables d’environnement référencées dans la edit commande.

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

Utiliser des azd variables d’environnement dans des mappages de configuration

Les cartes de configuration ou les secrets sont essentiels dans la configuration de vos clusters k8s. Étant donné que kustomize ne prend pas en charge la substitution de variable d’environnement directe, nous pouvons tirer parti de kustomize configMapGenerator avec un .env fichier.

La kustomize section de configuration prend en charge une env section dans laquelle une ou plusieurs paires clé/valeur peuvent être définies. Cette configuration génère automatiquement un fichier temporaire .env dans votre répertoire kustomization qui peut être utilisé par un configMapGenerator.

La configuration suivante crée une .env paire clé/valeur spécifiée.

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

Génère configMapGenerator un mappage de configuration k8s avec le nom spécifié et contient toutes les paires clé/valeur référencées dans le .env fichier.

# kustomization.yaml

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

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

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