Tutorial: Conectar-se a um Eureka Server for Spring gerenciado nos Aplicativos de Contêiner do Azure

O Eureka Server for Spring é um registro de serviço que permite que os microsserviços se registrem e descubram outros serviços. Disponível como um componente dos Aplicativos de Contêiner do Azure, você pode associar seu aplicativo de contêiner a um Eureka Server for Spring para registro automático com o Eureka Server.

Neste tutorial, você aprenderá a:

  • Criar um componente Java do Eureka Server for Spring
  • Associar seu aplicativo de contêiner ao componente Java do Eureka Server for Spring

Importante

Este tutorial usa serviços que podem afetar sua fatura do Azure. Se você decidir seguir o passo a passo, certifique-se de excluir os recursos apresentados neste artigo para evitar cobranças inesperadas.

Pré-requisitos

Para concluir este projeto, você precisa dos seguintes itens:

Requisito Instruções
Conta do Azure É necessária ter uma assinatura ativa. Se não tiver uma, poderá criar uma gratuitamente.
CLI do Azure Instale a CLI do Azure.

Considerações

Ao executar o Eureka Server for Spring nos Aplicativos de Contêiner do Azure, observe os seguintes detalhes:

Item Explicação
Escopo O componente Eureka Server for Spring é executado no mesmo ambiente que o aplicativo de contêiner conectado.
Dimensionamento O Eureka Server for Spring não pode ser dimensionado. As propriedades de dimensionamento minReplicas e maxReplicas estão definidas como 1. Para obter alta disponibilidade, veja Criar um serviço do Eureka altamente disponível nos Aplicativos de Contêiner do Azure.
Recursos A alocação de recursos de contêiner para o Eureka Server for Spring foi corrigida. O número de núcleos de CPU é 0,5 e o tamanho da memória é 1 Gi.
Preços A cobrança do Eureka Server for Spring está abaixo dos preços baseados em consumo. Os recursos consumidos pelos componentes Java gerenciados são cobrados de acordo com as taxas de ativo/ocioso. Você pode excluir componentes que não estão mais em uso para interromper a cobrança.
Associação Os aplicativos de contêiner conectam-se a um componente do Eureka Server for Spring por meio de uma associação. As associações injetam as configurações nas variáveis de ambiente do aplicativo de contêiner. Depois que uma associação é estabelecida, o aplicativo contêiner pode ler os valores de configuração de variáveis de ambiente e conectar-se ao Eureka Server for Spring.

Instalação

Antes de começar a trabalhar com o Eureka Server for Spring, você precisa primeiro criar os recursos necessários.

Execute os seguintes comandos para criar seu grupo de recursos e o ambiente de Aplicativos de Contêiner.

  1. Crie variáveis para dar suporte à configuração do aplicativo. Esses valores são fornecidos para você para os fins desta lição.

    export LOCATION=eastus
    export RESOURCE_GROUP=my-services-resource-group
    export ENVIRONMENT=my-environment
    export EUREKA_COMPONENT_NAME=eureka
    export APP_NAME=my-eureka-client
    export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-service-eureka-client:latest"
    
    Variável Descrição
    LOCATION O local da região do Azure na qual você deve criar o aplicativo de contêiner e o componente Java.
    ENVIRONMENT O nome do ambiente dos Aplicativos de Contêiner do Azure para seu aplicativo de demonstração.
    RESOURCE_GROUP O nome do grupo de recursos do Azure para seu aplicativo de demonstração.
    EUREKA_COMPONENT_NAME O nome do componente Java criado para o seu aplicativo de contêiner. Neste caso, você cria um componente Java do Eureka Server for Spring.
    IMAGE A imagem do contêiner usada no seu aplicativo de contêiner.
  2. Entre no Azure com a CLI do Azure.

    az login
    
  3. Crie um grupos de recursos.

    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  4. Crie seu ambiente de aplicativos de contêiner.

    az containerapp env create \
      --name $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --location $LOCATION
    

Criar o componente do Eureka Server para Spring Java.

Agora que você tem um ambiente existente, você pode criar seu aplicativo de contêiner e associá-lo a uma instância de componente Java do Eureka Server for Spring.

  1. Crie o componente Java do Eureka Server for Spring.

    az containerapp env java-component eureka-server-for-spring create \
      --environment $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --name $EUREKA_COMPONENT_NAME
    
  2. Opcional: Atualizar a configuração do componente do Eureka Server para Spring Java.

    az containerapp env java-component eureka-server-for-spring update \
      --environment $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --name $EUREKA_COMPONENT_NAME 
      --configuration eureka.server.renewal-percent-threshold=0.85 eureka.server.eviction-interval-timer-in-ms=10000
    

Associar seu aplicativo de contêiner ao componente do Eureka Server para Spring Java

  1. Crie o aplicativo de contêiner e associe-o ao Eureka Server for Spring.

    az containerapp create \
      --name $APP_NAME \
      --resource-group $RESOURCE_GROUP \
      --environment $ENVIRONMENT \
      --image $IMAGE \
      --min-replicas 1 \
      --max-replicas 1 \
      --ingress external \
      --target-port 8080 \
      --bind $EUREKA_COMPONENT_NAME \
      --query properties.configuration.ingress.fqdn
    

Copie a URL do seu aplicativo para um editor de texto para que você possa usá-la em uma próxima etapa.

Retorne ao aplicativo de contêiner no portal e copie a URL do seu aplicativo para um editor de texto para que você possa usá-la em uma próxima etapa.

Navegue até a rota /allRegistrationStatus para exibir todos os aplicativos registrados com o Eureka Server for Spring.

A associação injeta várias configurações no aplicativo como variáveis de ambiente, principalmente a propriedade eureka.client.service-url.defaultZone. Essa propriedade indica o ponto de extremidade interno do componente Java do Eureka Server.

A associação também injeta as seguintes propriedades:

"eureka.client.register-with-eureka":    "true"
"eureka.client.fetch-registry":          "true"
"eureka.instance.prefer-ip-address":     "true"

A propriedade eureka.client.register-with-eureka está definida como true para impor o registro com o servidor Eureka. Esse registro substitui a configuração local em application.properties, no servidor de configuração e assim por diante. Se você quiser defini-lo para false, poderá substituí-lo definindo uma variável de ambiente em seu aplicativo de contêiner.

O valor eureka.instance.prefer-ip-address é definido para true devido à regra de resolução de DNS específica no ambiente do aplicativo de contêiner. Não modifique esse valor para que você não interrompa a associação.

(Opcional) Desvincule seu aplicativo de contêiner do componente Java do Servidor Eureka para Spring

Para remover uma associação de um aplicativo de contêiner, use a opção --unbind .

  az containerapp update \
    --name $APP_NAME \
    --unbind $JAVA_COMPONENT_NAME \
    --resource-group $RESOURCE_GROUP

Exibir o aplicativo por meio de um painel

Importante

Para exibir o painel, você precisa ter pelo menos a função Microsoft.App/managedEnvironments/write atribuída à sua conta no recurso de ambiente gerenciado. Você pode atribuir explicitamente a função Owner ou Contributor no recurso ou seguir as etapas para criar uma definição de função personalizada e atribuí-la à sua conta.

  1. Criar a definição de função personalizada.

    az role definition create --role-definition '{
        "Name": "<YOUR_ROLE_NAME>",
        "IsCustom": true,
        "Description": "Can access managed Java Component dashboards in managed environments",
        "Actions": [
            "Microsoft.App/managedEnvironments/write"
        ],
        "AssignableScopes": ["/subscriptions/<SUBSCRIPTION_ID>"]
    }'
    

    Certifique-se de substituir o espaço reservado entre os colchetes <> no valor AssignableScopes pela ID da sua assinatura.

  2. Atribua a função personalizada à sua conta no recurso de ambiente gerenciado.

    Obtenha a ID do recurso do ambiente gerenciado:

        export ENVIRONMENT_ID=$(az containerapp env show \
         --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ 
         --query id -o tsv)
    
  3. Atribua a função de à sua conta de usuário.

    Antes de executar esse comando, substitua o espaço reservado entre os colchetes <> pela sua ID de usuário ou da entidade de serviço.

    az role assignment create \
      --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \
      --role "<ROLE_NAME>" \
      --scope $ENVIRONMENT_ID
    

    Observação

    <USER_OR_SERVICE_PRINCIPAL_ID> geralmente deve ser a identidade que você usa para acessar o Portal do Azure. <ROLE_NAME> é o nome atribuído na etapa 1.

  4. Obtenha a URL do painel do Servidor Eureka para Spring.

    az containerapp env java-component eureka-server-for-spring show \
      --environment $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --name $EUREKA_COMPONENT_NAME \
      --query properties.ingress.fqdn -o tsv
    

    Esse comando retorna a URL que você pode usar para acessar o painel de controle do Servidor Eureka para Spring. Por meio do painel, seu aplicativo de contêiner também é para você, conforme mostrado na captura de tela a seguir.

Captura de tela do painel do Servidor Eureka para Spring.

Opcional: integrar o servidor Eureka para componentes Spring e Admin para Spring Java

Se você quiser integrar o Servidor Eureka para Spring e os componentes do Admin para Spring Java, consulte Integrar o Administrador Gerenciado para Spring com o Eureka Server para Spring.

Limpar os recursos

Os recursos criados neste tutorial têm um efeito na sua fatura do Azure. Se você não usar esses serviços a longo prazo, execute o comando a seguir para remover tudo o que foi criado neste tutorial.

az group delete \
  --resource-group $RESOURCE_GROUP

Próximas etapas