Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
APLICA-SE A: Programador | Premium
Este artigo fornece as etapas para implantar o componente de gateway auto-hospedado do Gerenciamento de API do Azure em Aplicativos de Contêiner do Azure.
Implante um gateway auto-hospedado em um aplicativo de contêiner para acessar APIs hospedadas no mesmo ambiente de Aplicativos de Contêiner do Azure.
Pré-requisitos
Conclua a instrução de início rápido seguinte: Criar uma instância da Gestão de APIs do Azure.
Para a CLI do Azure:
Use o ambiente Bash na Azure Cloud Shell. Para mais informações, veja Get started with Azure Cloud Shell.
Se preferir executar comandos de referência da CLI localmente, instale o CLI do Azure. Se você estiver executando no Windows ou macOS, considere executar a CLI do Azure em um contêiner do Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.
Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Autenticar no Azure usando a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre extensões, consulte Usar e gerenciar extensões com a CLI do Azure.
Execute az version para descobrir a versão e as bibliotecas dependentes que estão instaladas. Para atualizar para a versão mais recente, execute az upgrade.
Observação
Os exemplos de comando da CLI do Azure neste artigo exigem a extensão da CLI do
containerappAzure. Se você não tiver usadoaz containerappcomandos, a extensão será instalada dinamicamente quando você executar o primeiroaz containerappcomando. Saiba mais sobre as extensões da CLI do Azure.
Provisionar gateway na sua instância de Gestão de API do Azure
Antes de implantar um gateway auto-hospedado, provisione um recurso de gateway em sua instância de Gerenciamento de API do Azure. Para conhecer as etapas, consulte Provisionar um gateway auto-hospedado. Nos exemplos deste artigo, o gateway é chamado my-gateway.
Obter configurações de implantação de gateway do Gerenciamento de API
Para implantar o gateway, precisa dos valores de Token e ponto de extremidade de configuração do gateway. Você pode encontrá-los no portal do Azure:
- Entre no portal do Azure e vá para sua instância de Gerenciamento de API do Azure.
- No menu à esquerda, em Implantação + infraestrutura, selecione Gateways auto-hospedados.
- Selecione o recurso de gateway provisionado e selecione Configurações>de implantação.
- Copie os valores Token e ponto de extremidade de configuração.
Implantar o gateway auto-hospedado em um aplicativo de contêiner
Você pode implantar a imagem de contêiner de gateway auto-hospedado em um aplicativo de contêiner usando o portal do Azure, a CLI do Azure ou outras ferramentas. Este artigo mostra as etapas usando a CLI do Azure.
Criar um ambiente de aplicativos de contêiner
Primeiro, crie um ambiente de aplicativos de contêiner usando o comando az containerapp env create :
#!/bin/bash
az containerapp env create --name my-environment --resource-group myResourceGroup \
--location centralus
Este comando cria:
- Um ambiente de aplicativo de contêiner chamado
my-environmentque você usa para agrupar aplicativos de contêiner. - Um espaço de trabalho de análise de logs
Criar um aplicativo de contêiner para o gateway auto-hospedado
Para implantar o gateway auto-hospedado em um aplicativo de contêiner no ambiente, execute o comando az containerapp create .
Primeiro, defina variáveis para os valores de Token e do ponto de extremidade de configuração do recurso de gateway do Gerenciamento de API do Azure.
#!/bin/bash
endpoint="<API Management configuration endpoint>"
token="<API Management gateway token>"
Crie o aplicativo de contêiner usando o az containerapp create comando:
#!/bin/bash
az containerapp create --name my-gateway \
--resource-group myResourceGroup --environment 'my-environment' \
--image "mcr.microsoft.com/azure-api-management/gateway:2.9.2" \
--target-port 8080 --ingress external \
--min-replicas 1 --max-replicas 3 \
--env-vars "config.service.endpoint"="$endpoint" "config.service.auth"="$token" "net.server.http.forwarded.proto.enabled"="true"
Este comando cria:
Um aplicativo de contêiner nomeado
my-gatewayno grupo de recursosmyResourceGroup. Neste exemplo, o aplicativo contêiner usa amcr.microsoft.com/azure-api-management/gateway:2.9.2imagem. Para obter mais informações sobre o gateway auto-hospedado, consulte imagens de contêiner.Suporte para entrada externa no aplicativo de contêiner na porta 8080.
Um mínimo de 1 e um máximo de 3 réplicas do aplicativo de contêiner.
Uma conexão do gateway auto-hospedado para a instância de Gerenciamento de API do Azure passando valores de configuração em variáveis de ambiente. Para obter detalhes, consulte as definições de configuração do container do gateway autogerido.
Observação
O Ingress de Azure Container Apps encaminha as solicitações HTTPS para o container app do gateway autohospedado como HTTP. Aqui, a
net.server.http.forwarded.proto.enabledvariável de ambiente é definida comotrue, de modo que o gateway auto-hospedado utilize o cabeçalhoX-Forwarded-Protopara determinar o protocolo original da solicitação.
Confirme se o aplicativo contêiner está em execução
Entre no portal do Azure e vá para seu aplicativo de contêiner.
Na página Visão geral do aplicativo contêiner, verifique se o Status está em execução.
Envie um pedido teste para o endpoint de status em
/status-012345678990abcdef. Por exemplo, use umcurlcomando semelhante ao comando a seguir.curl -i https://my-gateway.happyvalley-abcd1234.centralus.azurecontainerapps.io/status-012345678990abcdefUma solicitação bem-sucedida retorna uma
200 OKresposta.
Tip
Usando a CLI, você também pode executar o comando az containerapp show para verificar o status do aplicativo contêiner.
Confirme se o gateway está saudável
Entre no portal do Azure e vá para sua instância de Gerenciamento de API do Azure.
No menu à esquerda, em Implantação + infraestrutura, selecione Gateways auto-hospedados.
Na página Visão geral , verifique o status do gateway. Se o gateway estiver saudável, ele relata batimentos cardíacos regulares do gateway.
Cenário de exemplo
O exemplo a seguir mostra como você pode usar o gateway auto-hospedado para acessar uma API hospedada em um aplicativo de contêiner no mesmo ambiente. Como mostrado no diagrama a seguir, o gateway auto-hospedado pode ser acessado da Internet, enquanto a API só é acessível dentro do ambiente de aplicativos de contêiner.
- Implante um aplicativo de contêiner que hospeda uma API no mesmo ambiente que o gateway auto-hospedado.
- Adicione a API à sua instância de Gerenciamento de API do Azure.
- Chame a API por meio do gateway auto-hospedado.
Implantar um aplicativo de contêiner que hospeda uma API no mesmo ambiente que o gateway auto-hospedado
Neste exemplo, você implanta uma API de álbum de música de exemplo em um aplicativo de contêiner. Para acessar a API posteriormente usando o gateway auto-hospedado, implante a API no mesmo ambiente que o gateway auto-hospedado. Para obter etapas detalhadas e informações sobre os recursos usados neste exemplo, consulte Guia de início rápido: criar e implantar a partir do código-fonte local para Aplicativos de Contêiner do Azure. Seguem-se passos abreviados:
Faça o download do código-fonte Python para sua máquina local. Se preferir, faça o download do código-fonte em outro idioma de sua escolha.
Extraia o código-fonte para uma pasta local e mude para a pasta containerapps-albumapi-python-main/src .
Execute o seguinte comando az containerapp up para implantar a API em um aplicativo de contêiner no mesmo ambiente que o gateway auto-hospedado. Observe o
.no final do comando, que especifica a pasta atual como a origem do aplicativo contêiner.#!/bin/bash az containerapp up --name albums-api \ --resource-group myResourceGroup --location centralus \ --environment my-environment --source .Confirme se o aplicativo contêiner está em execução e acessível externamente no FQDN retornado na saída do comando. Por padrão, a API é acessível no endpoint
/albums. Exemplo:https://albums-api.happyvalley-abcd1234.centralus.azurecontainerapps.io/albums/albums.
Configurar a API para entrada interna
Agora, atualize o aplicativo de contêiner que hospeda a API de exemplo para habilitar a entrada somente no ambiente de contêiner. Essa configuração restringe o acesso à API somente do gateway auto-hospedado que você implantou.
- Entre no portal do Azure e vá para seu aplicativo de contêiner.
- No menu à esquerda, selecione Rede>Ingress.
- Defina Ingress como Enabled.
- Em Tráfego de entrada, selecione Limitado ao ambiente de aplicações de contenedor.
- Revise as configurações restantes e selecione Salvar.
Adicionar a API à sua instância de Gerenciamento de API do Azure
As etapas a seguir mostram como adicionar uma API à sua instância de Gerenciamento de API do Azure e configurar um back-end de API. Para obter mais informações, consulte Adicionar uma API ao Gerenciamento de API do Azure.
Adicionar a API à sua instância de Gerenciamento de API
- No portal do Azure, vá para a instância de Gerenciamento de API onde você configurou o gateway autohospedado.
- No menu à esquerda, selecione APIs>APIs>+ Add API.
- Selecione HTTP e selecione Completo. Insira as seguintes configurações:
- Nome para exibição: insira um nome descritivo. Exemplo: API de álbuns.
-
URL do serviço Web: insira o FQDN interno do aplicativo de contêiner que hospeda a API. Exemplo:
http://albums-api.internal.happyvalley-abcd1234.centralus.azurecontainerapps.io. - Esquema de URL: Selecione HTTP(S).
- Sufixo de URL da API: insira um sufixo de sua escolha. Exemplo: albumapi.
- Gateways: selecione o gateway auto-hospedado que você provisionou. Exemplo: my-gateway.
- Configure outras configurações de API de acordo com seu cenário. Selecione Criar.
Adicionar uma operação de API
- No menu à esquerda, selecione APIs>Albums API.
- Selecione + Adicionar operação.
- Insira as configurações de operação:
- Nome para exibição: insira um nome descritivo para a operação. Exemplo: Obter álbuns.
-
URL: Selecione Get e insira
/albumspara o endpoint. - Selecione Guardar.
Chamar a API por meio do gateway auto-hospedado
Chame a API usando o FQDN do gateway auto-hospedado em execução no aplicativo de contêiner. Localize o FQDN na página Visão geral do aplicativo contêiner no portal do Azure ou execute o seguinte az containerapp show comando.
#!/bin/bash
az containerapp show --name my-gateway --resource-group myResourceGroup \
--query "properties.configuration.ingress.fqdn" --output tsv
Por exemplo, execute o seguinte comando curl para chamar a API no endpoint /albumapi/albums. Se sua API exigir uma chave de assinatura, passe uma chave de assinatura válida para sua instância de Gerenciamento de API como um cabeçalho na solicitação:
curl -i https://my-gateway.happyvalley-abcd1234.centralus.azurecontainerapps.io/albumapi/albums -H "Ocp-Apim-Subscription-Key: <subscription-key>"
Quando o teste é bem-sucedido, o back-end responde com um código de resposta HTTP bem-sucedido e alguns dados.
HTTP/1.1 200 OK
content-length: 751
content-type: application/json
date: Wed, 28 Feb 2024 22:45:09 GMT
[...]
[{"id":1,"title":"You, Me and an App Id","artist":"Daprize","price":10.99,"image_url":"https://aka.ms/albums-daprlogo"},{"id":2,"title":"Seven Revision Army","artist":"The Blue-Green Stripes","price":13.99,"image_url":"https://aka.ms/albums-containerappslogo"},{"id":3,"title":"Scale It Up","artist":"KEDA Club","price":13.99,"image_url":"https://aka.ms/albums-kedalogo"},{"id":4,"title":"Lost in Translation","artist":"MegaDNS","price":12.99,"image_url":"https://aka.ms/albums-envoylogo"},{"id":5,"title":"Lock Down Your Love","artist":"V is for VNET","price":12.99,"image_url":"https://aka.ms/albums-vnetlogo"},{"id":6,"title":"Sweet Container O' Mine","artist":"Guns N Probeses","price":14.99,"image_url":"https://aka.ms/albums-containerappslogo"}]
Tip
Se habilitar logging para a sua API no Application Insights, poderá consultar os logs para ver as solicitações e respostas.
Limitações
As instâncias de gateway auto-hospedadas dependem do protocolo UDP para comunicações de pulsação e limite de taxa. Como os Aplicativos de Contêiner do Azure atualmente não dão suporte ao protocolo UDP, nem para entrada nem para tráfego interno, a rate-limit política não pode sincronizar seu contador entre instâncias. Consequentemente, a manutenção de três réplicas de uma aplicação de contêiner de gateway autohospedado com o limite X pode resultar em três vezes mais tráfego até que o limite X seja atingido.
Os Azure Container Apps distribuem solicitações linearmente por cada réplica disponível e saudável. Para implementar o limite de taxa, você pode dividir o limite desejado pelo número de réplicas que deseja executar e definir o valor resultante na configuração. Essa abordagem tem suas próprias desvantagens, pois você pode não ser capaz de contabilizar contadores ajustados se e quando seus aplicativos de contêiner forem dimensionados.