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
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
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.
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.
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 :
Ouvrez l’exemple d’application que vous avez téléchargé précédemment.
Accédez au
env/.env.${envName}
fichier et mettez à jour laBOT_DOMAIN
valeur avec votre nom de domaine complet.Accédez au
teamsapp.yml
fichier et mettez à jour l’action suivantearm/deploy
pour vous assurer que Teams Toolkit provisionne un service Azure Bot Service pendant l’exécution de laprovision
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
Exécutez la
provision
commande dans le Kit de ressources Teams.Après l’approvisionnement, recherchez le dans
env/.env.${envName}
leBOT_ID
fichier et le chiffréSECRET_BOT_PASSWORD
dans leenv/.env.${envName}.user
fichier. Pour obtenir la valeur réelle deBOT_PASSWORD
. Sélectionnez l’annotation Déchiffrer le secret.Pour créer un secret Kubernetes qui contient
BOT_ID
etBOT_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.
Mettez à jour les espaces réservés suivants :
<image>
: Mettez à jour votre image. Par exemple :myacr.azurecr.io/sso-bot:latest
.<hostname>
: Mettez à jour votre nom de domaine complet d’entrée.
Pour appliquer
deploy/tab.yaml
, exécutez la commande suivante :kubectl apply -f deploy/sso-bot.yaml -n $NAMESPACE
Accédez à Visual Studio Code.
Dans le panneau Exécuter et déboguer , sélectionnez Lancer la configuration à distance .
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
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 :
Ouvrez l’exemple d’application que vous avez téléchargé précédemment.
Accédez au
env/.env.${envName}
fichier et mettez à jour laBOT_DOMAIN
valeur avec votre nom de domaine complet.Accédez au
teamsapp.yml
fichier et mettez à jour l’action suivantearm/deploy
pour vous assurer que Teams Toolkit provisionne un service Azure Bot Service pendant l’exécution de laprovision
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
Dans le
teamsapp.yml
fichier, mettez à jour l’actionbotFramework/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
learm/deploy
fichier, car nous n’avons pas besoin de ressources Azure.Exécutez la
provision
commande dans le Kit de ressources Teams.Après l’approvisionnement, recherchez le
BOT_ID
dans leenv/.env.${envName}
fichier et le chiffréSECRET_BOT_PASSWORD
dans leenv/.env.${envName}.user
fichier. Pour obtenir la valeur réelle deBOT_PASSWORD
. Sélectionnez l’annotation Déchiffrer le secret.Pour créer un secret Kubernetes qui contient
BOT_ID
etBOT_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.
Mettez à jour les espaces réservés suivants :
<image>
: Mettez à jour votre image. Par exemple :myacr.azurecr.io/sso-bot:latest
.<hostname>
: Mettez à jour votre nom de domaine complet d’entrée.
Pour appliquer
deploy/tab.yaml
, exécutez la commande suivante :kubectl apply -f deploy/sso-bot.yaml -n $NAMESPACE
Accédez à Visual Studio Code.
Dans le panneau Exécuter et déboguer , sélectionnez Lancer la configuration à distance .
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
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.
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.
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 :
Ouvrez l’exemple d’application que vous avez téléchargé précédemment.
Accédez au
env/.env.${envName}
fichier et mettez à jour laTAB_DOMAIN
valeur avec votre nom de domaine complet.Accédez au
teamsapp.yml
fichier et supprimez l’actionarm/deploy
, car aucune ressource Azure supplémentaire n’est requise.Exécutez la
provision
commande dans le Kit de ressources Teams.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.
Après l’approvisionnement, recherchez le
AAD_APP_CLIENT_ID
dans leenv/.env.${envName}
fichier et le chiffréSECRET_AAD_APP_CLIENT_SECRET
dans leenv/.env.${envName}.user
fichier.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.
Mettez à jour les espaces réservés suivants :
<tab-image>
: Mettez à jour votre image. Par exemple :myacr.azurecr.io/tab:latest
.<api-image>
: Mettez à jour votre image d’API. Si vous n’avez pas d’API, supprimez lehello-world-api
service et déployez-le à partir du fichier yaml.<hostname>
: Mettez à jour votre nom de domaine complet d’entrée.
Pour appliquer
deploy/tab.yaml
, exécutez la commande suivante :kubectl apply -f deploy/tab.yaml -n $NAMESPACE
Accédez à Visual Studio Code.
Dans le panneau Exécuter et déboguer , sélectionnez Lancer la configuration à distance .
Pour afficher un aperçu de l’application de bot Teams déployée sur AKS, sélectionnez Démarrer le débogage (F5).