Partilhar via


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 usado az containerapp comandos, a extensão será instalada dinamicamente quando você executar o primeiro az 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:

  1. Entre no portal do Azure e navegue até sua instância de Gerenciamento de API.
  2. No menu à esquerda, em Implantação e infraestrutura, selecione Gateways.
  3. Selecione o recurso de gateway provisionado e selecione Implantação.
  4. 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 de myResourceGroup recursos. Neste exemplo, o aplicativo de contêiner é criado usando a mcr.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 para true que o gateway auto-hospedado use o X-Forwarded-Proto cabeçalho para determinar o protocolo original da solicitação.

Confirme se o aplicativo contêiner está em execução

  1. Entre no portal do Azure e navegue até seu aplicativo de contêiner.

  2. Na página Visão geral do aplicativo contêiner, verifique se o Status está em execução.

  3. Envie uma solicitação de teste para o ponto de extremidade de status em /status-012345678990abcdef. Por exemplo, use um curl 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

  1. Entre no portal do Azure e navegue até sua instância de Gerenciamento de API.

  2. No menu à esquerda, em Implantação e infraestrutura, selecione Gateways.

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

    Captura de tela do status do gateway no portal.

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.

Diagrama de cenário de exemplo com gateway auto-hospedado.

  1. Implantar um aplicativo de contêiner que hospeda uma API no mesmo ambiente que o gateway auto-hospedado
  2. Adicionar a API à sua instância de Gerenciamento de API
  3. 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:

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

  2. Extraia o código-fonte para uma pasta local e mude para a pasta containerapps-albumapi-python-main/src .

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

  1. Entre no portal do Azure e navegue até seu aplicativo de contêiner.
  2. No menu à esquerda, selecione Ingressar.
  3. Defina Ingress como Enabled.
  4. Em Tráfego de entrada, selecione Limitado ao ambiente de aplicativos de contêiner.
  5. 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

  1. No portal, navegue até a instância de Gerenciamento de API onde você configurou o gateway auto-hospedado.
  2. No menu à esquerda, selecione APIs>+ Add API.
  3. Selecione HTTP e selecione Completo. Insira as seguintes configurações:
    1. Nome para exibição: insira um nome descritivo. Exemplo: API de álbuns.
    2. 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.
    3. Esquema de URL: Selecione HTTP(S).
    4. Sufixo de URL da API: insira um sufixo de sua escolha. Exemplo: albumapi.
    5. Gateways: selecione o gateway auto-hospedado que você provisionou. Exemplo: my-gateway.
  4. Configure outras configurações de API de acordo com seu cenário. Selecione Criar.

Adicionar uma operação de API

  1. No menu à esquerda, selecione APIs>Albums API.
  2. Selecione + Adicionar operação.
  3. Insira as configurações de operação:
    1. Nome para exibição: insira um nome descritivo para a operação. Exemplo: Obter álbuns.
    2. URL: Selecione Obter e insira /albums para o ponto de extremidade.
    3. 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.