首先开发一个简单的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优先级是高于其他的