Este tópico orienta a criação de uma aplicação de demonstração Spring Cloud que utiliza o Spring Cloud Alibaba Nacos Config para gerenciamento de configurações. Em seguida, aborda a implantação no SAE e o gerenciamento das configurações pelo console do SAE.
Manter valores de configuração diretamente no código torna as implantações frágeis, pois alterar um único parâmetro exige recompilar e reimplementar a aplicação. Ao externalizar a configuração com o Nacos, você atualiza os valores em tempo de execução sem modificar o código ou reiniciar o service. O SAE integra-se ao Nacos open source por meio do Application Configuration Management (ACM). Após a implantação de uma aplicação no SAE, o console do SAE gerencia e envia as alterações de configuração diretamente para as instâncias em execução.
Este tópico utiliza a aplicação de demonstração nacos-config-example. Baixe nacos-config-example.zip para acompanhar o tutorial.
Pré-requisitos
Antes de começar, certifique-se de ter:
O Maven baixado e adicionado ao PATH do sistema
Um Nacos Server local executando em modo standalone (consulte Iniciar o Nacos Server abaixo)
Uma configuração criada no console do Nacos Server local (consulte Criar uma configuração no Nacos Server local abaixo)
Iniciar o Nacos Server
Baixe e extraia o pacote do Nacos Server.
-
Acesse o diretório
nacos/bine execute o comando de inicialização correspondente ao seu sistema operacional:Linux, Unix ou macOS:
sudo sh startup.sh -m standaloneWindows:
startup.cmd -m standalone
A flag
-m standaloneinicia o Nacos em modo standalone, em vez do modo cluster (padrão). No Windows, clicar duas vezes no arquivostartup.cmdinicia o service em modo cluster, o que resulta em falha. Para corrigir, abra o arquivo e definaMODE="standalone". Consulte Quick Start for Nacos para obter mais detalhes.
Criar uma configuração no Nacos Server local
Faça login no console do Nacos Server. O nome de usuário e a senha padrão são ambos
nacos.No painel de navegação à esquerda, clique em Configurations. Na página Configurations, clique no ícone
no canto superior direito.-
Na página Create configuration, defina os seguintes parâmetros e clique em Publish:
Data ID:
nacos-config-example.propertiesGroup:
DEFAULT_GROUPConfiguration Content:
test.name=nacos-config-test
Etapa 1: Usar o Nacos Config para gerenciar configurações de aplicações
Compatibilidade de versões
Este exemplo utiliza o Spring Boot 2.1.4.RELEASE e o Spring Cloud Greenwich.SR1. Escolha a versão do Spring Cloud Alibaba compatível com sua release do Spring Cloud:
|
Release do Spring Cloud |
Versão do Spring Cloud Alibaba |
|
Greenwich |
2.1.1.RELEASE |
|
Finchley |
2.0.1.RELEASE |
|
Edgware |
1.5.1.RELEASE (descontinuada; não utilizar) |
Compilar a aplicação
Crie um projeto Maven chamado
nacos-config-example.-
Adicione as seguintes dependências ao arquivo
pom.xml. Como este exemplo usa o Spring Cloud Greenwich, a dependênciaspring-cloud-starter-alibaba-nacos-configdeve estar na versão2.1.1.RELEASE.<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version> <relativePath/> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.1.1.RELEASE</version> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Greenwich.SR1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> Em
src/main/java, crie o pacotecom.aliware.edas.-
Dentro do pacote
com.aliware.edas, crie a classe de inicializaçãoNacosConfigExampleApplication:import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class NacosConfigExampleApplication { public static void main(String[] args) { SpringApplication.run(NacosConfigExampleApplication.class, args); } } -
Ainda no pacote
com.aliware.edas, crie o controladorEchoController:A anotação
@Value("${test.name}")injeta o valor da chavetest.nameproveniente do Nacos Config.A anotação
@RefreshScoperecria o bean quando o Nacos envia uma alteração de configuração. Assim, o valor injetado se atualiza automaticamente sem necessidade de reinicialização. Sem essa anotação, a aplicação lê a configuração apenas na inicialização e ignora mudanças posteriores.
import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RefreshScope public class EchoController { @Value("${test.name}") private String userName; @RequestMapping(value = "/") public String echo() { return userName; } } -
No diretório
src/main/resources, crie o arquivobootstrap.propertiese adicione a seguinte configuração para conectar a aplicação ao seu Nacos Server local. O endereço127.0.0.1:8848é o padrão do Nacos Server; a porta18081corresponde à porta de service da aplicação. Altere o endereço e a porta caso seu Nacos Server esteja executando em outro local.spring.application.name=nacos-config-example server.port=18081 spring.cloud.nacos.config.server-addr=127.0.0.1:8848Para todas as opções de configuração disponíveis, consulte Referência de configurações.
Execute o método
mainda classeNacosConfigExampleApplicationpara iniciar a aplicação localmente.
Etapa 2: Implantar a aplicação no SAE
Após testar localmente, implante a aplicação no SAE. Para instruções de implantação, consulte Deploy applications.
Como o SAE substitui as configurações do Nacos
Quando a aplicação executa no SAE, a plataforma injeta automaticamente os seguintes detalhes de conexão do Nacos com prioridade superior aos valores definidos no seu arquivo bootstrap.properties: endereço IP e porta de service do Nacos Server, namespace, access key, secret key e context path. Não é necessário alterar o arquivo bootstrap.properties — você pode manter ou remover os valores originais.
Ambiente de execução
Na primeira vez que você implantar via console do SAE usando Deployment with JAR Packages, defina o Application Runtime Environment como Standard Java Application Runtime Environment. Selecione Open JDK 8 para Java Environment e escolha Upload JAR Package como File Upload Method.
Criar a configuração correspondente no SAE
Antes da implantação, recrie a mesma configuração no gerenciamento de configurações do SAE para que a aplicação possa lê-la após o deploy.
Faça login no console do SAE. No painel de navegação à esquerda, clique em Namespace e selecione uma região na barra de menu superior.
Na página Namespace, clique no nome do namespace desejado.
No painel de navegação à esquerda, escolha Distributed Configuration Management > Configurations. Na página Configurations, clique em Create Configuration.
-
No painel Create configuration, configure os parâmetros e clique em Create.
Parâmetro Descrição Data ID Identificador da configuração. Use nacos-config-example.propertiespara este exemplo. Para garantir unicidade, siga a convenção de nomenclaturapackage.class— por exemplo,com.taobao.tc.refund.log.level.Group Grupo da configuração. Utilize DEFAULT_GROUPneste exemplo. Para assegurar unicidade, adote o formatonome do product:nome do módulo— por exemplo,ACM:Test. Grupos oferecem suporte a autenticação.Data Encryption Habilita criptografia para configurações que contêm valores sensíveis. Requer a ativação do Key Management Service (KMS) e concessão de permissões no ACM. Configurações criptografadas possuem um Data ID com o prefixo `cipher-`. Consulte Create and use an encrypted configuration. Configuration Format Formato do conteúdo da configuração. Selecione TEXT para este exemplo. Configuration Content Conteúdo da configuração. Insira test.name=nacos-config-testpara este exemplo.Configuration Description Descrição opcional para a configuração. More Configurations Application (em More Configuration) Nome da aplicação à qual a configuração pertence. Label (em More Configuration) Rótulos para organizar configurações. São permitidos até cinco rótulos por configuração.
Etapa 3: Verificar o resultado
Depois que a aplicação iniciar no SAE, verifique se ela lê a configuração corretamente.
-
Execute o comando abaixo. Substitua
<application instance IP>e<service port>pelos valores reais da sua aplicação.curl http://<application instance IP>:<service port>Exemplo:
curl http://192.168.0.34:8080O comando retorna
nacos-config-testse a aplicação carregou a configuração com sucesso. > Tip: Caso o comando não retorne o valor esperado, verifique os logs da aplicação no console do SAE para confirmar se a conexão com o Nacos foi estabelecida corretamente. Confirme também se o Data ID e o Group no SAE correspondem aos valores definidos no arquivobootstrap.properties. -
No console do SAE, atualize o conteúdo da configuração de
nacos-config-testparanacos-config-test2e execute novamente o comandocurl.curl http://192.168.0.34:8080Agora o comando retorna
nacos-config-test2, confirmando que o SAE enviou a configuração atualizada para a aplicação em execução sem precisar reiniciá-la. A anotação@RefreshScopenoEchoControlleraciona a atualização automática.
Referência de configurações
Adicione qualquer um dos itens abaixo ao arquivo bootstrap.properties conforme necessário.
|
Item de configuração |
Chave |
Padrão |
Obrigatório |
Descrição |
|
Endereço do servidor |
|
Nenhum |
Sim |
Endereço do Nacos Server. |
|
Prefixo do Data ID |
|
|
Não |
Prefixo do Data ID. |
|
Grupo |
|
|
Não |
Grupo da configuração. |
|
Sufixo do Data ID e formato da configuração |
|
|
Não |
Sufixo do Data ID e formato do arquivo de configuração. Valores suportados: |
|
Codificação do conteúdo |
|
|
Não |
Codificação do conteúdo da configuração. |
|
Timeout de obtenção |
|
|
Não |
Tempo limite para obter a configuração, em milissegundos. |
|
Namespace |
|
Nenhum |
Não |
Isola configurações entre ambientes (por exemplo, desenvolvimento, teste e produção). |
|
Caminho relativo |
|
Nenhum |
Não |
Caminho relativo da API do servidor. |
|
Endpoint |
|
|
Não |
Endpoint de um service na região. Utilize para resolver dinamicamente o endereço do servidor. |
|
Habilitar listener e atualização automática |
|
|
Não |
Ativa o monitoramento de configurações e a atualização automática. Mantenha o valor padrão. |
Para a lista completa de itens de configuração, consulte a documentação do Spring Cloud Alibaba Nacos Config.
Próximos passos
Deploy applications — Implante sua aplicação Spring Cloud no SAE usando pacotes JAR ou outros métodos.
Create and use an encrypted configuration — Proteja valores sensíveis de configuração com criptografia baseada em KMS.