Partilhar via


Configurar um Spring Cloud Config Server gerenciado no Azure Spring Apps

Nota

Azure Spring Apps é o novo nome para o serviço Azure Spring Cloud. Embora o serviço tenha um novo nome, você verá o nome antigo em alguns lugares 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 aplica-se a: ✔️ Consumo padrão e dedicado (Pré-visualização) ✔️ Básico/Standard ✔️ Enterprise

Este artigo mostra como configurar um Spring Cloud Config Server gerenciado no Azure Spring Apps.

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

Nota

Para usar o config server no plano de consumo padrão e dedicado, você deve habilitá-lo primeiro. Para obter mais informações, consulte Habilitar e desabilitar o Spring Cloud Config Server no Azure Spring Apps.

Pré-requisitos

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

Ativar o Spring Cloud Config Server

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

Você pode habilitar o Spring Cloud Config Server usando o portal do Azure ou a CLI do Azure.

Use as seguintes etapas para habilitar o Spring Cloud Config Server:

  1. Abra o portal do Azure.

  2. Na guia Noções básicas, selecione Camada corporativa na seção Preços e especifique as informações necessárias. Em seguida, selecione Avançar: Componentes gerenciados.

  3. Na guia Componentes gerenciados, selecione Ativar o Spring Cloud Config Server (visualização).

    Captura de ecrã do portal do Azure que mostra o separador de definições do VMware Tanzu com a caixa de verificação Ativar Spring Cloud Config Server realçada.

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

  5. Na guia Revisar uma criação, verifique se Ativar o Spring Cloud Config Server (visualização) está definido como Sim. Selecione Criar para criar a instância do plano Enterprise.

Restrições

Há algumas restrições quando você usa o Config Server com um back-end Git. As propriedades a seguir são injetadas automaticamente em seu ambiente de aplicativo para acessar o Config Server e o Service Discovery. Se você também configurar essas propriedades a partir de seus arquivos do Config Server, poderá enfrentar conflitos e 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

Atenção

Evite colocar essas propriedades em seus arquivos de aplicativo do Config Server.

Crie seus arquivos do Config Server

O Azure Spring Apps dá suporte ao Azure DevOps Server, GitHub, GitLab e Bitbucket para armazenar seus arquivos do Config Server. Quando o repositório estiver pronto, você poderá criar os arquivos de configuração e armazená-los 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.

Nota

O Config Server usa master (no Git) como o rótulo padrão se você não especificar um. No entanto, o GitHub alterou recentemente a ramificação padrão de master para main. Para evitar a falha do Azure Spring Apps Config Server, preste atenção ao rótulo padrão ao configurar o Config Server com o GitHub, especialmente para repositórios recém-criados.

O uso de um hífen (-) para separar palavras é a única convenção de nomenclatura de propriedade atualmente suportada. Por exemplo, você pode usar default-label, mas não defaultLabel.

Repositório público

Quando você usa um repositório público, suas propriedades configuráveis são mais limitadas do que 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:

Property Necessário Caraterística
uri Sim O URI do repositório Git usado como 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 um nome de ramo, nome de tag ou ID de confirmação no repositório.
search-paths Não Uma matriz de cadeias de caracteres que são usadas 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:

Property Necessário Caraterística
uri Sim O URI do repositório Git usado como 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 da filial, o nome da marca ou o ID de confirmação do repositório.
search-paths Não Uma matriz de cadeias de caracteres usadas 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 de host do servidor de repositório Git. Não deve incluir o prefixo do algoritmo como coberto pelo host-key-algorithm.
host-key-algorithm Não O algoritmo de chave do host. Deve ser ssh-dss, , , ecdsa-sha2-nistp256ecdsa-sha2-nistp384, ou ecdsa-sha2-nistp521ssh-rsa. Necessário apenas se host-key existir.
strict-host-key-checking Não O indicador Config Server que mostra se ele falha ao iniciar ao usar o privado host-key. 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:

Property Necessário Caraterística
uri Sim O URI do repositório Git usado como 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 um nome de ramo, nome de tag ou commit-id no repositório.
search-paths Não Uma matriz de cadeias de caracteres usadas 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. Necessário quando o servidor de repositório Git suporta autenticação básica HTTP.
password Não A senha ou token de acesso pessoal usado para acessar o servidor do repositório Git. Necessário quando o servidor de repositório Git suporta autenticação básica HTTP.

Nota

Muitos servidores de repositório Git suportam 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 os 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 tokens com o Azure Spring Apps. Se você usar esse token, lembre-se de atualizá-lo antes que ele expire.

O GitHub removeu o suporte para autenticação de senha, então você precisa usar um token de acesso pessoal em vez de autenticação de senha para o GitHub. Para obter mais informações, consulte Requisitos de autenticação de token para operações Git.

Outros repositórios Git

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

Property Necessário Caraterística
repos Não Um mapa que consiste nas configurações de um repositório Git com um nome próprio.
repos."uri" Sim em repos O URI do repositório Git usado como 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 apenas se repos existir.
repos."pattern" Não Uma matriz de cadeias de caracteres usadas para corresponder a um nome de aplicativo. Para cada padrão, use o formato {application}/{profile} com curingas.
repos."default-label" Não O rótulo padrão do repositório Git. Deve ser o nome da filial, nome da tag ou IOD de confirmação do repositório.
repos."search-paths" Não Uma matriz de cadeias de caracteres usadas 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. Necessário quando o servidor de repositório Git suporta autenticação básica HTTP.
repos."password" Não A senha ou token de acesso pessoal usado para acessar o servidor do repositório Git. Necessário quando o servidor de repositório Git suporta autenticação básica HTTP.
repos."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://.
repos."host-key" Não A chave de host do servidor de repositório Git. Não deve incluir o prefixo do algoritmo como coberto pelo host-key-algorithm.
repos."host-key-algorithm" Não O algoritmo de chave do host. Deve ser ssh-dss, , , ecdsa-sha2-nistp256ecdsa-sha2-nistp384, ou ecdsa-sha2-nistp521ssh-rsa. Necessário apenas se host-key existir.
repos."strict-host-key-checking" Não Indica se a instância do Config Server falha ao iniciar ao usar o private host-key. Deve ser true (valor padrão) ou false.

A tabela a seguir mostra alguns exemplos de padrões para configurar seu 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 Correspondência de padrões e vários repositórios do Spring Cloud Config.

Padrões Description
test-config-server-app-0/* O padrão e o URI do repositório correspondem a um aplicativo de inicialização Spring nomeado test-config-server-app-0 com qualquer perfil.
test-config-server-app-1/dev O padrão e o URI do repositório correspondem a um aplicativo de inicialização Spring nomeado 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 correspondem a um aplicativo de inicialização do Spring nomeado test-config-server-app-2 com um perfil prod.

Captura de ecrã do portal do Azure que mostra a página Config Server com a coluna Padrões da tabela Repositórios adicionais realçada.

Captura de ecrã do portal do Azure que mostra a página Config Server com a coluna Padrões da tabela Repositórios adicionais realçada.

Configurar um repositório Git no Config Server

Depois de salvar seus arquivos de configuração em um repositório, use as seguintes etapas para conectar o Azure Spring Apps ao repositório:

  1. Inicie sessão no portal do Azure.

  2. Vá para a página Visão geral dos aplicativos do Azure Spring.

  3. Selecione Spring Cloud Config Server 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 ecrã do portal do Azure que mostra a página Config Server.

    Captura de ecrã do portal do Azure que mostra a página Config Server.

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

    Captura de ecrã do portal do Azure que mostra a página Config Server com o botão Aplicar realçado.

    Captura de ecrã do portal do Azure que mostra a página Config Server com o botão Aplicar realçado.

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

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

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

Repositório predefinido

Esta seção mostra como inserir informações de repositório para um repositório público ou privado. Para um repositório privado, você pode usar a autenticação básica ou SSH.

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

  1. Na seção Repositório padrão, na caixa Uri, cole o URI do repositório.
  2. Para a configuração Label , insira config.
  3. Verifique se a configuração Autenticação é Pública.
  4. Selecione Aplicar.

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

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

  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. Introduza o seu nome de utilizador e palavra-passe/token para conceder acesso às Aplicações Azure Spring.

  5. Selecione OK e, em seguida, selecione Aplicar para concluir a configuração da instância do Config Server.

    Captura de ecrã do portal do Azure que mostra a secção Repositório predefinido das definições de autenticação para autenticação Básica.

    Nota

    Muitos servidores de repositório Git suportam 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 os 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 tokens com o Azure Spring Apps. Se você usar esse token, lembre-se de atualizá-lo antes que ele expire.

    O GitHub removeu o suporte para autenticação de senha, então você precisa usar um token de acesso pessoal em vez de autenticação de senha para o GitHub. Para obter mais informações, consulte Requisitos de autenticação de token para operações Git.

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

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

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

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

  4. Introduza a sua chave privada. Opcionalmente, especifique sua chave de host e algoritmo de chave de host.

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

  6. Selecione OK e, em seguida, selecione Aplicar para concluir a configuração da instância do Config Server.

    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 você quiser configurar seu serviço com um repositório extra opcional, use as seguintes etapas:

  1. Especifique as configurações de Uri e Autenticação como fez para o repositório padrão. Certifique-se de incluir uma configuração Nome para 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, poderá importá-lo diretamente da máquina local para o Azure Spring Apps. O exemplo a seguir mostra um arquivo YAML simples para 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 no diretório do projeto. Selecione Importar.

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

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

    O painel Notificações exibe uma async operação. O Config Server deve relatar o sucesso após 1-2 minutos. As informações do seu arquivo YAML são exibidas no portal do Azure.

  2. Selecione Aplicar para concluir a importação.

Configurar o Azure Repos no Config Server

Os Azure Spring Apps podem acessar repositórios Git que são públicos, protegidos por SSH ou protegidos usando autenticação básica HTTP. A autenticação básica HTTP é a mais fácil das opções para criar e gerenciar repositórios com o Azure Repos.

Obter o URL e as credenciais do repositório

Use as seguintes etapas para obter o URL e as credenciais do repositório:

  1. No portal do Azure Repos para seu projeto, selecione Clonar.

  2. Copie o URL do clone da caixa de texto. Esse URL normalmente está no seguinte formato:

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

    Remova tudo depois https:// e antes dev.azure.com, incluindo o @ símbolo. O URL resultante deve estar no seguinte formato:

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

    Guarde este URL para utilizar mais tarde.

  3. Selecione Gerar credenciais do Git para exibir um nome de usuário e senha. Guarde este nome de utilizador e palavra-passe para utilizar na secção seguinte.

Configurar um repositório Git no Config Server

Use as seguintes etapas para configurar o repositório:

  1. Inicie sessão no portal do Azure.

  2. Vá para a página Visão geral dos aplicativos do Azure Spring.

  3. Selecione o serviço a ser configurado.

  4. No painel esquerdo da página de serviço, em Configurações, selecione a guia Spring Cloud Config Server .

  5. Use as seguintes etapas para configurar o repositório que você criou:

    • Adicione o URI do repositório que você salvou anteriormente.
    • Selecione a configuração em Autenticação para abrir o painel Editar autenticação .
    • Em 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 ecrã do portal do Azure que mostra as definições de configuração do repositório predefinido com o Uri e o Tipo de Autenticação realçados.

Vincular um aplicativo ao Spring Cloud Config Server

Use o comando a seguir para vincular um aplicativo ao Spring Cloud Config Server, permitindo que o aplicativo extraia configurações do Config Server.

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

Você também pode configurar a associação de aplicativo no portal do Azure, conforme mostrado na captura de tela a seguir:

Captura de ecrã do portal do Azure que mostra a página do Spring Cloud Config Server com a lista pendente de ligação de aplicações realçada.

Nota

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

Se você alterar o status de vinculação/desvinculação, será necessário reiniciar ou reimplantar o aplicativo.

Agora você pode optar por vincular seu aplicativo ao Spring Cloud Config Server 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 Spring Cloud Config Server a partir do portal do Azure, conforme mostrado na captura de tela a seguir:

Captura de ecrã do portal do Azure que mostra a página Criar Aplicação com o menu pendente Bind realçado.

Excluir sua configuração

Selecione Redefinir na guia Spring Cloud Config Server para apagar as configurações existentes. Exclua as configurações do servidor de configuração se quiser conectar sua instância do Config Server a outra fonte, como quando estiver mudando 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 devem ser notificados antes que as alterações possam ser feitas. A solução padrão para o Spring Cloud Config Server é acionar manualmente o evento de atualização, o que pode não ser viável se houver muitas instâncias de aplicativo. Para obter mais informações, consulte Configuração centralizada

Em vez disso, você pode atualizar automaticamente os valores do Config Server permitindo que o cliente de configuração pesquise alterações com base em uma atualização interna.

Use as seguintes etapas para atualizar automaticamente os valores do Config Server:

  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 alterações 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 como false e o intervalo de atualização é definido como 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, consulte o exemplo config-client-polling .

Gerenciar o Spring Cloud Config Server em uma instância existente do plano Enterprise

Você pode habilitar e desabilitar o Spring Cloud Config Server após a criação do serviço usando o portal do Azure ou a CLI do Azure. Antes de desativar o Spring Cloud Config Server, é necessário desvincular todos os seus aplicativos dele.

Use as seguintes etapas para habilitar ou desabilitar o Spring Cloud Config Server:

  1. Navegue até sua instância de serviço e selecione Spring Cloud Config Server.

  2. Selecione Gerir.

  3. Selecione ou desmarque Ativar Spring Cloud Config Server e, em seguida, selecione Salvar.

    Captura de ecrã do portal do Azure que mostra o painel Gerir com a opção Ativar Servidor de Configuração realçada.

  4. Agora você pode visualizar o estado do Spring Cloud Config Server na página do Spring Cloud Config Server .

Azure Spring Apps