Module Puppet / Trinity pour le provisionnement des environnements :
Exemple :
spring:
mail:
host:
port
#MANAGEMENT
management:
port:
address:
context-path:
#SECUTIRY
security:
enabled:
#SERVER
server:
port:
session-timeout:
tomcat:
uri-encoding:
basedir:
contextPath:
#LOGS
logging:
file:
security.oauth2.client:
client-id:
client-secret:
gitlab.auth-token:
spring:
mail:
host:
port
#MANAGEMENT
management:
server:
port:
address:
servlet:
context-path:
#SERVER
server:
port:
servlet:
session-timeout:
tomcat:
uri-encoding:
basedir:
servlet:
contextPath:
#LOGS
logging:
file:
security.oauth2.client:
client-id:
client-secret:
gitlab.auth-token:
Spring Boot 1.x
Spring Boot 2.x
--spring.profiles.active=$CYCLE$BACK_PROFILE --spring.config.location=file:$ROOT_FOLDER/conf/$APP-back.yml
Spring Boot 1.x
Spring Boot 2.x
--spring-boot.run.profiles=$CYCLE$BACK_PROFILE --spring.config.additional-location=file:$ROOT_FOLDER/conf/$APP-back.yml
implique une forte dépendance DEV / OPS !
Cf. https://flywaydb.org/documentation/releaseNotes#5.0.0
Avant de migrer sur une version Spring Boot 2.x qui va "tirer" une version 5.x de Flyway, il faut :
Cette partie n'a pas d'impact et est une phase préparatoire et obligatoire à mener jusqu'en production dans les meilleurs délais.
Les modifications sur les propriétés de configurations impliquent de facto la pasage à Spring Boot 2.x et donc la mise à jour du module Puppet pour Trinity
référence ici
Montées de versions (pom.xml):
- spring-boot-starter-parent : 2.2.0-RELEASE (au 22/10/2019)
- spring-cloud-dependencies : Greenwich.SR3
- spring-boot-admin : 2.1.6
+
ajout de la dépendance :
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-properties-migrator</artifactId>
<scope>runtime</scope>
</dependency>
Cette dépendance vous donnera des indications sur les changements d'espaces de nom.
Exemple :
2019-10-22 13:03:23,135 [main] [o.s.b.c.p.m.PropertiesMigrationListener] WARN -
The use of configuration keys that have been renamed was found in the environment:
Property source 'applicationConfig: [file:/opt/{appName}/conf/{appName}-back.yml]':
Key: management.address
Line: 10
Replacement: management.server.address
Key: management.context-path
Line: 11
Replacement: management.server.servlet.context-path
Key: management.port
Line: 9
Replacement: management.server.port
Key: server.context-path
Line: 21
Replacement: server.servlet.context-path
Each configuration key has been temporarily mapped to its replacement for your convenience. To silence this warning, please update your configuration to use the new keys.
Actuator :
Il faut désormais explicitement autoriser les endpoints (réf).
Exemple :
Il faut renseigner la propriété base-path, ici avec la valeur /.
Si ce n'est pas fait le endpoint sera par défaut :
/supervision/actuator/{endpoint}
et aura un impact sur la supervision !
management:
endpoints:
web:
base-path: /
exposure:
include: env,health,info,mappings
La première phase est relative à Flyway et n'introduit pas de difficulté particulière.
(Cf. https://github.com/spring-projects/spring-boot/wiki/spring-boot-1.5-release-notes pour les projets qui sont encore sur une version Spring Boot 1.4)
Elle devrait être time-boxée car obligatoire avant la migration Spring Boot 2.x
A vérifier s'il est nécessaire de séparer cette migration technique du fonctionnel en cours de développement (recommandé).
Les applications du socle (argos, eureka et themis) à migrer en premier pour vérifier les impacts sur les autres applications clientes.
La deuxième phase doit être coordonnée entre les Dév et les Ops.
Elle peut déjà embarquer les modifications à faire sur les configurations. En fonction de la stratégie choisie, la dernière phase peut donc devenir facultative.