Partilhar via


Tutorial: Conectar-se a um servidor de configuração gerenciado para o Spring em aplicativos de contêiner do Azure

O Config Server for Spring fornece um local centralizado para disponibilizar dados de configuração para vários aplicativos. Neste artigo, você aprenderá a conectar um aplicativo hospedado em Aplicativos de Contêiner do Azure a uma instância do Java Config Server for Spring.

O componente Config Server for Spring Java usa um repositório GitHub como fonte para definições de configuração. Os valores de configuração são disponibilizados para seu aplicativo de contêiner por meio de uma associação entre o componente e seu aplicativo de contêiner. À medida que os valores mudam no servidor de configuração, eles fluem automaticamente para seu aplicativo, tudo sem exigir que você recompile ou reimplante seu aplicativo.

Neste tutorial, irá aprender a:

  • Criar um componente Config Server para Spring Java
  • Vincular o Config Server for Spring ao seu aplicativo de contêiner
  • Observe os valores de configuração antes e depois de conectar o servidor de configuração ao seu aplicativo
  • Criptografar e descriptografar valores de configuração com uma chave simétrica

Importante

Este tutorial usa serviços que podem afetar sua fatura do Azure. Se você decidir acompanhar 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:

Necessidade Instruções
Conta do Azure É necessária uma subscrição ativa. Se não tiver uma, pode criar uma gratuitamente.
CLI do Azure Instale a CLI do Azure.

Considerações

Ao executar no Config Server for Spring em Aplicativos de Contêiner do Azure, esteja ciente dos seguintes detalhes:

Item Explicação
Scope O Config Server for Spring é executado no mesmo ambiente que o aplicativo de contêiner conectado.
Dimensionamento Para manter uma única fonte de verdade, o Config Server for Spring não é dimensionado. As propriedades minReplicas de dimensionamento e maxReplicas estão ambas definidas como 1.
Recursos A alocação de recursos de contêiner para o Config Server for Spring é fixa, o número de núcleos de CPU é 0,5 e o tamanho da memória é 1Gi.
Preços O faturamento do Config Server for Spring se enquadra nos preços baseados no consumo. Os recursos consumidos pelos componentes Java gerenciados são cobrados pelas taxas ativas/ociosas. Você pode excluir componentes que não estão mais em uso para interromper a cobrança.
Vinculação O aplicativo de contêiner se conecta a um Config Server for Spring por meio de uma ligação. A associação injeta configurações em variáveis de ambiente do aplicativo de contêiner. Depois que uma associação é estabelecida, o aplicativo contêiner pode ler valores de configuração de variáveis de ambiente.

Configurar

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

Execute os comandos a seguir 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 JAVA_COMPONENT_NAME=configserver
    export APP_NAME=my-config-client
    export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-service-config-client:latest"
    export URI="https://github.com/Azure-Samples/azure-spring-cloud-config-java-aca.git"
    
    Variável Description
    LOCATION O local da região do Azure onde você cria seu 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.
    JAVA_COMPONENT_NAME O nome do componente Java criado para seu aplicativo de contêiner. Nesse caso, você cria um componente Config Server para Spring Java.
    IMAGE A imagem de contêiner usada em seu aplicativo de contêiner.
    URI Você pode substituir o URI pelo URL do repositório git, se for privado, adicione as configurações de autenticação relacionadas, como spring.cloud.config.server.git.username e spring.cloud.config.server.git.password.
  2. Entre no Azure com a CLI do Azure.

    az login
    
  3. Crie um grupo 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
    

Esse ambiente é usado para hospedar o componente java do Config Server for Spring e seu aplicativo de contêiner.

Criar o componente Config Server for Spring Java

Agora que você tem um ambiente de aplicativos de contêiner, você pode criar seu aplicativo de contêiner e vinculá-lo a um componente java do Config Server for Spring. Quando você vincula seu aplicativo de contêiner, os valores de configuração são sincronizados automaticamente do componente Config Server para seu aplicativo.

  1. Crie o componente Config Server for Spring Java.

    az containerapp env java-component config-server-for-spring create \
      --environment $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --name $JAVA_COMPONENT_NAME \
      --min-replicas 1 \
      --max-replicas 1 \
      --configuration spring.cloud.config.server.git.uri=$URI
    
  2. Atualize o componente Config Server for Spring Java.

    az containerapp env java-component config-server-for-spring update \
      --environment $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --name $JAVA_COMPONENT_NAME \
      --min-replicas 2 \
      --max-replicas 2 \
      --configuration spring.cloud.config.server.git.uri=$URI spring.cloud.config.server.git.refresh-rate=60
    

    Aqui, você está dizendo ao componente onde encontrar o repositório que contém suas informações de configuração por meio da uri propriedade. A refresh-rate propriedade informa ao Container Apps com que frequência verificar se há alterações no repositório git.

Vincular seu aplicativo de contêiner ao componente Config Server for Spring Java

  1. Crie o aplicativo de contêiner que consome dados de configuração.

    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 \
      --query properties.configuration.ingress.fqdn
    

    Este comando retorna a URL do seu aplicativo de contêiner que consome dados de configuração. Copie o URL para um editor de texto para que você possa usá-lo em uma próxima etapa.

    Se você visitar seu aplicativo em um navegador, o connectTimeout valor retornado será o valor padrão de 0.

  2. Associe-se ao Config Server for Spring.

    Agora que o aplicativo de contêiner e o Config Server foram criados, você os vincula com o update comando ao seu aplicativo de contêiner.

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

    O --bind $JAVA_COMPONENT_NAME parâmetro cria o link entre seu aplicativo de contêiner e o componente de configuração.

Depois que o aplicativo contêiner e o componente Config Server são vinculados, as alterações de configuração são sincronizadas automaticamente com o aplicativo contêiner.

Quando você visita o URL do aplicativo novamente, o valor de connectTimeout é agora 10000. Esse valor vem do conjunto git repo na $URI variável originalmente definida como a origem do componente de configuração. Especificamente, esse valor é extraído da connectionTimeout propriedade no arquivo application.yml do repo.

A solicitação bind injeta a definição de configuração no aplicativo como variáveis de ambiente. Esses valores agora estão disponíveis para o código do aplicativo para usar ao buscar definições de configuração do servidor de configuração.

Nesse caso, as seguintes variáveis de ambiente estão disponíveis para o aplicativo:

SPRING_CLOUD_CONFIG_URI=http://[JAVA_COMPONENT_INTERNAL_FQDN]:80
SPRING_CLOUD_CONFIG_COMPONENT_URI=http://[JAVA_COMPONENT_INTERNAL_FQDN]:80
SPRING_CONFIG_IMPORT=optional:configserver:$SPRING_CLOUD_CONFIG_URI

Se você quiser personalizar o seu próprio SPRING_CONFIG_IMPORT, você pode se referir à variável SPRING_CLOUD_CONFIG_COMPONENT_URIde ambiente , por exemplo, você pode substituir por argumentos de linha de comando, como Java -Dspring.config.import=optional:configserver:${SPRING_CLOUD_CONFIG_COMPONENT_URI}?fail-fast=true.

Você também pode remover uma associação do seu aplicativo.

(Opcional) Desvincule seu aplicativo de contêiner do componente Config Server for Spring Java

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

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

Quando você visita o URL do aplicativo novamente, o valor de connectTimeout volta para 0.

Clean up resources (Limpar recursos)

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

az group delete \
  --resource-group $RESOURCE_GROUP

Próximos passos