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.
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. Entre no Azure com a CLI do Azure.
az login
Crie um grupos de recursos.
az group create --name $RESOURCE_GROUP --location $LOCATION
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.
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
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
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.
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 valorAssignableScopes
pela ID da sua assinatura.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)
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.
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.
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