Configmap部署k8s下Springboot服務的辦法
前提
- 日常工作中需要使用k8s部署微服務環境, 但是內部的數據庫連接和redis等連接非常麻煩,使用helm chart 進行變量替換時非常繁瑣,要求也比較高.
- 與同事溝通發現可以使用configmap的方式進行替換,內部文件, 最近進行了實驗,總結如下.
獲取配置文件
- 使用產品在需要部署的環境下,或者是客戶現場進行修改
修改redis的配置信息, 主要是 host port password 等.
修改rabbitmq等的信息,主要是 host password 以及virtual_host等.
修改數據庫連接信息, 建議使用 tools/setup的方式進行註冊,避免異常.
重建configmap
- 注意congfigmap的方式有多種,這裏因爲僅是進行文件替換,所以選擇from file的方式.
kubectl create configmap appconfig --from-file=application.yaml
注意創建完成後可以使用
kubectl get configmap dappconfig -o yaml
的方式進行查看.
修改部署服務的deployment 配置節
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: test
name: test-deployment
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: test
template:
metadata:
labels:
app: test
spec:
containers:
- image: images:tag
volumeMounts:
- mountPath: /yourapp/server/runtime/application.yaml
name: dapplication
subPath: application.yaml
ports:
- containerPort: 5200
name: igix
volumes:
- name: application
configMap:
name: appconfig
修改部署服務的deployment 配置節
- 注意需要在 volumeMounts 內添加描述信息
- name 必須與創建的configmap 名字保持一致.
- mountPath 指向的你要使用configmap替換的具體的配置文件.
- subPath 需要執行需要替換的文件名, 如果不輸入會報錯,
- volumes 裏面需要添加 configMap的配置信息, 注意需要與 定義的configmap保持一致.
部署deployment 然後部署serveice 使用nodePort的方式驗證即可.
- 使用configmap 比較簡單, 避免變量替換, 可以省下很多時間.