Partager via


Déployer l’application Teams sur le service de conteneur

Vous pouvez déployer un bot ou une application d’onglet Teams sur azure Container Apps, Azure Kubernetes Service (AKS) ou un cluster Kubernetes local.

Configuration requise

Téléchargez l’exemple de bot Teams ou l’exemple d’application d’onglet Teams, qui offre une expérience prête à l’emploi pour le développement Azure Container Apps. Vous pouvez apporter quelques modifications à la configuration et les déployer sur AKS ou un cluster Kubernetes local.

Avant de commencer, vérifiez que vous disposez des outils suivants :

  • Accédez à votre compte Azure.

  • Interfaces de ligne de commande (CLI) Azure pour le déploiement Azure Container Apps ou AKS.

Remarque

Les commandes de l’article sont basées sur Git Bash. Si vous utilisez une autre interface, mettez à jour les commandes en fonction des besoins.

Déployer sur Azure Container Apps

Azure Container Apps est un service entièrement managé qui vous permet d’exécuter des applications conteneurisées dans le cloud. Il s’agit d’un choix idéal si vous n’avez pas besoin d’un accès direct à toutes les API Kubernetes natives et à la gestion des clusters et si vous préférez une expérience entièrement managée fondée sur les meilleures pratiques.

À l’aide d’exemples d’applications, vous pouvez exécuter les commandes d’approvisionnement et de déploiement dans teams Toolkit. Teams Toolkit crée un registre de conteneurs Azure et Azure Container Apps pour vous et construit votre application dans une image conteneur et la déploie sur Azure Container Apps.

La provision commande crée et configure les ressources suivantes :

  • Une application Teams avec une fonctionnalité d’onglet ou de bot.
  • Azure Container Registry pour héberger votre image conteneur.
  • Un environnement Azure Container App et un azure Container Apps pour héberger votre application.
  • Une application Microsoft Entra pour l’authentification.

Dans l’exemple de bot Teams, la provision commande crée également un service Azure Bot Service pour canaliser le client Teams et Azure Container Apps.

La deploy commande exécute les actions suivantes :

  • Génère l’application dans une image conteneur.
  • Envoie (push) l’image conteneur à Azure Container Registry.
  • Déploie l’image sur Azure Container Apps.

Déployer un bot Teams sur Azure Kubernetes Service

AKS est un service d’orchestration de conteneur managé fourni par Azure. Avec AKS, vous pouvez gérer entièrement l’expérience Kubernetes dans Azure.

Architecture

Capture d’écran montrant l’architecture du bot Teams vers Azure Kubernetes Service.

Le serveur principal Teams interagit avec votre bot via Azure Bot Service. Ce service nécessite que votre bot soit accessible via un point de terminaison HTTPS public. Pour configurer, déployez un contrôleur d’entrée sur votre cluster Kubernetes et sécurisez-le avec un certificat TLS.

Vous pouvez utiliser l’ID Microsoft Entra pour authentifier votre bot auprès d’Azure Bot Service. Créez un secret Kubernetes qui inclut l’ID d’application et le mot de passe, puis intégrez le secret à la configuration d’exécution de votre conteneur.

Configurer l’entrée avec HTTPS sur AKS

  1. Assurez-vous que votre AKS est connecté à votre registre de conteneurs Azure, qui héberge vos images conteneur. Pour plus d’informations, consultez Utiliser Azure CLI.

  2. Exécutez la commande suivante pour installer le contrôleur d’entrée et le gestionnaire de certificats :

    NAMESPACE=teams-bot
    
    helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
    helm repo update
    helm install ingress-nginx ingress-nginx/ingress-nginx --create-namespace --namespace $NAMESPACE \
        --set controller.nodeSelector."kubernetes\.io/os"=linux  \
        --set defaultBackend.nodeSelector."kubernetes\.io/os"=linux  \
        --set controller.healthStatus=true \
        --set controller.service.externalTrafficPolicy=Local \
        --set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-health-probe-request-path"=/healthz 
    
    helm repo add jetstack https://charts.jetstack.io
    helm repo update
    helm install cert-manager jetstack/cert-manager --namespace $NAMESPACE --set installCRDs=true --set nodeSelector."kubernetes\.io/os"=linux
    

    Remarque

    Vous pouvez également suivre les instructions disponibles dans Créer un contrôleur d’entrée non managé et utiliser TLS avec Let’s encrypt certificates pour configurer les certificats d’entrée et TLS sur votre cluster Kubernetes.

  3. Exécutez la commande suivante pour mettre à jour le DNS pour l’adresse IP publique d’entrée et obtenir le point de terminaison d’entrée :

    > kubectl get services --namespace $NAMESPACE -w ingress-nginx-controller
    
    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
    ingress-nginx-controller LoadBalancer $CLUSTER_IP $EXTERNAL_IP 80:32514/TCP,443:32226/TCP
    
    > PUBLICIPID=$(az network public-ip list --query "[?ipAddress!=null]|[?contains(ipAddress, '$EXTERNAL_IP')].[id]" --output tsv)
    > az network public-ip update --ids $PUBLICIPID --dns-name $DNSLABEL
    > az network public-ip show --ids $PUBLICIPID --query "[dnsSettings.fqdn]" --output tsv
    
    $DNSLABEL.$REGION.cloudapp.azure.com
    

Provisionner des ressources avec teams Toolkit

Vous pouvez utiliser la commande dans le provision Kit de ressources Teams pour créer une application Teams avec la fonctionnalité bot, incorporer Azure Bot Service et ajouter l’ID Microsoft Entra pour l’authentification.

Pour provisionner des ressources avec Teams Toolkit, procédez comme suit :

  1. Ouvrez l’exemple d’application que vous avez téléchargé précédemment.

  2. Accédez au env/.env.${envName} fichier et mettez à jour la BOT_DOMAIN valeur avec votre nom de domaine complet.

  3. Accédez au teamsapp.yml fichier et mettez à jour l’action suivante arm/deploy pour vous assurer que Teams Toolkit provisionne un service Azure Bot Service pendant l’exécution de la provision commande :

    - uses: arm/deploy 
      with:
        subscriptionId: ${{AZURE_SUBSCRIPTION_ID}} 
        resourceGroupName: ${{AZURE_RESOURCE_GROUP_NAME}} 
        templates:
          - path: ./infra/botRegistration/azurebot.bicep
            parameters: ./infra/botRegistration/azurebot.parameters.json
            deploymentName: Create-resources-for-bot
        bicepCliVersion: v0.9.1
    
  4. Exécutez la provision commande dans le Kit de ressources Teams.

  5. Après l’approvisionnement, recherchez le dans env/.env.${envName} le BOT_ID fichier et le chiffré SECRET_BOT_PASSWORD dans le env/.env.${envName}.user fichier. Pour obtenir la valeur réelle de BOT_PASSWORD. Sélectionnez l’annotation Déchiffrer le secret.

  6. Pour créer un secret Kubernetes qui contient BOT_ID et BOT_PASSWORD, enregistrez la paire clé-valeur dans le ./deploy/.env.dev-secrets fichier et exécutez la commande suivante pour provisionner le secret :

    kubectl create secret generic dev-secrets --from-env-file ./deploy/.env.dev-secrets -n $NAMESPACE
    

Appliquer le déploiement

L’exemple inclut un fichier de déploiement, deploy/sso-bot.yaml, à titre de référence.

  1. Mettez à jour les espaces réservés suivants :

    1. <image>: Mettez à jour votre image. Par exemple : myacr.azurecr.io/sso-bot:latest.

    2. <hostname>: Mettez à jour votre nom de domaine complet d’entrée.

  2. Pour appliquer deploy/tab.yaml, exécutez la commande suivante :

    kubectl apply -f deploy/sso-bot.yaml -n $NAMESPACE
    
  3. Accédez à Visual Studio Code.

  4. Dans le panneau Exécuter et déboguer , sélectionnez Lancer la configuration à distance .

  5. Pour afficher un aperçu de l’application de bot Teams déployée sur AKS, sélectionnez Démarrer le débogage (F5).

Déployer un bot Teams sur un cluster Kubernetes local

Vous pouvez déployer un bot Teams sur votre cluster Kubernetes personnel ou un service Kubernetes à partir de différents services cloud en suivant les étapes similaires utilisées pour déployer le bot Teams sur AKS.

Architecture

Capture d’écran montrant l’architecture du cluster Kubernetes local.

Le serveur principal Teams interagit avec votre bot via Azure Bot Service. Ce service nécessite que votre bot soit accessible via un point de terminaison HTTPS public. Pour configurer, déployez un contrôleur d’entrée sur votre cluster Kubernetes et sécurisez-le avec un certificat TLS.

Vous pouvez utiliser l’ID Microsoft Entra pour authentifier votre bot auprès d’Azure Bot Service. Créez un secret Kubernetes qui inclut l’ID d’application et le mot de passe, puis intégrez le secret à la configuration d’exécution de votre conteneur.

Provisionner des ressources avec teams Toolkit

Vous pouvez utiliser la commande dans le provision Kit de ressources Teams pour créer une application Teams avec la fonctionnalité bot, incorporer Azure Bot Service et ajouter l’ID Microsoft Entra pour l’authentification.

Pour provisionner des ressources avec Teams Toolkit, procédez comme suit :

  1. Ouvrez l’exemple d’application que vous avez téléchargé précédemment.

  2. Accédez au env/.env.${envName} fichier et mettez à jour la BOT_DOMAIN valeur avec votre nom de domaine complet.

  3. Accédez au teamsapp.yml fichier et mettez à jour l’action suivante arm/deploy pour vous assurer que Teams Toolkit provisionne un service Azure Bot Service pendant l’exécution de la provision commande :

    - uses: arm/deploy 
      with:
        subscriptionId: ${{AZURE_SUBSCRIPTION_ID}} 
        resourceGroupName: ${{AZURE_RESOURCE_GROUP_NAME}} 
        templates:
          - path: ./infra/botRegistration/azurebot.bicep
            parameters: ./infra/botRegistration/azurebot.parameters.json
            deploymentName: Create-resources-for-bot
        bicepCliVersion: v0.9.1
    
  4. Dans le teamsapp.yml fichier, mettez à jour l’action botFramework/create pendant la phase de provisionnement. Cette action permet à Teams Toolkit de créer une inscription de bot avec le point de terminaison de messagerie approprié.

    Remarque

    Nous vous recommandons d’utiliser Azure Bot Service pour le canal. Si vous n’avez pas de compte Azure et que vous ne pouvez pas créer Azure Bot Service, vous pouvez créer une inscription de bot.

    - uses: botFramework/create
        with:
        botId: ${{BOT_ID}}
        name: <Bot display name>
        messagingEndpoint: https://${{BOT_DOMAIN}}/api/messages
        description: ""
        channels:
            - name: msteams
    

    Vous pouvez supprimer l’action dans teamsapp.yml le arm/deploy fichier, car nous n’avons pas besoin de ressources Azure.

  5. Exécutez la provision commande dans le Kit de ressources Teams.

  6. Après l’approvisionnement, recherchez le BOT_ID dans le env/.env.${envName} fichier et le chiffré SECRET_BOT_PASSWORD dans le env/.env.${envName}.user fichier. Pour obtenir la valeur réelle de BOT_PASSWORD. Sélectionnez l’annotation Déchiffrer le secret.

  7. Pour créer un secret Kubernetes qui contient BOT_ID et BOT_PASSWORD, enregistrez la paire clé-valeur dans le ./deploy/.env.dev-secrets fichier et exécutez la commande suivante pour provisionner le secret :

    kubectl create secret generic dev-secrets --from-env-file ./deploy/.env.dev-secrets -n $NAMESPACE
    

Appliquer le déploiement

L’exemple inclut un fichier de déploiement, deploy/sso-bot.yaml, pour votre aide.

  1. Mettez à jour les espaces réservés suivants :

    1. <image>: Mettez à jour votre image. Par exemple : myacr.azurecr.io/sso-bot:latest.

    2. <hostname>: Mettez à jour votre nom de domaine complet d’entrée.

  2. Pour appliquer deploy/tab.yaml, exécutez la commande suivante :

    kubectl apply -f deploy/sso-bot.yaml -n $NAMESPACE
    
  3. Accédez à Visual Studio Code.

  4. Dans le panneau Exécuter et déboguer , sélectionnez Lancer la configuration à distance .

  5. Pour afficher un aperçu de l’application de bot Teams déployée sur AKS, sélectionnez Démarrer le débogage (F5).

Déployer l’application d’onglet Teams sur Kubernetes

AKS sert de service d’orchestration de conteneur managé proposé par Azure. Avec AKS, vous pouvez gérer entièrement l’expérience Kubernetes dans Azure.

Déployer une application d’onglet Teams sur AKS est similaire au déploiement d’une application web sur AKS. Toutefois, étant donné qu’une application d’onglet Teams nécessite une connexion HTTPS, vous devez posséder un domaine et configurer l’entrée TLS dans votre AKS.

Vous pouvez également déployer une application d’onglet Teams sur votre cluster Kubernetes personnel ou un service Kubernetes sur différentes plateformes cloud. Cela implique des étapes similaires à celles utilisées lors du déploiement sur Azure Kubernetes Service.

Configurer l’entrée avec HTTPS sur AKS

  1. Vérifiez que votre aks est déjà connecté à votre registre de conteneurs Azure, qui héberge vos images conteneur. Pour plus d’informations, consultez Azure CLI.

  2. Exécutez la commande suivante pour installer le contrôleur d’entrée et le gestionnaire de certificats :

    NAMESPACE=teams-tab
    
    helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
    helm repo update
    helm install ingress-nginx ingress-nginx/ingress-nginx --create-namespace --namespace $NAMESPACE \
        --set controller.nodeSelector."kubernetes\.io/os"=linux  \
        --set defaultBackend.nodeSelector."kubernetes\.io/os"=linux  \
        --set controller.healthStatus=true \
        --set controller.service.externalTrafficPolicy=Local \
        --set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-health-probe-request-path"=/healthz 
    
    helm repo add jetstack https://charts.jetstack.io
    helm repo update
    helm install cert-manager jetstack/cert-manager --namespace $NAMESPACE --set installCRDs=true --set nodeSelector."kubernetes\.io/os"=linux
    

    Remarque

    Vous pouvez également suivre les instructions disponibles dans Créer un contrôleur d’entrée non managé et utiliser TLS avec Let’s encrypt certificates pour configurer les certificats d’entrée et TLS sur votre cluster Kubernetes.

  3. Exécutez la commande suivante pour mettre à jour le DNS pour l’adresse IP publique d’entrée et obtenir le point de terminaison d’entrée :

    > kubectl get services --namespace $NAMESPACE -w ingress-nginx-controller
    
    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
    ingress-nginx-controller LoadBalancer $CLUSTER_IP $EXTERNAL_IP 80:32514/TCP,443:32226/TCP
    
    > PUBLICIPID=$(az network public-ip list --query "[?ipAddress!=null]|[?contains(ipAddress, '$EXTERNAL_IP')].[id]" --output tsv)
    > az network public-ip update --ids $PUBLICIPID --dns-name $DNSLABEL
    > az network public-ip show --ids $PUBLICIPID --query "[dnsSettings.fqdn]" --output tsv
    
    $DNSLABEL.$REGION.cloudapp.azure.com
    

Provisionner des ressources avec teams Toolkit

Vous pouvez utiliser la commande dans le provision Kit de ressources Teams pour créer une application Teams avec la fonctionnalité d’onglet, incorporer Azure Bot Service et ajouter l’ID Microsoft Entra pour l’authentification.

Pour provisionner des ressources avec Teams Toolkit, procédez comme suit :

  1. Ouvrez l’exemple d’application que vous avez téléchargé précédemment.

  2. Accédez au env/.env.${envName} fichier et mettez à jour la TAB_DOMAIN valeur avec votre nom de domaine complet.

  3. Accédez au teamsapp.yml fichier et supprimez l’action arm/deploy , car aucune ressource Azure supplémentaire n’est requise.

  4. Exécutez la provision commande dans le Kit de ressources Teams.

  5. Utilisez le Kit de ressources Teams pour créer un ID Microsoft Entra, que vous souhaiterez peut-être définir comme variables d’environnement de vos applications.

  6. Après l’approvisionnement, recherchez le AAD_APP_CLIENT_ID dans le env/.env.${envName} fichier et le chiffré SECRET_AAD_APP_CLIENT_SECRET dans le env/.env.${envName}.user fichier.

  7. Pour obtenir la valeur réelle de SECRET_AAD_APP_CLIENT_SECRET. Sélectionnez l’annotation Déchiffrer le secret.

Appliquer le déploiement

L’exemple inclut un fichier de déploiement, deploy/tab.yaml, à titre de référence.

  1. Mettez à jour les espaces réservés suivants :

    1. <tab-image>: Mettez à jour votre image. Par exemple : myacr.azurecr.io/tab:latest.

    2. <api-image>: Mettez à jour votre image d’API. Si vous n’avez pas d’API, supprimez le hello-world-apiservice et déployez-le à partir du fichier yaml.

    3. <hostname>: Mettez à jour votre nom de domaine complet d’entrée.

  2. Pour appliquer deploy/tab.yaml, exécutez la commande suivante :

    kubectl apply -f deploy/tab.yaml -n $NAMESPACE
    
  3. Accédez à Visual Studio Code.

  4. Dans le panneau Exécuter et déboguer , sélectionnez Lancer la configuration à distance .

  5. Pour afficher un aperçu de l’application de bot Teams déployée sur AKS, sélectionnez Démarrer le débogage (F5).