# UAT 的配置。两个 ConfigMap,用途不同,别合并: # # - conti-backend-env:以**环境变量**注入(Deployment 的 envFrom),application.yml 里 # ${DB_HOST} 这类占位符从这里取值。改了必须重启 Pod 才生效。 # - conti-backend-config:由 spring-cloud-kubernetes 直接读 K8s API 拿到(不挂卷), # 15 秒轮询一次,改了能热更新——但只对 @RefreshScope bean 生效,见下面的注释。 # # 敏感值一个都不在这里,全在 Secret 里(见 secret-uat.yaml)。 apiVersion: v1 kind: ConfigMap metadata: name: conti-backend-env namespace: retailapp-uat data: # Azure Database for MySQL Flexible Server,通过 Private Endpoint 接入 AKS 所在 VNet。 # 连接串里的 sslMode=REQUIRED 写在 application.yml 中,Flexible Server 默认要求 TLS。 DB_HOST: "conti-mysql-uat.mysql.database.azure.com" # 运行时账号,只有 DML 权限;迁移用的 DDL 账号是另一个(见 09-build-deploy.md) DB_USERNAME: "conti_app" SECURITY_JWT_ACTIVE_KEY_ID: "v1" F6_BASE_URL: "https://f6-uat.internal.example.com" MINI_BASE_URL: "https://mini-uat.internal.example.com" --- apiVersion: v1 kind: ConfigMap metadata: name: conti-backend-config namespace: retailapp-uat data: application-uat.yml: | # 这一段是**能**热更新的:改完 15 秒内通过 /actuator/loggers 同样的机制生效 logging: level: com.continental.retailapp: INFO # 这一段是**不能**热更新的,放在这里只是为了让阈值和代码分离、改的时候不用重新构建镜像。 # resilience4j 的实例在启动时创建,普通 refresh 刷不到它们——改完要走一次发布 # (或者 strategy: restart_context,等于一次内部重启)。见 07-config-governance.md 的表格。 resilience4j: circuitbreaker: instances: f6-api: failure-rate-threshold: 50 slow-call-duration-threshold: 1500ms