首先開發一個簡單的SpringBoot demo項目。
application.yml
mysql:
host: 106.14.13.61
...
如果想動態改變mysql中的連接地址,目前有很多種方法,比如java -jar 啓動命令傳值,DockerFile鏡像文件傳值。
今天演示的是利用kubernetes的configMap動態配置mysql的url
爲了方便效果,我們可以在SpringBoot demo項目中寫個controller將url host返回。
@Value("${mysql.host}")
private String host;
開始編寫編排文件
deploy.yaml
---
apiVersion: v1
kind: Service
metadata:
name: demo-wpp-service
spec:
type: NodePort
selector:
app: demo-wpp
ports:
- port: 80
targetPort: 8088
nodePort: 30089
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: demo-wpp-deployment
spec:
replicas: 2
template:
metadata:
labels:
app: demo-wpp
spec:
containers:
- name: demo-wpp
image: registry.cn-shanghai.aliyuncs.com/glodoncornerstone/demo_wpp
imagePullPolicy: IfNotPresent
args: [
"--mysql.host=$(mysql_host)"
]
env:
- name: mysql_host
valueFrom:
configMapKeyRef:
name: demo-wpp-configmap
key: mysql_host
ports:
- containerPort: 8088
---
apiVersion: v1
kind: ConfigMap
metadata:
name: demo-wpp-configmap
data:
mysql_host: "106.14.13.62"
執行
kubectl apply -f deploy.yaml
驗證
瀏覽器輸入
http://ip:30089/api/port
瀏覽器返回 106.14.13.62
驗證成功,configmap優先級是高於其他的