Implementar a aplicação Teams no serviço de contentor
Pode implementar um bot ou uma aplicação de separador do Teams num Azure Container Apps, no Azure Kubernetes Service (AKS) ou no Cluster do Kubernetes no local.
Pré-requisitos
Transfira o bot do Teams de exemplo ou a aplicação de separador teams de exemplo, que oferece uma experiência pronta a utilizar para o desenvolvimento do Azure Container Apps. Pode fazer algumas alterações de configuração e implementá-las no AKS ou num Cluster do Kubernetes no local.
Antes de começar, certifique-se de que tem as seguintes ferramentas:
Uma conta do Azure.
Interfaces de Linha de Comandos (CLI) do Azure para a implementação do Azure Container Apps ou do AKS.
Observação
Os comandos no artigo baseiam-se no Git Bash. Se estiver a utilizar outra interface, atualize os comandos conforme necessário.
Implementar no Azure Container Apps
O Azure Container Apps é um serviço totalmente gerido que lhe permite executar aplicações em contentores na cloud. É a escolha ideal se não precisar de acesso direto a todas as APIs nativas do Kubernetes e à gestão de clusters e preferir uma experiência totalmente gerida com base nas melhores práticas.
Com a ajuda de aplicações de exemplo, pode executar os comandos de aprovisionamento e implementação no Teams Toolkit. O Teams Toolkit cria um Azure Container Registry e o Azure Container Apps para si, constrói a sua aplicação numa imagem de contentor e implementa-a no Azure Container Apps.
O provision
comando cria e configura os seguintes recursos:
- Uma aplicação do Teams com capacidade de separador ou bot.
- Um Azure Container Registry para alojar a sua imagem de contentor.
- Um ambiente da Aplicação de Contentor do Azure e um Azure Container Apps para alojar a sua aplicação.
- Uma Aplicação Microsoft Entra para autenticação.
No bot do Teams de exemplo, o provision
comando também cria um Azure Bot Service para canalizar o cliente do Teams e o Azure Container Apps.
O deploy
comando executa as seguintes ações:
- Cria a aplicação numa imagem de contentor.
- Envia a imagem de contentor para o Azure Container Registry.
- Implementa a imagem no Azure Container Apps.
Implementar o bot do Teams no Azure Kubernetes Service
O AKS é um serviço de orquestração de contentores gerido fornecido pelo Azure. Com o AKS, pode gerir totalmente a experiência do Kubernetes no Azure.
Arquitetura
O servidor de back-end do Teams interage com o bot através do Azure Bot Service. Este serviço requer que o bot esteja acessível através de um ponto final HTTPS público. Para configurar, implemente um controlador de entrada no cluster do Kubernetes e proteja-o com um certificado TLS.
Pode utilizar o Microsoft Entra ID para autenticar o bot com o Azure Bot Service. Crie um segredo do Kubernetes que inclua o ID da aplicação e a palavra-passe e integre o segredo na configuração do runtime do contentor.
Configurar a entrada com HTTPS no AKS
Certifique-se de que o AKS está ligado ao Azure Container Registry, que aloja as imagens de contentor. Para obter mais informações, veja Utilizar a CLI do Azure.
Execute o seguinte comando para instalar o controlador de entrada e o gestor de certificados:
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
Observação
Também pode seguir as instruções disponíveis para criar um controlador de entrada não gerido e utilizar o TLS com a opção Encriptar certificados para configurar certificados de entrada e TLS no cluster do Kubernetes.
Execute o seguinte comando para atualizar o DNS para o IP público de entrada e obter o ponto final de entrada:
> 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
Aprovisionar recursos com o Teams Toolkit
Pode utilizar o provision
comando no Teams Toolkit para criar uma aplicação do Teams com capacidade de bot, incorporar o Azure Bot Service e adicionar o ID do Microsoft Entra para autenticação.
Para aprovisionar recursos com o Teams Toolkit, siga estes passos:
Abra a aplicação de exemplo que transferiu anteriormente.
Aceda ao
env/.env.${envName}
ficheiro e atualize o valor com oBOT_DOMAIN
FQDN.Aceda ao
teamsapp.yml
ficheiro e atualize a seguintearm/deploy
ação para garantir que o Teams Toolkit aprovisiona um Azure Bot Service durante a execução doprovision
comando:- 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
Execute o
provision
comando no Teams Toolkit.Após o aprovisionamento, localize o
BOT_ID
ficheiro emenv/.env.${envName}
e o encriptadoSECRET_BOT_PASSWORD
noenv/.env.${envName}.user
ficheiro. Para obter o valor real deBOT_PASSWORD
. Selecione a anotação Desencriptar segredo.Para criar um segredo do Kubernetes que contém e
BOT_PASSWORD
, guarde o par de valoresBOT_ID
de chave no./deploy/.env.dev-secrets
ficheiro e execute o seguinte comando para aprovisionar o segredo:kubectl create secret generic dev-secrets --from-env-file ./deploy/.env.dev-secrets -n $NAMESPACE
Aplicar a implementação
O exemplo inclui um ficheiro de implementação, deploy/sso-bot.yaml
, para referência.
Atualize os seguintes marcadores de posição:
<image>
: atualize a sua imagem. Por exemplo,myacr.azurecr.io/sso-bot:latest
.<hostname>
: atualize o FQDN de entrada.
Para aplicar
deploy/tab.yaml
, execute o seguinte comando:kubectl apply -f deploy/sso-bot.yaml -n $NAMESPACE
Aceda ao Visual Studio Code.
No painel Executar e Depurar , selecione Iniciar Configuração remota .
Para pré-visualizar a aplicação de bot do Teams implementada no AKS, selecione Iniciar Depuração (F5).
Implementar um bot do Teams num Cluster do Kubernetes no local
Pode implementar um bot do Teams no seu cluster pessoal do Kubernetes ou num serviço Kubernetes a partir de diferentes serviços cloud ao seguir passos semelhantes que são utilizados para implementar o bot do Teams no AKS.
Arquitetura
O servidor de back-end do Teams interage com o bot através do Azure Bot Service. Este serviço requer que o bot esteja acessível através de um ponto final HTTPS público. Para configurar, implemente um controlador de entrada no cluster do Kubernetes e proteja-o com um certificado TLS.
Pode utilizar o Microsoft Entra ID para autenticar o bot com o Azure Bot Service. Crie um segredo do Kubernetes que inclua o ID da aplicação e a palavra-passe e integre o segredo na configuração do runtime do contentor.
Aprovisionar recursos com o Teams Toolkit
Pode utilizar o provision
comando no Teams Toolkit para criar uma aplicação do Teams com capacidade de bot, incorporar o Azure Bot Service e adicionar o ID do Microsoft Entra para autenticação.
Para aprovisionar recursos com o Teams Toolkit, siga estes passos:
Abra a aplicação de exemplo que transferiu anteriormente.
Aceda ao
env/.env.${envName}
ficheiro e atualize o valor com oBOT_DOMAIN
FQDN.Aceda ao
teamsapp.yml
ficheiro e atualize a seguintearm/deploy
ação para garantir que o Teams Toolkit aprovisiona um Azure Bot Service durante a execução doprovision
comando:- 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
teamsapp.yml
No ficheiro, atualize a açãobotFramework/create
durante a fase de aprovisionamento. Esta ação permite ao Teams Toolkit criar um registo de bot com o ponto final de mensagens adequado.Observação
Recomendamos que utilize o Azure Bot Service para a canalização. Se não tiver uma conta do Azure e não conseguir criar o Azure Bot Service, pode criar um registo de bot.
- uses: botFramework/create with: botId: ${{BOT_ID}} name: <Bot display name> messagingEndpoint: https://${{BOT_DOMAIN}}/api/messages description: "" channels: - name: msteams
Pode remover a ação
arm/deploy
noteamsapp.yml
ficheiro, uma vez que não precisamos de recursos do Azure.Execute o
provision
comando no Teams Toolkit.Após o aprovisionamento, localize o
BOT_ID
env/.env.${envName}
no ficheiro e o encriptadoSECRET_BOT_PASSWORD
noenv/.env.${envName}.user
ficheiro. Para obter o valor real deBOT_PASSWORD
. Selecione a anotação Desencriptar segredo.Para criar um segredo do Kubernetes que contém e
BOT_PASSWORD
, guarde o par de valoresBOT_ID
de chave no./deploy/.env.dev-secrets
ficheiro e execute o seguinte comando para aprovisionar o segredo:kubectl create secret generic dev-secrets --from-env-file ./deploy/.env.dev-secrets -n $NAMESPACE
Aplicar a implementação
O exemplo inclui um ficheiro de implementação, deploy/sso-bot.yaml
, para a sua documentação de orientação.
Atualize os seguintes marcadores de posição:
<image>
: atualize a sua imagem. Por exemplo,myacr.azurecr.io/sso-bot:latest
.<hostname>
: atualize o FQDN de entrada.
Para aplicar
deploy/tab.yaml
, execute o seguinte comando:kubectl apply -f deploy/sso-bot.yaml -n $NAMESPACE
Aceda ao Visual Studio Code.
No painel Executar e Depurar , selecione Iniciar Configuração remota .
Para pré-visualizar a aplicação de bot do Teams implementada no AKS, selecione Iniciar Depuração (F5).
Implementar a aplicação de separador Teams no Kubernetes
O AKS serve como um serviço de orquestração de contentores gerido oferecido pelo Azure. Com o AKS, pode gerir totalmente a experiência do Kubernetes no Azure.
Implementar uma aplicação de separador do Teams no AKS é semelhante à implementação de uma aplicação Web no AKS. No entanto, uma vez que uma aplicação de separador do Teams requer uma ligação HTTPS, tem de possuir um domínio e configurar a entrada TLS no AKS.
Também pode implementar uma aplicação de separador do Teams no seu cluster pessoal do Kubernetes ou num serviço Kubernetes em diferentes plataformas na cloud. Isto envolve passos semelhantes aos utilizados ao implementar no Azure Kubernetes Service.
Configurar a entrada com HTTPS no AKS
Certifique-se de que o AKS já está ligado ao Azure Container Registry, que aloja as imagens de contentor. Para obter mais informações, veja CLI do Azure.
Execute o seguinte comando para instalar o controlador de entrada e o gestor de certificados:
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
Observação
Também pode seguir as instruções disponíveis para criar um controlador de entrada não gerido e utilizar o TLS com a opção Encriptar certificados para configurar certificados de entrada e TLS no cluster do Kubernetes.
Execute o seguinte comando para atualizar o DNS para o IP público de entrada e obter o ponto final de entrada:
> 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
Aprovisionar recursos com o Teams Toolkit
Pode utilizar o provision
comando no Teams Toolkit para criar uma aplicação do Teams com capacidade de separador, incorporar o Azure Bot Service e adicionar o Microsoft Entra ID para autenticação.
Para aprovisionar recursos com o Teams Toolkit, siga estes passos:
Abra a aplicação de exemplo que transferiu anteriormente.
Aceda ao
env/.env.${envName}
ficheiro e atualize o valor com oTAB_DOMAIN
FQDN.Aceda ao
teamsapp.yml
ficheiro e remova a açãoarm/deploy
, uma vez que não são necessários recursos adicionais do Azure.Execute o
provision
comando no Teams Toolkit.Utilize o Toolkit do Teams para criar um ID do Microsoft Entra, que poderá querer definir como variáveis de ambiente de aplicações.
Após o aprovisionamento, localize o
AAD_APP_CLIENT_ID
env/.env.${envName}
no ficheiro e o encriptadoSECRET_AAD_APP_CLIENT_SECRET
noenv/.env.${envName}.user
ficheiro.Para obter o valor real de
SECRET_AAD_APP_CLIENT_SECRET
. Selecione a anotação Desencriptar segredo.
Aplicar a implementação
O exemplo inclui um ficheiro de implementação, deploy/tab.yaml
, para referência.
Atualize os seguintes marcadores de posição:
<tab-image>
: atualize a sua imagem. Por exemplo,myacr.azurecr.io/tab:latest
.<api-image>
: atualize a imagem da API. Se não tiver uma API, remova ohello-world-api
serviço e implemente a partir do ficheiro yaml.<hostname>
: atualize o FQDN de entrada.
Para aplicar
deploy/tab.yaml
, execute o seguinte comando:kubectl apply -f deploy/tab.yaml -n $NAMESPACE
Aceda ao Visual Studio Code.
No painel Executar e Depurar , selecione Iniciar Configuração remota .
Para pré-visualizar a aplicação de bot do Teams implementada no AKS, selecione Iniciar Depuração (F5).