一、接着上文
本文的内容是在k8s容器中,如何使用configmap对.env文件进行挂载,实现环境的差异化配置。
二、源码结构
项目ChatGPT-Next-Web使用了.env文件来配置不同环境下的值:
所以,我们同理新增两个配置文件,见下:
三、k8s使用configmap挂载.env文件
生产环境的.env文件对应生产环境的数据库连接等信息,不可能写在上面的源码中。
所以,我们在生产k8s里新增.env文件,挂载到容器的对应文件。
1、新增configmap配置
把.env.production文件配置在configmap,下一步将在deployment.yaml中引用它。
- 配置项名称ai-assist-web-conf
- 文件的path路径是.env.production
2、deployment.yaml引用configmap,挂载.env.production文件
增加以下内容:
################ 修改前 #######################volumeMounts:- mountPath: /etc/localtimename: volume-localtimevolumes:- hostPath:path: /etc/localtimetype: ''name: volume-localtime############### 修改后 #####################volumeMounts:- mountPath: /etc/localtimename: volume-localtime# 注意容器里,该配置文件的路径是/opt- mountPath: /opt/.env.productionname: configmap-volumesubPath: .env.productionvolumes:- hostPath:path: /etc/localtimetype: ''name: volume-localtime- name: configmap-volumeconfigMap:name: ai-assist-web-confitems:- key: .env.productionpath: .env.production
3、完整的deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: ai-assist-webname: ai-assist-webnamespace: web-service
spec:progressDeadlineSeconds: 600replicas: 1revisionHistoryLimit: 10selector:matchLabels:app: ai-assist-webstrategy:rollingUpdate:maxSurge: 25%maxUnavailable: 25%type: RollingUpdatetemplate:metadata:labels:app: ai-assist-webspec:containers:- image: xxx-harbor-registry-vpc.cn-hangzhou.cr.aliyuncs.com/xxx/ai-assist-web:1.0.5imagePullPolicy: Alwaysname: ai-assist-webports:- containerPort: 5173env:- name: TZvalue: Asia/Shanghai- name: PORTvalue: '5173'resources:limits:cpu: 2memory: 2Girequests:cpu: 200mmemory: 1.8GiterminationMessagePath: /dev/termination-logterminationMessagePolicy: FilevolumeMounts:- mountPath: /etc/localtimename: volume-localtime- mountPath: /opt/.env.productionname: configmap-volumesubPath: .env.productiondnsPolicy: ClusterFirstrestartPolicy: AlwaysschedulerName: default-schedulersecurityContext: {}terminationGracePeriodSeconds: 30volumes:- hostPath:path: /etc/localtimetype: ''name: volume-localtime- name: configmap-volumeconfigMap:name: ai-assist-web-confitems:- key: .env.productionpath: .env.production
四、验证挂载
进入容器,查看.env.production文件的内容。
切到目录/opt
- 查看.env.production文件内容,确认与configmap挂载一致