環境
- kubernetes 1.20.2
- Spring Boot 2.5.0-M1
目標
在 Spring Boot 中,環境變量的值的優先級比配置文件中的高,所以我們給 Pod 添加環境變量,
來改變 Spring Boot 值,這里以修改端口號為例,從 8080 修改到 80。
增加環境變量
rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: rc-demo
spec:
replicas: 3
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: pod-demo
image: jiangbo920827/spring-demo:external
ports:
- containerPort: 80
env:
- name: SERVER_PORT
value: "80"
查看 Pod 狀態
[root@master kubernetes]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
rc-demo-b7r9f 1/1 Running 0 76s 10.244.1.106 node1 <none> <none>
rc-demo-b9mqr 1/1 Running 0 76s 10.244.1.104 node1 <none> <none>
rc-demo-r6nv8 1/1 Running 0 76s 10.244.1.105 node1 <none> <none>
驗證
訪問 hostname
[root@master kubernetes]# curl 10.244.1.105/hostname
rc-demo-r6nv8 external[root@master kubernetes]#
訪問數據庫值
[root@master kubernetes]# curl 10.244.1.105/users
[{"name":"jiangbo","age":44}][root@master kubernetes]#
查看環境變量
[root@master kubernetes]# kubectl exec rc-demo-r6nv8 -- printenv | grep SERVER
SERVER_PORT=80
總結
通過給 Pod 注入環境變量,修改 Spring Boot 項目中的配置,來達到動態配置的目的。