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 le drapeau de fonctionnalité azd Helm en exécutant la commande azd config :

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 des chartes Helm à installer pour chaque azd service. Utilisez les sections de configuration helm et k8s dans le fichier azure.yaml pour définir une liste de référentiels helm ou de versions à 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 commande azd config.

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 des configurations base et variant
  • edits qui peuvent être exécutés avant les déploiements
  • configMapGenerator avec azd 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

azd prend en charge les cas d’usage Kustomize suivants.

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 utiliser automatiquement les 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 est de changer les noms et versions d'images de 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 directe des variables d’environnement , nous pouvons utiliser 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 un .env avec les paires clé/valeur spécifiées.

# 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 génère une carte de configuration K8s avec le nom spécifié et contient toutes les paires clé/valeur référencées dans le fichier .env.

# kustomization.yaml

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

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

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