Configure um servidor Config Config de Nuvem de primavera gerido em Azure Spring Apps

Nota

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 lugares por um tempo enquanto trabalhamos para atualizar ativos como imagens, vídeos e diagramas.

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

Este artigo aplica-se a: ✔️ Nível empresarial básico ❌ /padrão

Este artigo mostra-lhe como configurar um servidor de Config Config de Nuvem de primavera gerido no serviço Azure Spring Apps.

O Spring Cloud Config Server fornece suporte ao servidor e ao cliente para uma configuração externa num sistema distribuído. A instância do Servidor Config fornece um lugar central para gerir propriedades externas para aplicações em todos os ambientes. Para mais informações, consulte a documentação da Cloud Config da Nuvem de primavera.

Pré-requisitos

Restrição

Existem algumas restrições quando utiliza o Config Server com uma parte traseira do Git. As seguintes propriedades são automaticamente injetadas no ambiente de aplicação para aceder ao Config Server e Ao Service Discovery. Se também configurar essas propriedades a partir dos seus ficheiros Config Server, poderá experimentar conflitos e comportamentos inesperados.

eureka.client.service-url.defaultZone
eureka.client.tls.keystore
eureka.instance.preferIpAddress
eureka.instance.instance-id
server.port
spring.cloud.config.tls.keystore
spring.application.name
spring.jmx.enabled

Atenção

Não coloque estas propriedades nos ficheiros de aplicação do Config Server.

Crie os seus ficheiros Config Server

As Aplicações Azure Spring suportam Azure DevOps, GitHub, GitLab e Bitbucket para armazenar os seus ficheiros Config Server. Quando o seu repositório estiver pronto, pode criar os ficheiros de configuração e armazená-los lá.

Algumas propriedades configuráveis estão disponíveis apenas para certos tipos. As seguintes secções descrevem as propriedades de cada tipo de repositório.

Nota

O Config Server assume master (em Git) como a etiqueta padrão se não especificar uma. No entanto, o GitHub mudou recentemente o ramo padrão de master .main Para evitar a falha do Servidor Config de Apps Azure Spring, certifique-se de que presta atenção à etiqueta padrão ao configurar o Config Server com o GitHub, especialmente para repositórios recém-criados.

Repositório público

Quando se usa um repositório público, as 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 pode usar para configurar um repositório público de Git.

Nota

Usar um hífen (-) para separar palavras é a única convenção de nomeação que é atualmente apoiada. Por exemplo, pode utilizar a etiqueta padrão, mas não o padrãoLabel.

Propriedade Necessário Funcionalidade
uri Yes O URI do repositório git que é usado como o Config Server back end. Deve começar por http://, https://ou git@. .ssh://
default-label No O rótulo padrão do repositório git. Deve ser o nome da filial, o nome da etiqueta, ou cometer identificação do repositório.
search-paths No Uma variedade de cordas que são usadas para pesquisar subdiretivas do repositório de Git.

Repositório privado com autenticação SSH

A tabela seguinte lista as propriedades configuráveis que pode usar para configurar um repositório privado de Git com SSH.

Nota

Usar um hífen (-) para separar palavras é a única convenção de nomeação que é atualmente apoiada. Por exemplo, pode utilizar a etiqueta padrão, mas não o padrãoLabel.

Propriedade Necessário Funcionalidade
uri Yes O URI do repositório git usado como o Config Server back end. Deve começar por http://, https://ou git@. .ssh://
default-label No O rótulo padrão do repositório git. Deve ser o nome da filial, o nome da etiqueta, ou cometer identificação do repositório.
search-paths No Uma série de cordas usadas para pesquisar subdiretivas do repositório de Git.
private-key No A chave privada SSH para aceder ao repositório de Git. Necessário quando o URI começa com git@ ou . ssh://.
host-key No A chave hospedeira do servidor do repositório git. Não deve incluir o prefixo do algoritmo como coberto por host-key-algorithm.
host-key-algorithm No O algoritmo da chave hospedeira. Deve ser ssh-dss, ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, ou ecdsa-sha2-nistp521. Obrigatório apenas se host-key existir.
strict-host-key-checking No Indica se a instância do Servidor Config não começará quando utilizar o privado host-key. Deve ser verdadeiro (valor predefinido) ou falso.

Nota

O Config Server ainda não suporta assinaturas SHA-2. Até que o suporte seja adicionado, use assinaturas SHA-1 ou auth básico.

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

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

Nota

Usar um hífen (-) para separar palavras é a única convenção de nomeação que é atualmente apoiada. Por exemplo, utilize a etiqueta padrão, não o padrãoLabel.

Propriedade Necessário Funcionalidade
uri Yes O URI do repositório git que é usado como o Config Server back end. Deve começar por http://, https://ou git@. .ssh://
default-label No O rótulo padrão do repositório git. Deve ser o nome da filial, o nome da etiqueta ou a identificação do repositório.
search-paths No Uma série de cordas usadas para pesquisar subdiretivas do repositório de Git.
username No O nome de utilizador que é usado para aceder ao servidor do repositório git. Requerido quando o servidor do repositório Git suporta a autenticação básica HTTP.
password No A palavra-passe ou o símbolo de acesso pessoal usado para aceder ao servidor do repositório git. Requerido quando o servidor do repositório Git suporta a autenticação básica HTTP.

Nota

Muitos servidores de repositórios git suportam o uso de fichas em vez de palavras-passe para autenticação básica HTTP. Alguns repositórios permitem que os tokens persistam indefinidamente. No entanto, alguns servidores de repositórios de Git, incluindo Azure DevOps Server, forçam tokens a expirar em poucas horas. Os repositórios que fazem com que os tokens expirem não devem usar a autenticação baseada em símbolos com apps Azure Spring.

O GitHub removeu o suporte para a autenticação de passwords, pelo que terá de utilizar um token de acesso pessoal em vez de autenticação por palavra-passe para o GitHub. Para obter mais informações, consulte os requisitos de autenticação token para as operações de Git.

Outros repositórios de Git

A tabela a seguir lista as propriedades configuráveis que pode usar para configurar repositórios git com um padrão.

Nota

Usar um hífen (-) para separar palavras é a única convenção de nomeação que é atualmente apoiada. Por exemplo, utilize a etiqueta padrão, não o padrãoLabel.

Propriedade Necessário Funcionalidade
repos No Um mapa constituído pelas definições de um repositório de Git com um nome próprio.
repos."uri" Sim, em repos O URI do repositório git que é usado como o Config Server back end. Deve começar por http://, https://ou git@. .ssh://
repos."name" Sim, em repos Um nome para identificar o repositório; por exemplo, equipa A ou equipa B. Obrigatório apenas se repos existir.
repos."pattern" No Uma série de cordas usadas para combinar com um nome de aplicação. Para cada padrão, utilize o formato {application}/{profile} com wildcards.
repos."default-label" No O rótulo padrão do repositório git. Deve ser o nome da filial, o nome da etiqueta ou cometer IOD do repositório.
repos."search-paths" No Uma série de cordas usadas para pesquisar subdiretivas do repositório de Git.
repos."username" No O nome de utilizador usado para aceder ao servidor do repositório Git. Requerido quando o servidor do repositório Git suporta a autenticação básica HTTP.
repos."password" No A palavra-passe ou o símbolo de acesso pessoal usado para aceder ao servidor do repositório git. Requerido quando o servidor do repositório Git suporta a autenticação básica HTTP.
repos."private-key" No A chave privada SSH para aceder ao repositório de Git. Requerido quando o URI começa com git@ ou . ssh://.
repos."host-key" No A chave hospedeira do servidor do repositório git. Não deve incluir o prefixo do algoritmo como coberto por host-key-algorithm.
repos."host-key-algorithm" No O algoritmo da chave hospedeira. Deve ser ssh-dss, ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, ou ecdsa-sha2-nistp521. Obrigatório apenas se host-key existir.
repos."strict-host-key-checking" No Indica se a instância do Servidor Config não começará quando utilizar o privado host-key. Deve ser verdadeiro (valor predefinido) ou falso.

A tabela a seguir mostra alguns exemplos de padrões para configurar o seu serviço com um repositório adicional opcional. Para mais informações, consulte a secção de repositórios adicionais e a secção de correspondência de padrões e repositórios múltiplos da documentação da primavera.

Padrões Description
teste-config-servidor-app-0/* O padrão e repositório URI correspondem a uma aplicação de boot spring com o nome test-config-server-app-0 de qualquer perfil.
teste-config-servidor-app-1/dev O padrão e repositório URI correspondem a uma aplicação de boot spring com test-config-server-app-1 um perfil dev.
test-config-server-app-2/prod O padrão e repositório URI corresponde a uma aplicação de boot spring nomeado test-config-server-app-2 com um perfil de prod.

Screenshot de portal do Azure mostrando a página do Servidor Config com a coluna Padrões da tabela 'Repositórios adicionais' realçada.

Anexe o seu repositório Config Server a Azure Spring Apps

Agora que os seus ficheiros de configuração são guardados num repositório, use os seguintes passos para ligar as Aplicações Azure Spring ao repositório.

  1. Inicie sessão no portal do Azure.

  2. Vá à sua página de visão geral de apps da primavera Azure.

  3. Selecione Config Server no painel de navegação esquerdo.

  4. Na secção de repositório predefinido , desafine o URI para https://github.com/Azure-Samples/piggymetrics-config.

  5. Selecione Validar.

    Screenshot de portal do Azure mostrando a página do Servidor Config.

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

    Screenshot de portal do Azure mostrando a página do Servidor Config com o botão Aplicar realçado.

A atualização da configuração pode demorar alguns minutos. Deverá receber uma notificação quando a configuração estiver completa.

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

Pode introduzir informações de repositório para o repositório predefinido e, opcionalmente, para repositórios adicionais.

Repositório padrão

Utilize os passos desta secção para introduzir informações de repositório para um repositório público ou privado.

  • Repositório público: Na secção de repositório padrão , na caixa Uri , cole o repositório URI. Introduza config para a definição de etiqueta . Certifique-se de que a definição de Autenticação é pública e, em seguida, selecione Aplicar.

  • Repositório privado: A azure Spring Apps suporta a autenticação básica baseada em password/token e SSH.

    • Autenticação Básica: Na secção de repositório predefinido , na caixa Uri , cole o URI repositório e, em seguida, selecione a definição em Autenticação para abrir o painel de Autenticação de Edição . Na lista de drop-down do tipo autenticação , selecione HTTP Basic e, em seguida, insira o seu nome de utilizador e palavra-passe/token para garantir o acesso às Aplicações Azure Spring. Selecione OK e, em seguida, selecione Aplicar para terminar a configuração da sua instância Config Server.

    Screenshot da secção de repositório predefinido mostrando definições de autenticação para autenticação básica.

    Nota

    Muitos servidores de repositórios git suportam o uso de fichas em vez de palavras-passe para autenticação básica HTTP. Alguns repositórios permitem que os tokens persistam indefinidamente. No entanto, alguns servidores de repositórios de Git, incluindo Azure DevOps Server, forçam tokens a expirar em poucas horas. Os repositórios que fazem com que os tokens expirem não devem usar a autenticação baseada em símbolos com apps Azure Spring.

    O GitHub removeu o suporte para a autenticação de passwords, pelo que terá de utilizar um token de acesso pessoal em vez de autenticação por palavra-passe para o GitHub. Para obter mais informações, consulte os requisitos de autenticação token para as operações de Git.

    • SSH: Na secção de repositório predefinido , na caixa Uri , cole o URI repositório e, em seguida, selecione a definição em Autenticação para abrir o painel de Autenticação de Edição . No painel de autenticação de edição , na lista de drop-down do tipo autenticação , selecione SSH e, em seguida, introduza a sua chave privada. Opcionalmente, especifique a chave de anfitrião e o algoritmo da chave do anfitrião. Inclua a sua chave pública no seu repositório Config Server. Selecione OK e, em seguida, selecione Aplicar para terminar a configuração da sua instância Config Server.

    Screenshot da secção de repositório predefinido mostrando definições de autenticação para autenticação SSH.

Repositórios adicionais

Se pretender configurar o seu serviço com um repositório adicional opcional, especifique as definições Uri e Autenticação como fez para o repositório predefinido. Certifique-se de incluir uma definição de nome para o seu padrão e, em seguida, selecione Aplicar para anexá-lo ao seu exemplo.

Insira informações de repositório num ficheiro YAML

Se escreveu um ficheiro YAML com as suas definições de repositório, pode importar o ficheiro diretamente da sua máquina local para apps Azure Spring. O exemplo a seguir mostra um simples ficheiro YAML para um repositório privado com autenticação básica.

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

Selecione o botão Desembaraçar as definições de Importação e, em seguida, selecione o ficheiro YAML do seu diretório de projetos. Selecione Import (Importar).

Screenshot do painel de definições Config Server Import.

As suas Notificações mostram uma async operação. O Config Server deve reportar o sucesso após 1-2 minutos. A informação do seu ficheiro YAML aparece no portal do Azure. Selecione Aplicar para terminar a importação.

Use Azure Repos para configuração de Apps Azure Spring

As Aplicações Azure Spring podem aceder a repositórios de Git que são públicos, protegidos pela SSH, ou protegidos através da autenticação básica HTTP. A autenticação básica HTTP é a mais fácil das opções para criar e gerir repositórios com a Azure Repos.

Obtenha URL de repo e credenciais

Use os seguintes passos para obter o seu URL de repo e credenciais.

  1. No portal Azure Repos para o seu projeto, selecione o botão Clone :

  2. Copie o URL do clone da caixa de texto. Este URL será tipicamente na seguinte forma:

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

    Retire tudo depois https:// e antes dev.azure.com, incluindo o @ símbolo. O URL resultante deve ser da seguinte forma:

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

    Guarde este URL para utilização na secção seguinte.

  3. Selecione 'Gerar Credenciais Git' para exibir um nome de utilizador e uma palavra-passe, que devem ser guardados para utilização na secção seguinte.

Configure Azure Spring Apps para aceder ao repositório git

  1. Inicie sessão no portal do Azure.

  2. Vá à sua página de visão geral de apps da primavera Azure.

  3. Selecione o serviço para configurar.

  4. No painel esquerdo da página de serviço em Definições, selecione o separador Servidor Config . Configure o repositório que criou, da seguinte forma:

    • Adicione o URI repositório que guardou na secção anterior.
    • Selecione a definição em Autenticação para abrir o painel de autenticação de edição .
    • Para o tipo de autenticação, selecione HTTP Basic.
    • Para o nome de utilizador, especifique o nome de utilizador que guardou na secção anterior.
    • Para obter palavra-passe, especifique a palavra-passe que guardou na secção anterior.
    • Selecione OK e, em seguida, aguarde que a operação esteja concluída.

    Screenshot das definições de configuração do repositório.

Elimine a sua configuração

Selecione Reset no separador Servidor Config para apagar as definições existentes. Elimine as definições do servidor config se pretender ligar a sua instância do Config Server a outra fonte, como quando estiver a mover-se do GitHub para o Azure DevOps.

Atualizar o Config Server

Quando as propriedades são alteradas, os serviços que consomem essas propriedades devem ser notificados antes de serem feitas alterações. A solução padrão para o Spring Cloud Config Server é desencadear manualmente o evento de atualização, o que pode não ser viável se existirem muitas instâncias de aplicações. Para mais informações, consulte configuração centralizada

Em vez disso, pode atualizar automaticamente os valores do Config Server, permitindo que a pesquisa do cliente config para alterações com base numa atualização interna. Utilize os seguintes passos para atualizar automaticamente os valores do Config Server.

  1. Registar uma tarefa programada para atualizar o contexto num determinado intervalo, como mostra o exemplo seguinte.

    @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. Ative a atualização automática e desavete o intervalo de atualização apropriado no seu ficheiro application.yml . No exemplo seguinte, as sondagens do cliente para config alteram-se a cada 60 segundos, que é o valor mínimo que pode definir para um intervalo de atualização.

    Por predefinição, a atualização automática é definida como falsa e o intervalo de atualização é definido para 60 segundos.

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

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

Para mais informações, consulte a amostra de sondagem config-cliente.

Passos seguintes

Neste artigo, aprendeu a ativar e configurar a sua instância do Servidor Config da Nuvem de primavera. Para saber mais sobre como gerir a sua aplicação, consulte a Scale uma aplicação em Azure Spring Apps.