Este tema explica cómo compilar una aplicación de demostración Spring Cloud que utiliza Spring Cloud Alibaba Nacos Config para la gestión de configuraciones. Posteriormente, se describe cómo desplegarla en SAE y administrar sus configuraciones mediante la consola de SAE.
Mantener los valores de configuración dentro del código hace que los despliegues sean frágiles, ya que cambiar un solo parámetro obliga a recompilar y redesplegar la aplicación. Al externalizar la configuración con Nacos, es posible actualizar los valores en tiempo de ejecución sin modificar el código ni reiniciar el servicio. SAE se integra con Nacos de código abierto a través de Application Configuration Management (ACM). Una vez desplegada una aplicación en SAE, la consola de SAE gestiona y envía los cambios de configuración directamente a las instancias en ejecución.
Este tema utiliza la aplicación de demostración nacos-config-example. Descargar nacos-config-example.zip para seguir los pasos.
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Maven descargado y agregado al PATH del sistema
Un servidor Nacos local ejecutándose en modo independiente (consulte Iniciar Nacos Server más adelante)
Una configuración creada en la consola del servidor Nacos local (consulte Crear una configuración en el servidor Nacos local más adelante)
Iniciar Nacos Server
Descargue y extraiga el paquete de Nacos Server.
-
Vaya al directorio
nacos/biny ejecute el comando de inicio correspondiente a su sistema operativo:Linux, Unix o macOS:
sudo sh startup.sh -m standaloneWindows:
startup.cmd -m standalone
El indicador
-m standaloneinicia Nacos en modo independiente en lugar del modo clúster (que es el predeterminado). En Windows, hacer doble clic enstartup.cmdlo inicia en modo clúster y provoca un error. Para solucionarlo, abra el archivo y establezcaMODE="standalone". Consulte Inicio rápido de Nacos para obtener más detalles.
Crear una configuración en el servidor Nacos local
Inicie sesión en la consola de Nacos Server. El nombre de usuario y la contraseña predeterminados son ambos
nacos.En el panel de navegación izquierdo, haga clic en Configurations. En la página Configurations, haga clic en el icono
situado en la esquina superior derecha.-
En la página Create configuration, configure los siguientes parámetros y haga clic en Publish:
Data ID:
nacos-config-example.propertiesGroup:
DEFAULT_GROUPConfiguration Content:
test.name=nacos-config-test
Paso 1: Uso de Nacos Config para gestionar configuraciones de aplicaciones
Compatibilidad de versiones
Este ejemplo utiliza Spring Boot 2.1.4.RELEASE y Spring Cloud Greenwich.SR1. Elija la versión de Spring Cloud Alibaba que corresponda a su versión de Spring Cloud:
|
Versión de Spring Cloud |
Versión de Spring Cloud Alibaba |
|
Greenwich |
2.1.1.RELEASE |
|
Finchley |
2.0.1.RELEASE |
|
Edgware |
1.5.1.RELEASE (descontinuada; no utilizar) |
Compilar la aplicación
Cree un proyecto Maven llamado
nacos-config-example.-
Agregue las siguientes dependencias a
pom.xml. Este ejemplo usa Spring Cloud Greenwich, por lo quespring-cloud-starter-alibaba-nacos-configcorresponde a la versión2.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> En
src/main/java, cree el paquetecom.aliware.edas.-
En el paquete
com.aliware.edas, cree la clase de inicioNacosConfigExampleApplication: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); } } -
En el paquete
com.aliware.edas, cree el controladorEchoController:@Value("${test.name}")inyecta el valor de la clavetest.namedesde Nacos Config.@RefreshScopeprovoca que el bean se vuelva a crear cuando Nacos envía un cambio de configuración, de modo que el valor inyectado se actualiza automáticamente sin necesidad de reiniciar. Sin esta anotación, la aplicación lee la configuración solo al iniciarse e ignora los cambios 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; } } -
En
src/main/resources, creebootstrap.propertiesy agregue la siguiente configuración para conectar la aplicación a su servidor Nacos local.127.0.0.1:8848es la dirección predeterminada de Nacos Server;18081es el puerto de servicio de la aplicación. Modifique la dirección y el puerto si su servidor Nacos se ejecuta en otra ubicación.spring.application.name=nacos-config-example server.port=18081 spring.cloud.nacos.config.server-addr=127.0.0.1:8848Para consultar todas las opciones de configuración disponibles, véase Referencia de configuración.
Ejecute el método
mainenNacosConfigExampleApplicationpara iniciar la aplicación localmente.
Paso 2: Despliegue de la aplicación en SAE
Después de realizar las pruebas locales, despliegue la aplicación en SAE. Para obtener instrucciones de despliegue, consulte Deploy applications.
Cómo SAE sobrescribe la configuración de Nacos
Cuando la aplicación se ejecuta en SAE, este inyecta automáticamente los siguientes detalles de conexión de Nacos con una prioridad mayor que los valores definidos en bootstrap.properties: dirección IP y puerto de servicio de Nacos Server, namespace, access key, secret key y context path. No es necesario realizar cambios en bootstrap.properties; puede conservar o eliminar los valores originales.
Entorno de ejecución
La primera vez que realice un despliegue mediante la consola de SAE utilizando Deployment with JAR Packages, establezca Application Runtime Environment en Standard Java Application Runtime Environment. Seleccione Open JDK 8 para Java Environment y elija Upload JAR Package en File Upload Method.
Creación de la configuración correspondiente en SAE
Antes de desplegar, vuelva a crear la misma configuración en la gestión de configuraciones de SAE para que la aplicación pueda leerla tras el despliegue.
Inicie sesión en la consola de SAE. En el panel de navegación izquierdo, haga clic en Namespace y seleccione una región en la barra de menú superior.
En la página Namespace, haga clic en el nombre del namespace de destino.
En el panel de navegación izquierdo, vaya a Distributed Configuration Management > Configurations. En la página Configurations, haga clic en Create Configuration.
-
En el panel Create configuration, configure los parámetros y haga clic en Create.
Parámetro Descripción Data ID Identificador de la configuración. Utilice nacos-config-example.propertiespara este ejemplo. Para garantizar la unicidad, siga la convención de nombrespackage.class; por ejemplo,com.taobao.tc.refund.log.level.Group Grupo de configuración. Utilice DEFAULT_GROUPpara este ejemplo. Para garantizar la unicidad, utilice el formatonombre de producto:nombre de módulo; por ejemplo,ACM:Test. Los grupos admiten autenticación.Data Encryption Habilita el cifrado para configuraciones que contienen valores sensibles. Requiere la activación de Key Management Service (KMS) y la concesión de permisos de ACM. Las configuraciones cifradas tienen un Data ID con el prefijo `cipher-`. Consulte Create and use an encrypted configuration. Configuration Format Formato del contenido de la configuración. Seleccione TEXT para este ejemplo. Configuration Content Contenido de la configuración. Introduzca test.name=nacos-config-testpara este ejemplo.Configuration Description Descripción opcional de la configuración. More Configurations Application (en More Configuration) Nombre de la aplicación a la que pertenece la configuración. Label (en More Configuration) Etiquetas para organizar configuraciones. Se permiten hasta cinco etiquetas por configuración.
Paso 3: Comprobación del resultado
Una vez que la aplicación se inicie en SAE, compruebe que lee correctamente la configuración desde SAE.
-
Ejecute el siguiente comando. Reemplace
<application instance IP>y<service port>por los valores reales de su aplicación.curl http://<application instance IP>:<service port>Ejemplo:
curl http://192.168.0.34:8080El comando devuelve
nacos-config-testsi la aplicación cargó la configuración correctamente. > Tip: Si el comando no devuelve el valor esperado, revise los registros de la aplicación en la consola de SAE para confirmar que Nacos se conectó correctamente y verifique que el Data ID y el Group en SAE coincidan con los valores debootstrap.properties. -
En la consola de SAE, actualice el contenido de la configuración de
nacos-config-testanacos-config-test2y vuelva a ejecutar el comandocurl.curl http://192.168.0.34:8080Ahora el comando devuelve
nacos-config-test2, lo que confirma que SAE envió la configuración actualizada a la aplicación en ejecución sin necesidad de reiniciarla. La anotación@RefreshScopeenEchoControlleractiva la actualización automática.
Referencia de configuración
Agregue cualquiera de los siguientes elementos a bootstrap.properties según sea necesario.
|
Elemento de configuración |
Clave |
Valor predeterminado |
Obligatorio |
Descripción |
|
Dirección del servidor |
|
Ninguna |
Sí |
Dirección de Nacos Server. |
|
Prefijo del Data ID |
|
|
No |
Prefijo del Data ID. |
|
Grupo |
|
|
No |
Grupo de configuración. |
|
Sufijo del Data ID y formato de configuración |
|
|
No |
Sufijo del Data ID y formato del archivo de configuración. Valores compatibles: |
|
Codificación del contenido |
|
|
No |
Codificación del contenido de la configuración. |
|
Tiempo de espera de recuperación |
|
|
No |
Tiempo de espera para recuperar la configuración, en milisegundos. |
|
Namespace |
|
Ninguna |
No |
Aísla configuraciones entre entornos (por ejemplo, desarrollo, pruebas y producción). |
|
Ruta relativa |
|
Ninguna |
No |
Ruta relativa de la API del servidor. |
|
Endpoint |
|
|
No |
Endpoint de un servicio en la región. Úselo para resolver dinámicamente la dirección del servidor. |
|
Habilitar listener y actualización automática |
|
|
No |
Habilita la escucha de configuración y la actualización automática. Mantenga el valor predeterminado. |
Para consultar la lista completa de elementos de configuración, véase la documentación de Spring Cloud Alibaba Nacos Config.
Pasos siguientes
Deploy applications — Despliegue su aplicación Spring Cloud en SAE mediante paquetes JAR u otros métodos.
Create and use an encrypted configuration — Proteja los valores de configuración sensibles con cifrado respaldado por KMS.