GCP Secret Manager:Spring Boot应用中环境变量与密钥未解析
问题:GCP Secret Manager变量解析失败导致Cloud SQL连接错误
已完成的配置
application-deploy.yaml 配置
spring: cloud: gcp: project-id: ${PROJECT_ID} # 构建阶段(Docker)设置 sql: enabled: true database-name: xxxxxxxxxx instance-connection-name: ${sm://CLOUD_SQL_INSTANCE_CONNECTION_NAME} datasource: driver-class-name: org.postgresql.Driver username: ${sm://JDBC_DATABASE_USERNAME} password: ${sm://JDBC_DATABASE_PASSWORD} name: postgres
注:原配置中spring:following应为笔误,已修正为spring:
pom.xml 核心依赖
<dependency> <groupId>com.google.cloud</groupId> <artifactId>spring-cloud-gcp-starter</artifactId> </dependency> <dependency> <groupId>com.google.cloud</groupId> <artifactId>spring-cloud-gcp-starter-sql-postgresql</artifactId> </dependency> <dependency> <groupId>com.google.cloud</groupId> <artifactId>spring-cloud-gcp-starter-secretmanager</artifactId> </dependency>
bootstrap.yaml 配置
spring: cloud: gcp: project-id: ${PROJECT_ID} secretmanager: project-id: ${PROJECT_ID}
额外添加的依赖管理配置
<!-- ... --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency> <!-- ... --> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring.cloud-version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
IAM权限配置
已为服务账号主体添加Secret Manager Admin角色:
问题现象
执行gcloud run deploy部署服务后,应用立即崩溃,核心报错信息:
Caused by: java.lang.IllegalArgumentException: [//CLOUD_SQL_INSTANCE_CONNECTION_NAME] Cloud SQL connection name is invalid, expected string in the form of "<PROJECT_ID>:<REGION_ID>:<INSTANCE_ID>". at com.google.common.base.Preconditions.checkArgument(Preconditions.java:145) ~[guava-31.1-jre.jar!/:na] at com.google.cloud.sql.core.CloudSqlInstance.<init>(CloudSqlInstance.java:135) ~[jdbc-socket-factory-core-1.11.0.jar!/:na] at com.google.cloud.sql.core.CoreSocketFactory.lambda$getCloudSqlInstance$0(CoreSocketFactory.java:165) ~[jdbc-socket-factory-core-1.11.0.jar!/:na] at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708) ~[na:na] ...
疑问
请问还遗漏了什么配置?
内容的提问来源于stack exchange,提问作者Stefan Falk
相关产品推荐
相关产品推荐

