Bereitstellen der Teams-App im Containerdienst
Sie können einen Teams-Bot oder eine Registerkarten-App in azure Container Apps, Azure Kubernetes Service (AKS) oder einem lokalen Kubernetes-Cluster bereitstellen.
Voraussetzungen
Laden Sie den Beispiel-Teams-Bot oder die Teams-Registerkarten-Beispiel-App herunter, die eine einsatzbereite Erfahrung für die Azure Container Apps-Entwicklung bietet. Sie können einige Konfigurationsänderungen vornehmen und in AKS oder einem lokalen Kubernetes-Cluster bereitstellen.
Bevor Sie beginnen, stellen Sie sicher, dass Sie über die folgenden Tools verfügen:
Azure-Konto.
Azure-Befehlszeilenschnittstellen (CLI) für die Azure Container Apps- oder AKS-Bereitstellung.
Hinweis
Die Befehle in diesem Artikel basieren auf Git Bash. Wenn Sie eine andere Schnittstelle verwenden, aktualisieren Sie die Befehle nach Bedarf.
Bereitstellen in Azure Container Apps
Azure Container Apps ist ein vollständig verwalteter Dienst, mit dem Sie containerisierte Anwendungen in der Cloud ausführen können. Dies ist eine ideale Wahl, wenn Sie keinen direkten Zugriff auf alle nativen Kubernetes-APIs und die Clusterverwaltung benötigen und eine vollständig verwaltete Erfahrung bevorzugen, die auf bewährten Methoden basiert.
Mithilfe von Beispielanwendungen können Sie die Befehle zum Bereitstellen und Bereitstellen im Teams-Toolkit ausführen. Das Teams-Toolkit erstellt eine Azure Container Registry und Azure Container Apps für Sie, erstellt Ihre App in einem Containerimage und stellt sie in Azure Container Apps bereit.
Der provision
Befehl erstellt und konfiguriert die folgenden Ressourcen:
- Eine Teams-App mit Registerkarten- oder Botfunktion.
- Eine Azure Container Registry zum Hosten Ihres Containerimages.
- Eine Azure Container App-Umgebung und eine Azure Container Apps-Umgebung zum Hosten Ihrer App.
- Eine Microsoft Entra-App für die Authentifizierung.
Im Beispiel-Teams-Bot erstellt der provision
Befehl auch einen Azure Bot Service zum Kanalieren des Teams-Clients und von Azure Container Apps.
Der deploy
Befehl führt die folgenden Aktionen aus:
- Erstellt die App in einem Containerimage.
- Pusht das Containerimage an Azure Container Registry.
- Stellt das Image in Azure Container Apps bereit.
Bereitstellen eines Teams-Bots in Azure Kubernetes Service
AKS ist ein verwalteter Containerorchestrierungsdienst, der von Azure bereitgestellt wird. Mit AKS können Sie die Kubernetes-Erfahrung in Azure vollständig verwalten.
Architektur
Der Teams-Back-End-Server interagiert über den Azure Bot Service mit Ihrem Bot. Dieser Dienst erfordert, dass Ihr Bot über einen öffentlichen HTTPS-Endpunkt erreichbar ist. Stellen Sie zum Einrichten einen Eingangscontroller in Ihrem Kubernetes-Cluster bereit, und schützen Sie ihn mit einem TLS-Zertifikat.
Sie können Microsoft Entra ID verwenden, um Ihren Bot bei Azure Bot Service zu authentifizieren. Erstellen Sie ein Kubernetes-Geheimnis, das die App-ID und das Kennwort enthält, und integrieren Sie das Geheimnis in die Laufzeitkonfiguration Ihres Containers.
Einrichten des Eingangs mit HTTPS in AKS
Stellen Sie sicher, dass Ihr AKS mit Ihrer Azure Container Registry-Instanz verbunden ist, die Ihre Containerimages hostet. Weitere Informationen finden Sie unter Verwenden der Azure CLI.
Führen Sie den folgenden Befehl aus, um den Eingangscontroller und den Zertifikat-Manager zu installieren:
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
Hinweis
Sie können auch die Anweisungen unter Erstellen eines nicht verwalteten Eingangscontrollers befolgen und TLS mit Let's encrypt certificates verwenden, um Eingangs- und TLS-Zertifikate in Ihrem Kubernetes-Cluster einzurichten.
Führen Sie den folgenden Befehl aus, um das DNS für die öffentliche Eingangs-IP-Adresse zu aktualisieren und den Eingangsendpunkt abzurufen:
> 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
Bereitstellen von Ressourcen mit dem Teams-Toolkit
Sie können den provision
Befehl im Teams Toolkit verwenden, um eine Teams-App mit Botfunktion zu erstellen, den Azure Bot Service zu integrieren und die Microsoft Entra-ID für die Authentifizierung hinzuzufügen.
Führen Sie die folgenden Schritte aus, um Ressourcen mit dem Teams-Toolkit bereitzustellen:
Öffnen Sie die Beispiel-App, die Sie zuvor heruntergeladen haben.
Wechseln Sie zur
env/.env.${envName}
Datei, und aktualisieren Sie denBOT_DOMAIN
Wert mit Ihrem FQDN.Wechseln Sie zur
teamsapp.yml
Datei, und aktualisieren Sie die folgendearm/deploy
Aktion, um sicherzustellen, dass das Teams-Toolkit während der Ausführung desprovision
Befehls einen Azure Bot Service bereitstellt:- 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
Führen Sie den
provision
Befehl im Teams-Toolkit aus.Suchen Sie nach der Bereitstellung in
env/.env.${envName}
derBOT_ID
Datei und die verschlüsselteSECRET_BOT_PASSWORD
dateienv/.env.${envName}.user
. So rufen Sie den tatsächlichen Wert von abBOT_PASSWORD
. Wählen Sie die Anmerkung Geheimnis entschlüsseln aus.Um ein Kubernetes-Geheimnis zu erstellen, das und
BOT_PASSWORD
enthältBOT_ID
, speichern Sie das Schlüssel-Wert-Paar in der./deploy/.env.dev-secrets
Datei, und führen Sie den folgenden Befehl aus, um das Geheimnis bereitzustellen:kubectl create secret generic dev-secrets --from-env-file ./deploy/.env.dev-secrets -n $NAMESPACE
Anwenden der Bereitstellung
Das Beispiel enthält eine Bereitstellungsdatei ( deploy/sso-bot.yaml
) als Referenz.
Aktualisieren Sie die folgenden Platzhalter:
<image>
: Aktualisieren Sie Ihr Image. Beispiel:myacr.azurecr.io/sso-bot:latest
.<hostname>
: Aktualisieren Sie Den eingehenden FQDN.
Führen Sie den folgenden Befehl aus, um anzuwenden
deploy/tab.yaml
:kubectl apply -f deploy/sso-bot.yaml -n $NAMESPACE
Wechseln Sie zu Visual Studio Code.
Wählen Sie im Bereich Ausführen und Debuggen die Option Remotekonfiguration starten aus.
Wählen Sie Debuggen starten (F5) aus, um eine Vorschau der in AKS bereitgestellten Teams-Botanwendung anzuzeigen.
Bereitstellen eines Teams-Bots in einem lokalen Kubernetes-Cluster
Sie können einen Teams-Bot in Ihrem persönlichen Kubernetes-Cluster oder einem Kubernetes-Dienst aus verschiedenen Clouddiensten bereitstellen, indem Sie ähnliche Schritte ausführen, die zum Bereitstellen des Teams-Bots in AKS verwendet werden.
Architektur
Der Teams-Back-End-Server interagiert über den Azure Bot Service mit Ihrem Bot. Dieser Dienst erfordert, dass Ihr Bot über einen öffentlichen HTTPS-Endpunkt erreichbar ist. Stellen Sie zum Einrichten einen Eingangscontroller in Ihrem Kubernetes-Cluster bereit, und schützen Sie ihn mit einem TLS-Zertifikat.
Sie können Microsoft Entra ID verwenden, um Ihren Bot bei Azure Bot Service zu authentifizieren. Erstellen Sie ein Kubernetes-Geheimnis, das die App-ID und das Kennwort enthält, und integrieren Sie das Geheimnis in die Laufzeitkonfiguration Ihres Containers.
Bereitstellen von Ressourcen mit dem Teams-Toolkit
Sie können den provision
Befehl im Teams Toolkit verwenden, um eine Teams-App mit Botfunktion zu erstellen, den Azure Bot Service zu integrieren und die Microsoft Entra-ID für die Authentifizierung hinzuzufügen.
Führen Sie die folgenden Schritte aus, um Ressourcen mit dem Teams-Toolkit bereitzustellen:
Öffnen Sie die Beispiel-App, die Sie zuvor heruntergeladen haben.
Wechseln Sie zur
env/.env.${envName}
Datei, und aktualisieren Sie denBOT_DOMAIN
Wert mit Ihrem FQDN.Wechseln Sie zur
teamsapp.yml
Datei, und aktualisieren Sie die folgendearm/deploy
Aktion, um sicherzustellen, dass das Teams-Toolkit während der Ausführung desprovision
Befehls einen Azure Bot Service bereitstellt:- 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
Aktualisieren Sie in der
teamsapp.yml
Datei diebotFramework/create
Aktion während der Bereitstellungsphase. Mit dieser Aktion kann Teams Toolkit eine Botregistrierung mit dem entsprechenden Messagingendpunkt erstellen.Hinweis
Es wird empfohlen, Azure Bot Service für das Channeling zu verwenden. Wenn Sie über kein Azure-Konto verfügen und azure Bot Service nicht erstellen können, können Sie eine Botregistrierung erstellen.
- uses: botFramework/create with: botId: ${{BOT_ID}} name: <Bot display name> messagingEndpoint: https://${{BOT_DOMAIN}}/api/messages description: "" channels: - name: msteams
Sie können die Aktion in
teamsapp.yml
derarm/deploy
Datei entfernen, da wir keine Azure-Ressourcen benötigen.Führen Sie den
provision
Befehl im Teams-Toolkit aus.Suchen Sie nach der
BOT_ID
Bereitstellung in derenv/.env.${envName}
Datei und die verschlüsselteSECRET_BOT_PASSWORD
in derenv/.env.${envName}.user
Datei. So rufen Sie den tatsächlichen Wert von abBOT_PASSWORD
. Wählen Sie die Anmerkung Geheimnis entschlüsseln aus.Um ein Kubernetes-Geheimnis zu erstellen, das und
BOT_PASSWORD
enthältBOT_ID
, speichern Sie das Schlüssel-Wert-Paar in der./deploy/.env.dev-secrets
Datei, und führen Sie den folgenden Befehl aus, um das Geheimnis bereitzustellen:kubectl create secret generic dev-secrets --from-env-file ./deploy/.env.dev-secrets -n $NAMESPACE
Anwenden der Bereitstellung
Das Beispiel enthält eine Bereitstellungsdatei ( deploy/sso-bot.yaml
) als Anleitung.
Aktualisieren Sie die folgenden Platzhalter:
<image>
: Aktualisieren Sie Ihr Image. Beispiel:myacr.azurecr.io/sso-bot:latest
.<hostname>
: Aktualisieren Sie Den eingehenden FQDN.
Führen Sie den folgenden Befehl aus, um anzuwenden
deploy/tab.yaml
:kubectl apply -f deploy/sso-bot.yaml -n $NAMESPACE
Wechseln Sie zu Visual Studio Code.
Wählen Sie im Bereich Ausführen und Debuggen die Option Remotekonfiguration starten aus.
Wählen Sie Debuggen starten (F5) aus, um eine Vorschau der in AKS bereitgestellten Teams-Botanwendung anzuzeigen.
Bereitstellen einer Teams-Registerkarten-App in Kubernetes
AKS dient als verwalteter Containerorchestrierungsdienst, der von Azure angeboten wird. Mit AKS können Sie die Kubernetes-Erfahrung in Azure vollständig verwalten.
Das Bereitstellen einer Teams-Registerkarten-App in AKS ähnelt dem Bereitstellen einer Web-App in AKS. Da eine Teams-Registerkarten-App jedoch eine HTTPS-Verbindung erfordert, müssen Sie eine Domäne besitzen und TLS-Eingang in Ihrem AKS einrichten.
Sie können auch eine Teams-Registerkarten-App in Ihrem persönlichen Kubernetes-Cluster oder einem Kubernetes-Dienst auf verschiedenen Cloudplattformen bereitstellen. Dies umfasst Ähnliche Schritte wie bei der Bereitstellung in Azure Kubernetes Service.
Einrichten des Eingangs mit HTTPS in AKS
Stellen Sie sicher, dass Ihr AKS bereits mit Ihrer Azure Container Registry-Instanz verbunden ist, die Ihre Containerimages hostet. Weitere Informationen finden Sie unter Azure CLI.
Führen Sie den folgenden Befehl aus, um den Eingangscontroller und den Zertifikat-Manager zu installieren:
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
Hinweis
Sie können auch die Anweisungen unter Erstellen eines nicht verwalteten Eingangscontrollers befolgen und TLS mit Let's encrypt certificates verwenden, um Eingangs- und TLS-Zertifikate in Ihrem Kubernetes-Cluster einzurichten.
Führen Sie den folgenden Befehl aus, um das DNS für die öffentliche Eingangs-IP-Adresse zu aktualisieren und den Eingangsendpunkt abzurufen:
> 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
Bereitstellen von Ressourcen mit dem Teams-Toolkit
Sie können den provision
Befehl im Teams-Toolkit verwenden, um eine Teams-App mit Registerkartenfunktion zu erstellen, den Azure Bot Service zu integrieren und die Microsoft Entra-ID für die Authentifizierung hinzuzufügen.
Führen Sie die folgenden Schritte aus, um Ressourcen mit dem Teams-Toolkit bereitzustellen:
Öffnen Sie die Beispiel-App, die Sie zuvor heruntergeladen haben.
Wechseln Sie zur
env/.env.${envName}
Datei, und aktualisieren Sie denTAB_DOMAIN
Wert mit Ihrem FQDN.Wechseln Sie zur
teamsapp.yml
Datei, und entfernen Sie diearm/deploy
Aktion, da keine zusätzlichen Azure-Ressourcen erforderlich sind.Führen Sie den
provision
Befehl im Teams-Toolkit aus.Verwenden Sie das Teams Toolkit, um eine Microsoft Entra-ID zu erstellen, die Sie möglicherweise als Umgebungsvariablen für Ihre Apps festlegen möchten.
Suchen Sie nach der
AAD_APP_CLIENT_ID
Bereitstellung in derenv/.env.${envName}
Datei und die verschlüsselteSECRET_AAD_APP_CLIENT_SECRET
in derenv/.env.${envName}.user
Datei.So rufen Sie den tatsächlichen Wert von ab
SECRET_AAD_APP_CLIENT_SECRET
. Wählen Sie die Anmerkung Geheimnis entschlüsseln aus.
Anwenden der Bereitstellung
Das Beispiel enthält eine Bereitstellungsdatei ( deploy/tab.yaml
) als Referenz.
Aktualisieren Sie die folgenden Platzhalter:
<tab-image>
: Aktualisieren Sie Ihr Image. Beispiel:myacr.azurecr.io/tab:latest
.<api-image>
: Aktualisieren Sie Ihr API-Image. Wenn Sie nicht über eine API verfügen, entfernen Sie denhello-world-api
Dienst, und stellen Sie sie aus der YAML-Datei bereit.<hostname>
: Aktualisieren Sie Den eingehenden FQDN.
Führen Sie den folgenden Befehl aus, um anzuwenden
deploy/tab.yaml
:kubectl apply -f deploy/tab.yaml -n $NAMESPACE
Wechseln Sie zu Visual Studio Code.
Wählen Sie im Bereich Ausführen und Debuggen die Option Remotekonfiguration starten aus.
Wählen Sie Debuggen starten (F5) aus, um eine Vorschau der in AKS bereitgestellten Teams-Botanwendung anzuzeigen.