Compartilhar via


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

Captura de ecrã a mostrar o bot do Teams para a arquitetura do Azure Kubernetes Service.

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

  1. 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.

  2. 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.

  3. 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:

  1. Abra a aplicação de exemplo que transferiu anteriormente.

  2. Aceda ao env/.env.${envName} ficheiro e atualize o valor com o BOT_DOMAIN FQDN.

  3. Aceda ao teamsapp.yml ficheiro e atualize a seguinte arm/deploy ação para garantir que o Teams Toolkit aprovisiona um Azure Bot Service durante a execução do provision 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
    
  4. Execute o provision comando no Teams Toolkit.

  5. Após o aprovisionamento, localize o BOT_ID ficheiro em env/.env.${envName} e o encriptado SECRET_BOT_PASSWORD no env/.env.${envName}.user ficheiro. Para obter o valor real de BOT_PASSWORD. Selecione a anotação Desencriptar segredo.

  6. Para criar um segredo do Kubernetes que contém e BOT_PASSWORD, guarde o par de valores BOT_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.

  1. Atualize os seguintes marcadores de posição:

    1. <image>: atualize a sua imagem. Por exemplo, myacr.azurecr.io/sso-bot:latest.

    2. <hostname>: atualize o FQDN de entrada.

  2. Para aplicar deploy/tab.yaml, execute o seguinte comando:

    kubectl apply -f deploy/sso-bot.yaml -n $NAMESPACE
    
  3. Aceda ao Visual Studio Code.

  4. No painel Executar e Depurar , selecione Iniciar Configuração remota .

  5. 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

Captura de ecrã a mostrar a arquitetura do cluster kubernetes no local.

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:

  1. Abra a aplicação de exemplo que transferiu anteriormente.

  2. Aceda ao env/.env.${envName} ficheiro e atualize o valor com o BOT_DOMAIN FQDN.

  3. Aceda ao teamsapp.yml ficheiro e atualize a seguinte arm/deploy ação para garantir que o Teams Toolkit aprovisiona um Azure Bot Service durante a execução do provision 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
    
  4. teamsapp.yml No ficheiro, atualize a ação botFramework/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 no teamsapp.yml ficheiro, uma vez que não precisamos de recursos do Azure.

  5. Execute o provision comando no Teams Toolkit.

  6. Após o aprovisionamento, localize o BOT_IDenv/.env.${envName} no ficheiro e o encriptado SECRET_BOT_PASSWORD no env/.env.${envName}.user ficheiro. Para obter o valor real de BOT_PASSWORD. Selecione a anotação Desencriptar segredo.

  7. Para criar um segredo do Kubernetes que contém e BOT_PASSWORD, guarde o par de valores BOT_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.

  1. Atualize os seguintes marcadores de posição:

    1. <image>: atualize a sua imagem. Por exemplo, myacr.azurecr.io/sso-bot:latest.

    2. <hostname>: atualize o FQDN de entrada.

  2. Para aplicar deploy/tab.yaml, execute o seguinte comando:

    kubectl apply -f deploy/sso-bot.yaml -n $NAMESPACE
    
  3. Aceda ao Visual Studio Code.

  4. No painel Executar e Depurar , selecione Iniciar Configuração remota .

  5. 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

  1. 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.

  2. 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.

  3. 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:

  1. Abra a aplicação de exemplo que transferiu anteriormente.

  2. Aceda ao env/.env.${envName} ficheiro e atualize o valor com o TAB_DOMAIN FQDN.

  3. Aceda ao teamsapp.yml ficheiro e remova a ação arm/deploy , uma vez que não são necessários recursos adicionais do Azure.

  4. Execute o provision comando no Teams Toolkit.

  5. Utilize o Toolkit do Teams para criar um ID do Microsoft Entra, que poderá querer definir como variáveis de ambiente de aplicações.

  6. Após o aprovisionamento, localize o AAD_APP_CLIENT_IDenv/.env.${envName} no ficheiro e o encriptado SECRET_AAD_APP_CLIENT_SECRET no env/.env.${envName}.user ficheiro.

  7. 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.

  1. Atualize os seguintes marcadores de posição:

    1. <tab-image>: atualize a sua imagem. Por exemplo, myacr.azurecr.io/tab:latest.

    2. <api-image>: atualize a imagem da API. Se não tiver uma API, remova o hello-world-apiserviço e implemente a partir do ficheiro yaml.

    3. <hostname>: atualize o FQDN de entrada.

  2. Para aplicar deploy/tab.yaml, execute o seguinte comando:

    kubectl apply -f deploy/tab.yaml -n $NAMESPACE
    
  3. Aceda ao Visual Studio Code.

  4. No painel Executar e Depurar , selecione Iniciar Configuração remota .

  5. Para pré-visualizar a aplicação de bot do Teams implementada no AKS, selecione Iniciar Depuração (F5).