Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
APLICA-SE A: Desenvolvedor | Premium
Este artigo fornece as etapas para implantar o componente de gateway auto-hospedado do Gerenciamento de API do Azure nos 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 o seguinte guia de início rápido: Criar uma instância do Gerenciamento de API do Azure.
Para a CLI do Azure:
Utilize o ambiente Bash no Azure Cloud Shell. Para obter mais informações, confira Introdução ao Azure Cloud Shell.
Se você preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se você estiver executando no Windows ou no macOS, considere executar a CLI do Azure em um contêiner do Docker. Para obter mais informações, confira Como executar a CLI do Azure em um contêiner do Docker.
Se você estiver usando uma instalação local, entre na CLI do Azure usando o comando az login . Para concluir o processo de autenticação, siga as etapas exibidas em seu terminal. Para obter outras opções de entrada, consulte Autenticar no Azure usando a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure no primeiro uso. Para obter mais informações sobre extensões, confira Usar e gerenciar extensões com a CLI do Azure.
Execute o comando az version para localizar 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 CLI Azure
containerapp. Se você não tiver usadoaz containerappcomandos, a extensão será instalada dinamicamente quando você executar seu primeiroaz containerappcomando. Saiba mais sobre as extensões da CLI do Azure.
Provisionar um gateway na sua instância do Gerenciamento 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 ver as etapas, consulte Provisionar um gateway autohospedado. Nos exemplos deste artigo, o gateway é nomeado my-gateway.
Obter configurações de implantação de gateway do Gerenciamento de API
Para implantar o gateway, você precisa dos valores de token e de ponto de extremidade de configuração do gateway. Você pode encontrá-los no portal do Azure:
- Entre no portal do Azure e acesse sua instância de Gerenciamento de API do Azure.
- No menu à esquerda, em Implantação + infraestrutura, selecione gateways autogerenciados.
- Selecione o recurso de gateway que você provisionou e selecione Configurações>Implantação.
- Copie os valores do token e do 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-hospedada 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 workspace do Log Analytics
Criar um aplicativo de contêiner para o gateway hospedado localmente
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 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 denominado contêiner
my-gatewayno grupo de recursosmyResourceGroup. Neste exemplo, o aplicativo de 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 para o 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 à instância de Gerenciamento de API do Azure, passando valores de configuração em variáveis de ambiente. Para obter detalhes, confira as configurações de contêiner de gateway auto-hospedado.
Observação
A entrada dos Aplicativos de Contêiner do Azure encaminha solicitações HTTPS para o aplicativo de contêiner de gateway auto-hospedado como HTTP. Aqui, a variável de ambiente
net.server.http.forwarded.proto.enabledé definida paratruepara que o gateway auto-hospedado use o cabeçalhoX-Forwarded-Protopara determinar o protocolo original da solicitação.
Confirme se o aplicativo de contêiner está em execução
Entre no portal do Azure e acesse seu aplicativo de contêiner.
Na página Visão geral do aplicativo de contêiner, verifique se o Status está em execução.
Enviar uma solicitação de teste para o ponto de extremidade 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.
Dica
Usando a CLI, você também pode executar o comando az containerapp show para verificar o status do aplicativo de contêiner.
Confirme se o gateway está funcionando corretamente
Entre no portal do Azure e acesse sua instância de Gerenciamento de API do Azure.
No menu à esquerda, em Implantação + infraestrutura, selecione gateways autogerenciados.
Na página Visão geral , verifique o Status do gateway. Se o gateway estiver íntegro, ele relatará pulsações 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. Conforme mostrado no diagrama a seguir, o gateway auto-hospedado pode ser acessado pela Internet, enquanto a API só pode ser acessada no 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 à 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 Início Rápido: Compilar e implantar do código-fonte local nos Aplicativos de Contêiner do Azure. As etapas abreviadas seguem:
Baixe o código-fonte do Python no computador local. Se preferir, baixe o código-fonte em outro idioma de sua escolha.
Extraia o código-fonte para uma pasta local e altere para a pasta containerapps-albumapi-python-main/src .
Execute o comando az containerapp up a seguir para implantar a API em um aplicativo de contêiner no mesmo ambiente que o gateway auto-hospedado. Observe que no final do comando
., especifica-se a pasta atual como a origem do aplicativo de contêiner.#!/bin/bash az containerapp up --name albums-api \ --resource-group myResourceGroup --location centralus \ --environment my-environment --source .Confirme se o aplicativo de contêiner está em execução e acessível externamente no FQDN retornado na saída do comando. Por padrão, a API está acessível na
/albumsendpoint. 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 acesse seu aplicativo de contêiner.
- No menu à esquerda, selecione Rede>Ingress.
- Defina a entrada como Habilitada.
- Em Tráfego de entrada, selecione Limitado a ambiente de Aplicativos de Contêiner.
- Examine as configurações restantes e selecione Salvar.
Adicionar a API à instância de Gerenciamento de API do Azure
As etapas a seguir mostram como adicionar uma API à instância do 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 à instância de Gerenciamento de API
- No portal do Azure, vá para a instância de Gerenciamento de API em que você configurou o gateway auto-hospedado.
- No menu à esquerda, selecione APIs>APIs>+ Adicionar API.
- Selecione HTTP e selecione Completo. Insira as seguintes configurações:
- Nome de 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.
- Defina outras configurações de API de acordo com seu cenário. Selecione Criar.
Adicionar uma operação de API
- No menu à esquerda, selecioneAPIs>a API de Álbuns.
- Selecione + Adicionar operação.
- Insira as configurações de operação:
- Nome de exibição: insira um nome descritivo para a operação. Exemplo: Obter álbuns.
-
URL: Selecione GET e insira
/albumspara o endpoint. - Clique em Salvar.
Chame a API através 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 de contêiner no portal do Azure ou execute o comando a seguir az containerapp show .
#!/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 a 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"}]
Dica
Se você habilitar o log da 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 limitação 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, manter três réplicas de um aplicativo de contêiner de gateway autogerenciado com limite X pode resultar em um tráfego três vezes maior até que o limite X seja atingido.
Os Aplicativos de Contêiner do Azure distribuem solicitações linearmente em cada réplica disponível e íntegra. Para implementar a limitação 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 limitações, pois talvez não seja possível contabilizar contadores ajustados se, e quando, seus aplicativos de contêiner forem escalados.