我在kubernetes 1.3.5上,我们正在使用带有rollupdates的Deployments来更新我们集群中的pod。但是,在rollingupdate上,新添加的环境变量永远不会添加到pod中,是否按设计?有什么方法可以解决这个问题?
以下是示例部署yaml文件。基本上部署是使用第一个版本部署的,然后我们使用新添加的env变量NEW_KEY
更新了yaml,并且基本上运行了滚动更新。但新的环境并未出现在PODS中。
第一版yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: APP_NAME-deployment
labels:
name: APP_NAME
environment: DEV
spec:
revisionHistoryLimit: 2
strategy:
type: RollingUpdate
replicas: 2
template:
metadata:
labels:
name: APP_NAME
environment: DEV
spec:
containers:
- name: APP_NAME
image: repo.app_name:latest
env:
- name: NODE_ENV
value: 'development'
- name: APP_KEY
value: '123'
更新了yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: APP_NAME-deployment
labels:
name: APP_NAME
environment: DEV
spec:
revisionHistoryLimit: 2
strategy:
type: RollingUpdate
replicas: 2
template:
metadata:
labels:
name: APP_NAME
environment: DEV
spec:
containers:
- name: APP_NAME
image: repo.app_name:latest
env:
- name: NODE_ENV
value: 'development'
- name: APP_KEY
value: '123'
- name: NEW_KEY
value: 'new'
答案 0 :(得分:0)
您可以将env变量存储在ConfigMap或secretKeyRef中。对于ConfigMap,您可以执行以下操作:
env:
- name: SPECIAL_LEVEL_KEY
valueFrom:
configMapKeyRef:
name: node_env
key: node.dev
或带有secretKeyRef:
env:
- name: SPECIAL_LEVEL_KEY
valueFrom:
secretKeyRef:
name: node_env
key: node.dev