使用 Spring Boot 应用程序时,可以通过环境变量配置数据源属性,比如用户名和密码。你已经提供了一个示例,下面是如何在 Kubernetes 中使用 Secret 来配置 Spring Boot 数据源的完整步骤。
1. 创建 Secret
首先,创建一个 Secret,包含 MySQL 的用户名和密码。确保使用 base64 编码这些值。
apiVersion: v1
kind: Secret
metadata:
name: mysql-account-secret
type: Opaque
data:
user: bXlzcWx1c2Vy # base64 编码后的用户名
password: bXlzcWxwYXNzd29yZA== # base64 编码后的密码
使用以下命令创建 Secret:
kubectl apply -f mysql-account-secret.yaml
2. 部署 Spring Boot 应用
在 Deployment 文件中引用 Secret 中的用户名和密码作为环境变量。
apiVersion: apps/v1
kind: Deployment
metadata:
name: spring-boot-app
spec:
replicas: 1
selector:
matchLabels:
app: spring-boot-app
template:
metadata:
labels:
app: spring-boot-app
spec:
containers:
- name: spring-boot-app
image: your-spring-boot-app-image
env:
- name: SPRING_DATASOURCE_USERNAME
valueFrom:
secretKeyRef:
name: mysql-account-secret
key: user
- name: SPRING_DATASOURCE_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-account-secret
key: password
# 如果需要,还可以添加其他环境变量,如数据库 URL
- name: SPRING_DATASOURCE_URL
value: jdbc:mysql://my-database:3306/mydb
使用以下命令部署应用:
kubectl apply -f spring-boot-app-deployment.yaml
3. 在 Spring Boot 应用中使用环境变量
Spring Boot 自动支持从环境变量中读取配置,因此不需要额外的代码更改。Spring Boot 会自动将环境变量 SPRING_DATASOURCE_USERNAME
和 SPRING_DATASOURCE_PASSWORD
映射到 spring.datasource.username
和 spring.datasource.password
配置属性。
通过这种方式,你可以在 Kubernetes 中安全地管理 Spring Boot 应用的 MySQL 配置。确保你的应用已经配置为使用 Spring Boot 的自动配置功能来读取这些环境变量。