Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.
- Stellen Sie bei der Bereitstellung in einem Containerdienst sicher, dass Sie die erforderlichen Umgebungsvariablen konfigurieren, wie unter Konfigurieren der Authentifizierung in einem JavaScript-Agent beschrieben.
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.
Mit Hilfe von Beispielanwendungen können Sie die Bereitstellungs- und Bereitstellungsbefehle im Microsoft 365 Agents Toolkit (früher als Teams-Toolkit bezeichnet) ausführen. Das Agents-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 eine 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 Ihrem Azure Container Registry verbunden ist, der 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"=linuxHinweis
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 Agents-Toolkit
Sie können den provision Befehl im Agents Toolkit verwenden, um eine Teams-App mit Botfunktion zu erstellen, die 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 Agents Toolkit bereitzustellen:
Öffnen Sie die Beispiel-App, die Sie zuvor heruntergeladen haben.
Wechseln Sie zur
env/.env.${envName}Datei, und aktualisieren Sie denBOT_DOMAINWert mit Ihrem FQDN.Wechseln Sie zur
m365agents.ymlDatei, und aktualisieren Sie die folgendearm/deployAktion, um sicherzustellen, dass das Agents-Toolkit während der Ausführung desprovisionBefehls eine 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.1Führen Sie den
provisionBefehl im Agents Toolkit aus.Suchen Sie nach der Bereitstellung in
env/.env.${envName}derBOT_IDDatei und die verschlüsselteSECRET_BOT_PASSWORDdateienv/.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_PASSWORDenthältBOT_ID, speichern Sie das Schlüssel-Wert-Paar in der./deploy/.env.dev-secretsDatei, 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 $NAMESPACEWechseln 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 Agents-Toolkit
Sie können den provision Befehl im Agents Toolkit verwenden, um eine Teams-App mit Botfunktion zu erstellen, die 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 Agents Toolkit bereitzustellen:
Öffnen Sie die Beispiel-App, die Sie zuvor heruntergeladen haben.
Wechseln Sie zur
env/.env.${envName}Datei, und aktualisieren Sie denBOT_DOMAINWert mit Ihrem FQDN.Wechseln Sie zur
m365agents.ymlDatei, und aktualisieren Sie die folgendearm/deployAktion, um sicherzustellen, dass das Agents-Toolkit während der Ausführung desprovisionBefehls eine 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.1Aktualisieren Sie in der
m365agents.ymlDatei diebotFramework/createAktion während der Bereitstellungsphase. Durch diese Aktion kann das Agents Toolkit eine Botregistrierung mit dem entsprechenden Messagingendpunkt erstellen.Hinweis
Es wird empfohlen, Azure Bot Service für die Kanalerstellung 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: msteamsSie können die Aktion in
m365agents.ymlderarm/deployDatei entfernen, da wir keine Azure-Ressourcen benötigen.Führen Sie den
provisionBefehl im Agents Toolkit aus.Suchen Sie nach der
BOT_IDBereitstellung in derenv/.env.${envName}Datei und die verschlüsselteSECRET_BOT_PASSWORDin derenv/.env.${envName}.userDatei. 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_PASSWORDenthältBOT_ID, speichern Sie das Schlüssel-Wert-Paar in der./deploy/.env.dev-secretsDatei, 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 $NAMESPACEWechseln 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 auf Azure Kubernetes Service.
Einrichten des Eingangs mit HTTPS in AKS
Stellen Sie sicher, dass Ihr AKS bereits mit Ihrem Azure Container Registry verbunden ist, der 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"=linuxHinweis
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 Agents-Toolkit
Sie können den provision Befehl im Agents Toolkit verwenden, um eine Teams-App mit Registerkartenfunktion zu erstellen, die 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 Agents Toolkit bereitzustellen:
Öffnen Sie die Beispiel-App, die Sie zuvor heruntergeladen haben.
Wechseln Sie zur
env/.env.${envName}Datei, und aktualisieren Sie denTAB_DOMAINWert mit Ihrem FQDN.Wechseln Sie zur
m365agents.ymlDatei, und entfernen Sie diearm/deployAktion, da keine zusätzlichen Azure-Ressourcen erforderlich sind.Führen Sie den
provisionBefehl im Agents Toolkit aus.Verwenden Sie das Agents 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_IDBereitstellung in derenv/.env.${envName}Datei und die verschlüsselteSECRET_AAD_APP_CLIENT_SECRETin derenv/.env.${envName}.userDatei.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-apiDienst, 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 $NAMESPACEWechseln 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.