Implantar um gateway auto-hospedado do Gerenciamento de API do Azure em Aplicativos de Contêiner do Azure
APLICA-SE A: Developer | Prémio
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 o guia de início rápido seguinte: Criar uma instância da Gestão de API do Azure.
Para a CLI do Azure:
Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, consulte Guia de início rápido para Bash no Azure Cloud Shell.
Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor 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 Entrar com a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.
Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.
Nota
Os exemplos de comando da CLI do Azure neste artigo exigem a extensão da CLI do
containerapp
Azure. Se você não tiver usadoaz containerapp
comandos, a extensão será instalada dinamicamente quando você executar o primeiroaz containerapp
comando. Saiba mais sobre as extensões da CLI do Azure.
Provisionar gateway em sua instância de Gerenciamento de API
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, você precisa dos valores de ponto de extremidade de Token e Configuração do gateway. Você pode encontrá-los no portal do Azure:
- Entre no portal do Azure e navegue até sua instância de Gerenciamento de API.
- No menu à esquerda, em Implantação e infraestrutura, selecione Gateways.
- Selecione o recurso de gateway provisionado e selecione Implantação.
- Copie os valores do ponto de extremidade Token e Configuration.
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-environment
que você usa para agrupar aplicativos de contêiner. - Um espaço de trabalho de análise de log
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 ponto de extremidade de Token e Configuração do recurso de gateway de Gerenciamento de API.
#!/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.5.0" \
--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-gateway
no grupo demyResourceGroup
recursos. Neste exemplo, o aplicativo de contêiner é criado usando amcr.microsoft.com/azure-api-management/gateway:2.5.0
imagem. Saiba mais sobre as imagens de contêiner de gateway auto-hospedadas.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 usando valores de configuração passados em variáveis de ambiente. Para obter detalhes, consulte as definições de configuração do contêiner de gateway auto-hospedado.
Nota
A entrada de Aplicativos de Contêiner do Azure encaminha solicitações HTTPS para o aplicativo de contêiner de gateway autohospedado como HTTP. Aqui, a
net.server.http.forwarded.proto.enabled
variável de ambiente é definida paratrue
que o gateway auto-hospedado use oX-Forwarded-Proto
cabeçalho para determinar o protocolo original da solicitação.
Confirme se o aplicativo contêiner está em execução
Entre no portal do Azure e navegue até seu aplicativo de contêiner.
Na página Visão geral do aplicativo contêiner, verifique se o Status está em execução.
Envie uma solicitação de teste para o ponto de extremidade de status em
/status-012345678990abcdef
. Por exemplo, use umcurl
comando semelhante ao seguinte.curl -i https://my-gateway.happyvalley-abcd1234.centralus.azurecontainerapps.io/status-012345678990abcdef
Uma solicitação bem-sucedida retorna uma
200 OK
resposta.
Gorjeta
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á íntegro
Entre no portal do Azure e navegue até sua instância de Gerenciamento de API.
No menu à esquerda, em Implantação e infraestrutura, selecione Gateways.
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.
- Implantar um aplicativo de contêiner que hospeda uma API no mesmo ambiente que o gateway auto-hospedado
- Adicionar a API à sua instância de Gerenciamento de API
- Chamar 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
Por exemplo, implante uma API de álbum de música de exemplo em um aplicativo de contêiner. Para acesso posterior à API 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
/albums
API é acessível no ponto de extremidade. 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 navegue até seu aplicativo de contêiner.
- No menu à esquerda, selecione Ingressar.
- Defina Ingress como Enabled.
- Em Tráfego de entrada, selecione Limitado ao ambiente de aplicativos de contêiner.
- Revise as configurações restantes e selecione Salvar.
Adicionar a API à sua instância de Gerenciamento de API
A seguir estão exemplos de etapas para adicionar uma API à sua instância de Gerenciamento de API 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, navegue até a instância de Gerenciamento de API onde você configurou o gateway auto-hospedado.
- No menu à esquerda, selecione 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 Obter e insira
/albums
para o ponto de extremidade. - 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 curl
comando para chamar a API no ponto de /albumapi/albums
extremidade. 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"}]
Gorjeta
Se você habilitou o registro de sua API para Informações do aplicativo, poderá consultar os logs para ver as solicitações e respostas.