Compartilhar via


Configurar um Config Server do Spring Cloud gerenciado no Azure Spring Apps

Observação

Azure Spring Apps é o novo nome do serviço Azure Spring Cloud. Embora o serviço tenha um novo nome, você verá o nome antigo em alguns locais por um tempo enquanto trabalhamos para atualizar ativos como capturas de tela, vídeos e diagramas.

Este artigo aplica-se a: ✔️ Java ✔️ C#

Este artigo se aplica a: ✔️ Consumo Standard e dedicado (versão prévia) ✔️ Básico/Standard ✔️ Enterprise

Este artigo mostra como configurar um Servidor de Configuração do Spring Cloud gerenciado no serviço do Aplicativos Spring do Azure.

O Config Server do Spring Cloud oferece suporte no lado do servidor e do cliente para configuração externalizada em um sistema distribuído. A instância do Servidor de Configuração do Spring Cloud fornece um local central para gerenciar propriedades externas de aplicativos em todos os ambientes. Para obter mais informações, consulte Configuração do Spring Cloud.

Observação

Para usar o servidor de configuração no plano de consumo Standard e dedicado, primeiro ele deve ser habilitado. Para obter mais informações, consulte Habilitar e desabilitar o Servidor de Configuração do Spring Cloud no Aplicativos Spring do Azure.

Pré-requisitos

  • Uma assinatura do Azure. Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.

Habilitar o Servidor de Configuração do Azure Spring Cloud

Você pode habilitar o Servidor de Configuração do Spring Cloud ao provisionar uma instância de serviço do plano Enterprise do Aplicativos Spring do Azure. Se você já tiver uma instância do plano Enterprise do Aplicativos Spring do Azure, consulte a seção Gerenciar Servidor de Configuração do Spring Cloud em uma instância do plano Enterprise existente neste artigo.

É possível habilitar o Servidor de Configuração do Spring Cloud usando o portal do Azure ou a CLI do Azure.

Use as seguintes etapas para habilitar o Servidor de Configuração do Spring Cloud:

  1. Abra o Portal do Azure.

  2. Na guia Básico, selecione Nível Enterprise na seção Preços e especifique as informações necessárias. Em seguida, selecione Próximo: Componentes gerenciados.

  3. Na guia Componentes gerenciados, selecione Habilitar Servidor de Configuração do Spring Cloud (versão prévia).

    Captura de tela do portal do Azure que mostra a guia de configurações do VMware Tanzu com a caixa de seleção Habilitar Servidor de Configuração do Spring Cloud em destaque.

  4. Especifique outras configurações e selecione Revisar e Criar.

  5. Na guia Examinar uma criação, verifique se o Servidor de Configuração do Spring Cloud (versão prévia) está definido como Sim. Selecione Criar para criar a instância do plano Enterprise.

Restrições

Há algumas restrições quando você usa o Servidor de Configuração com um back-end do Git. Algumas propriedades são injetadas automaticamente no ambiente de aplicativo para acessar o Config Server e a Descoberta de Serviço. Se você também configurar essas propriedades em seus arquivos do Servidor de Configuração, poderá enfrentar conflitos e um comportamento inesperado.

  • eureka.client.service-url.defaultZone
  • eureka.client.tls.keystore
  • eureka.instance.preferIpAddress
  • eureka.instance.instance-id
  • server.port
  • spring.cloud.config.tls.keystore
  • spring.config.import
  • spring.application.name
  • spring.jmx.enabled
  • management.endpoints.jmx.exposure.include

Cuidado

Evite colocar essas propriedades nos arquivos de aplicativo do Servidor de Configuração.

Criar seus arquivos do Servidor de Configuração

O Aplicativos Spring do Azure dá suporte ao Azure DevOps Server, ao GitHub, ao GitLab e ao Bitbucket para armazenar os arquivos do Servidor de Configuração. Quando o repositório estiver pronto, crie os arquivos de configuração e armazene-os lá.

Algumas propriedades configuráveis estão disponíveis apenas para determinados tipos. As seções a seguir descrevem as propriedades de cada tipo de repositório.

Observação

O Config Server aceita master (no Git) como o rótulo padrão, caso você não especifique um. No entanto, o GitHub alterou recentemente a ramificação padrão de master para main. Para evitar a falha do Servidor de Configuração do Aplicativos Spring do Azure, preste bastante atenção ao rótulo padrão ao configurar o Servidor de Configuração com o GitHub, especialmente para repositórios criados recentemente.

Usar um hífen ("-") para separar palavras é a única convenção de nomenclatura adequada compatível no momento. Por exemplo, você pode usar default-label, mas não defaultLabel.

Repositório público

Ao usar um repositório público, as propriedades configuráveis são mais limitadas do que são com um repositório privado.

A tabela a seguir lista as propriedades configuráveis que você pode usar para configurar um repositório Git público:

Propriedade Obrigatório Recurso
uri Sim O URI do repositório Git que é usado como o back-end do Config Server. Deve começar com http://, https://, git@ ou ssh://.
default-label Não O rótulo padrão do repositório Git. Deve ser o nome do branch, o nome da tag ou a ID de confirmação no repositório.
search-paths Não Uma matriz de cadeias de caracteres usada para pesquisar subdiretórios do repositório Git.

Repositório privado com autenticação SSH

A tabela a seguir lista as propriedades configuráveis que você pode usar para configurar um repositório Git privado com SSH:

Propriedade Obrigatório Recurso
uri Sim O URI do repositório Git que é usado como o back-end do Config Server. Deve começar com http://, https://, git@ ou ssh://.
default-label Não O rótulo padrão do repositório Git. Deve ser o nome do branch, o nome da tag ou a ID de commit do repositório.
search-paths Não Uma matriz de cadeias de caracteres usada para pesquisar subdiretórios do repositório Git.
private-key Não A chave privada SSH para acessar o repositório Git. Necessário quando o URI começa com git@ ou ssh://.
host-key Não A chave do host do servidor de repositório Git. Não deve incluir o prefixo de algoritmo abordado por host-key-algorithm.
host-key-algorithm Não O algoritmo de chave do host. Deve ser ssh-dss, ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384 ou ecdsa-sha2-nistp521. Necessário somente se host-key existir.
strict-host-key-checking Não O indicador do Servidor de Configuração que mostra se ele falha ao iniciar usando o host-key privado. Deve ser true (valor padrão) ou false.

Repositório privado com autenticação Básica

A tabela a seguir lista as propriedades configuráveis que você pode usar para configurar um repositório Git privado com autenticação básica:

Propriedade Obrigatório Recurso
uri Sim O URI do repositório Git que é usado como o back-end do Config Server. Deve começar com http://, https://, git@ ou ssh://.
default-label Não O rótulo padrão do repositório Git. Deve ser o nome do branch, o nome da tag ou a ID de confirmação no repositório.
search-paths Não Uma matriz de cadeias de caracteres usada para pesquisar subdiretórios do repositório Git.
username Não O nome de usuário usado para acessar o servidor de repositório Git. Obrigatório quando o servidor de repositório Git dá suporte à autenticação básica HTTP.
password Não A senha ou o token de acesso pessoal usado para acessar o servidor de repositório Git. Obrigatório quando o servidor de repositório Git dá suporte à autenticação básica HTTP.

Observação

Muitos servidores de repositório Git são compatíveis com o uso de tokens em vez de senhas para autenticação básica HTTP. Alguns repositórios permitem que os tokens persistam indefinidamente. No entanto, alguns servidores de repositório Git, incluindo o Azure DevOps Server, forçam tokens a expirar em algumas horas. Os repositórios que fazem com que os tokens expirem não devem usar a autenticação baseada em token com o Azure Spring Apps. Se você usar esse token, lembre-se de atualizá-lo antes de expirar.

O GitHub removeu o suporte para autenticação de senha. Portanto, é necessário usar um token de acesso pessoal em vez da autenticação de senha para o GitHub. Para obter mais informações, confira Requisitos de autenticação de token para operações do Git.

Outros repositórios Git

A tabela a seguir lista as propriedades configuráveis que você pode usar para configurar um repositório Git com um padrão:

Propriedade Obrigatório Recurso
repos Não Um mapa que consiste nas configurações de um repositório Git com um determinado nome.
repos."uri" Sim em repos O URI do repositório Git que é usado como o back-end do Config Server. Deve começar com http://, https://, git@ ou ssh://.
repos."name" Sim em repos Um nome para identificar o repositório; por exemplo, team-A ou team-B. Necessário somente se repos existir.
repos."pattern" Não Uma matriz de cadeias de caracteres usada para corresponder a um nome de aplicativo. Em cada padrão, use o formato {application}/{profile} com caracteres curinga.
repos."default-label" Não O rótulo padrão do repositório Git. Deve ser o nome do branch, o nome da tag ou o IOD do commit do repositório.
repos."search-paths" Não Uma matriz de cadeias de caracteres usada para pesquisar subdiretórios do repositório Git.
repos."username" Não O nome de usuário usado para acessar o servidor de repositório Git. Obrigatório quando o servidor de repositório Git dá suporte à autenticação básica HTTP.
repos."password" Não A senha ou o token de acesso pessoal usado para acessar o servidor de repositório Git. Obrigatório quando o servidor de repositório Git dá suporte à autenticação básica HTTP.
repos."private-key" Não A chave privada SSH para acessar o repositório Git. Obrigatório quando o URI começa com git@ ou ssh://.
repos."host-key" Não A chave do host do servidor de repositório Git. Não deve incluir o prefixo de algoritmo abordado por host-key-algorithm.
repos."host-key-algorithm" Não O algoritmo de chave do host. Deve ser ssh-dss, ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384 ou ecdsa-sha2-nistp521. Necessário somente se host-key existir.
repos."strict-host-key-checking" Não Indica se a inicialização da instância do Servidor de Configuração falha ao usar o host-key privado. Deve ser true (valor padrão) ou false.

A tabela a seguir mostra alguns exemplos de padrões para configurar o serviço com um repositório extra opcional. Para obter mais informações, consulte a seção Repositórios extras neste artigo e a seção Padrões correspondentes e vários repositórios do Configuração do Spring Cloud.

Padrões Descrição
test-config-server-app-0/* O padrão e o URI do repositório corresponderão a um aplicativo Spring Boot chamado test-config-server-app-0 com qualquer perfil.
test-config-server-app-1/dev O padrão e o URI do repositório corresponderão a um aplicativo Spring Boot chamado test-config-server-app-1 com um perfil de desenvolvimento.
test-config-server-app-2/prod O padrão e o URI do repositório corresponderão a um aplicativo Spring Boot chamado test-config-server-app-2 com um perfil de produção.

Captura de tela do portal do Azure que mostra a página Servidor de Configuração com a coluna Padrões da tabela Repositórios adicionais em destaque.

Captura de tela do portal do Azure que mostra a página Servidor de Configuração com a coluna Padrões da tabela Repositórios adicionais em destaque.

Configurar um repositório Git no Servidor de Configuração

Depois de salvar os arquivos de configuração em um repositório, siga as próximas etapas para conectar o Aplicativos Spring do Azure ao repositório:

  1. Entre no portal do Azure.

  2. Acesse a página Visão Geral do Azure Spring Apps.

  3. Selecione Servidor de Configuração do Spring Cloud no painel de navegação.

  4. Na seção Repositório padrão, defina URI como https://github.com/Azure-Samples/piggymetrics-config.

  5. Selecione Validar.

    Captura de tela do portal do Azure que mostra a página Servidor de Configuração.

    Captura de tela do portal do Azure que mostra a página Servidor de Configuração.

  6. Quando a validação for concluída, selecione Aplicar para salvar as alterações.

    Captura de tela do portal do Azure que mostra a página Servidor de Configuração com o botão Aplicar em destaque.

    Captura de tela do portal do Azure que mostra a página Servidor de Configuração com o botão Aplicar em destaque.

A atualização da configuração pode levar alguns minutos. Você deverá receber uma notificação quando a configuração for concluída.

Insira as informações do repositório diretamente para o portal do Azure

Você pode inserir informações para o repositório padrão e, opcionalmente, para repositórios extras.

Repositório padrão

Esta seção mostra como inserir informações de repositório em um repositório público ou privado. Em um repositório privado, é possível usar a autenticação Básica ou o SSH.

Use as seguintes etapas para inserir informações de repositório em um repositório público:

  1. Na seção Repositório padrão, cole o URI do repositório na seção URI.
  2. Para definir o rótulo, insira a configuração.
  3. Verifique se a configuração de Autenticação é pública.
  4. Escolha Aplicar.

Use as seguintes etapas para inserir informações de repositório em um repositório privado usando a autenticação Básica baseada em token/senha:

  1. Na seção Repositório padrão, cole o URI do repositório na seção URI.

  2. Em Autenticação, selecione Editar autenticação.

  3. No painel Editar autenticação, na lista suspensa Tipo de autenticação, selecione HTTP Básico.

  4. Insira seu nome de usuário e senha/token para conceder acesso ao Aplicativos Spring do Azure.

  5. Selecione OK e Aplicar para concluir a configuração de sua instância do Servidor de Configuração.

    Captura de tela do portal do Azure que mostra a seção Repositório padrão das configurações de autenticação para autenticação Básica.

    Observação

    Muitos servidores de repositório Git são compatíveis com o uso de tokens em vez de senhas para autenticação básica HTTP. Alguns repositórios permitem que os tokens persistam indefinidamente. No entanto, alguns servidores de repositório Git, incluindo o Azure DevOps Server, forçam tokens a expirar em algumas horas. Os repositórios que fazem com que os tokens expirem não devem usar a autenticação baseada em token com o Azure Spring Apps. Se você usar esse token, lembre-se de atualizá-lo antes de expirar.

    O GitHub removeu o suporte para autenticação de senha. Portanto, é necessário usar um token de acesso pessoal em vez da autenticação de senha para o GitHub. Para obter mais informações, confira Requisitos de autenticação de token para operações do Git.

Use as seguintes etapas para inserir informações de repositório em um repositório privado usando SSH:

  1. Na seção Repositório padrão, cole o URI do repositório na seção URI.

  2. Em Autenticação, selecione Editar autenticação.

  3. No painel Editar autenticação, na lista suspensa Tipo de autenticação, selecione SSH.

  4. Inserir a chave privada. Opcionalmente, especifique a chave do host e o algoritmo de chave do host.

  5. Inclua a chave pública no repositório do Config Server.

  6. Selecione OK e Aplicar para concluir a configuração de sua instância do Servidor de Configuração.

    Captura de tela do portal do Azure que mostra a seção Repositório padrão das configurações de autenticação para autenticação SSH.

Repositórios extras

Se desejar configurar o serviço com um repositório extra opcional, use as seguintes etapas:

  1. Especifique as configurações de Uri e Autenticação como você fez para o repositório padrão. Não deixe de incluir uma configuração de nome em seu padrão.
  2. Selecione Aplicar para anexar o repositório à sua instância.

Configurar um repositório Git importando um arquivo YAML

Se você escreveu um arquivo YAML com as configurações do repositório, é possível fazer a importação dele diretamente do computador local para o Aplicativos Spring do Azure. O exemplo a seguir mostra um arquivo YAML simples de um repositório privado com autenticação básica:

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/azure-spring-apps-samples-pr/config-server-repository.git
          username: <username>
          password: <password/token>

Use as seguintes etapas para importar um arquivo YAML:

  1. Selecione Importar configurações e, em seguida, selecione o arquivo YAML do diretório do projeto. Selecione Importar.

    Captura de tela do portal do Azure que mostra o painel configurações de Importação do Servidor de Configuração.

    Captura de tela do portal do Azure que mostra o painel configurações de Importação do Servidor de Configuração.

    O painel Notificações exibe uma operação async. O Config Server deve relatar êxito após um a dois minutos. As informações do arquivo YAML são exibidas no portal do Azure.

  2. Clique em Aplicar para concluir a importação.

Configurar o Azure Repos no Servidor de Configuração

O Azure Spring Apps poderá acessar repositórios Git públicos, protegidos por SSH ou por uma autenticação básica HTTP. A autenticação básica HTTP é a opção mais fácil para criar e gerenciar repositórios com o Azure Repos.

Obter a URL e as credenciais do repositório

Use as etapas a seguir para obter a URL e as credenciais do repositório:

  1. No portal do Azure Repos do projeto, clique em Clonar.

  2. Copie a URL a ser clonada da caixa de texto. Normalmente essa URL está no seguinte formulário:

    https://<organization name>@dev.azure.com/<organization name>/<project name>/_git/<repository name>
    

    Remova tudo após https:// e antes de dev.azure.com, incluindo o símbolo @. A URL resultante deve estar neste formato:

    https://dev.azure.com/<organization name>/<project name>/_git/<repository name>
    

    Salve essa URL para usar mais tarde.

  3. Selecione Gerar credenciais do Git para exibir um nome de usuário e uma senha. Salve este nome de usuário e senha para usar na seção a seguir.

Configurar um repositório Git no Servidor de Configuração

Execute as seguintes etapas para configurar o repositório:

  1. Entre no portal do Azure.

  2. Acesse a página Visão Geral do Azure Spring Apps.

  3. Escolha o serviço a ser configurado.

  4. No painel esquerdo da página Serviço, em Configurações, selecione a guia Servidor de Configuração do Spring Cloud.

  5. Use as etapas a seguir para configurar o repositório criado:

    • Adicione o URI do repositório que você salvou anteriormente.
    • Selecione a configuração em Autenticação para abrir o painel Editar autenticação.
    • Para Tipo de autenticação, selecione HTTP Básico.
    • Em Nome de usuário, especifique o nome de usuário que você salvou anteriormente.
    • Em Senha, especifique a senha que você salvou anteriormente.
    • Selecione OK e aguarde a conclusão da operação.

    Captura de tela do portal do Azure que mostra as configurações padrão do repositório com o Uri e o tipo de autenticação em destaque.

Associar um aplicativo ao Servidor de Configuração do Spring Cloud

Use o comando a seguir para associar um aplicativo ao Servidor de Configuração do Spring Cloud, permitindo que o aplicativo efetue pull de configurações do Servidor de Configuração.

az spring config-server bind \
    --resource-group <resource-group> \
    --service <service-name> \
    --app <app-name>

Você também pode configurar as associações de aplicativo no portal do Azure, conforme mostrado na seguinte captura de tela:

Captura de tela do portal do Azure que mostra a página Servidor de Configuração do Spring Cloud com a lista suspensa de Associação de aplicativos em destaque.

Observação

Essas alterações levam alguns minutos para se propagarem para todos os aplicativos quando o status do servidor de configuração é alterado.

Se você alterar o status de associação/desassociação, precisará reiniciar ou reimplantar o aplicativo.

Agora você pode optar por associar seu aplicativo ao Servidor de Configuração do Spring Cloud diretamente ao criar um novo aplicativo usando o seguinte comando:

az spring app create \ 
    --resource-group <resource-group> \ 
    --service <service-name> \ 
    --name <app-name> \ 
    --bind-config-server

Você também pode vincular seu aplicativo ao Servidor de Configuração do Spring Cloud no portal do Azure, conforme mostrado na captura de tela a seguir:

Captura de tela do portal do Azure que mostra a página Criar Aplicativo com a lista suspensa Associar realçada.

Excluir sua configuração

Selecione Redefinir na guia Servidor de Configuração do Spring Cloud para apagar as configurações existentes. Exclua as configurações do Servidor de Configuração se desejar conectar sua instância do Servidor de Configuração da outra fonte, como na migração do GitHub para o Azure DevOps Server.

Atualizar Servidor de Configuração

Quando as propriedades são alteradas, os serviços que consomem essas propriedades precisam ser notificados para que as alterações possam ser feitas. A solução padrão para o Servidor de Configuração do Spring Cloud é disparar manualmente o evento de atualização, o que pode não ser viável quando há muitas instâncias do aplicativo. Para obter mais informações, confira Configuração Centralizada

Como alternativa, você pode atualizar automaticamente os valores do Config Server, permitindo que o cliente de configuração sonde se há alterações com base em uma atualização interna.

Use as etapas a seguir para atualizar automaticamente os valores do Servidor de Configuração:

  1. Registre uma tarefa agendada para atualizar o contexto em um determinado intervalo, conforme é mostrado no exemplo a seguir:

    @ConditionalOnBean({RefreshEndpoint.class})
    @Configuration
    @AutoConfigureAfter({RefreshAutoConfiguration.class, RefreshEndpointAutoConfiguration.class})
    @EnableScheduling
    public class ConfigClientAutoRefreshConfiguration implements SchedulingConfigurer {
        @Value("${spring.cloud.config.refresh-interval:60}")
        private long refreshInterval;
        @Value("${spring.cloud.config.auto-refresh:false}")
        private boolean autoRefresh;
        private RefreshEndpoint refreshEndpoint;
        public ConfigClientAutoRefreshConfiguration(RefreshEndpoint refreshEndpoint) {
            this.refreshEndpoint = refreshEndpoint;
        }
        @Override
        public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
            if (autoRefresh) {
                // set minimal refresh interval to 5 seconds
                refreshInterval = Math.max(refreshInterval, 5);
                scheduledTaskRegistrar.addFixedRateTask(() -> refreshEndpoint.refresh(), refreshInterval * 1000);
            }
        }
    }
    
  2. Habilite a atualização automática e defina o intervalo de atualização apropriado no arquivo application.yml. No exemplo a seguir, o cliente pesquisa a alteração de configuração a cada 60 segundos, que é o valor mínimo que você pode definir para um intervalo de atualização.

    Por padrão, a atualização automática é definida para false e o intervalo de atualização é definido para 60 seconds.

    spring:
        cloud:
             config:
              auto-refresh: true
              refresh-interval: 60
    management:
        endpoints:
             web:
              exposure:
                include:
                  - refresh
    
  3. Adicione @RefreshScope ao seu código. No exemplo a seguir, a variável connectTimeout é atualizada automaticamente a cada 60 segundos.

    @RestController
    @RefreshScope
    public class HelloController {
        @Value("${timeout:4000}")
        private String connectTimeout;
    }
    

Para obter mais informações, confira o exemplo config-client-polling.

Gerenciar o Servidor de Configuração do Spring Cloud em uma instância do plano Enterprise existente

Você pode habilitar e desabilitar o Servidor de Configuração do Spring Cloud após a criação do serviço usando o portal do Azure ou a CLI do Azure. Antes de desabilitar o Servidor de Configuração do Spring Cloud, será necessário desassociar todos os aplicativos dele.

Use as seguintes etapas para habilitar ou desabilitar o Servidor de Configuração do Spring Cloud:

  1. Navegue até a instância de serviço e selecione Servidor de Configuração do Spring Cloud.

  2. Selecione Gerenciar.

  3. Selecione ou desmarque Habilitar Servidor de Configuração do Spring Cloud e selecione Salvar.

    Captura de tela do portal do Azure que mostra o painel Gerenciar com a opção Habilitar Servidor de Configuração em destaque.

  4. Agora você pode exibir o estado do Servidor de Configuração do Spring Cloud na página Servidor de Configuração do Spring Cloud.

Azure Spring Apps