在这里我可以通过kubectl patch
更新 envs,那么除了重新部署deployment.yaml
之外,有什么方法可以删除 envs 吗?
$ kubectl patch deployment demo-deployment -p '{"spec":{"template":{"spec":{"containers":[{"name": "demo-deployment","env":[{"name":"foo","value":"bar"}]}]}}}}'
deployment.extensions "demo-deployment" patched
我可以通过命令行删除环境"foo"而不在整个部署上使用重新部署吗?
这来得晚了,但对于新手,您可以使用以下kubectl
命令从部署中删除现有的 env 变量
kubectl set env deployment/DEPLOYMENT_NAME VARIABLE_NAME-
不要省略末尾的连字符 (-
(
如果您对重新部署感到满意,请按照以下步骤操作
- 创建配置映射并包含环境变量
- 在部署中从配置映射加载 env 变量
envFrom:
- configMapRef:
name: app-config
- 如果要删除 env 变量,请从配置映射中删除这些键值对
- 这将导致重新部署。您也可以从相应的部署中删除容器
考虑containers
是对象内部的数组。数组只能通过它们的index
获取,而不是通过键值对获取的对象。请参阅此处的参考资料。 所以有一个解决方法 使用index
.
在这里,您有放置在container
中的env
:
spec:
containers:
- env:
- name: DEMO_GREETING
value: Hello from the environment
- name: DSADASD
value: asdsad
在这里,您有一个命令可以使用index
删除anv:
kubectl patch deployments asd --type=json -p='[{"op": "remove", "path": "/spec/template/spec/containers/0/env/1"}]
结果是:
spec:
containers:
- env:
- name: DEMO_GREETING
value: Hello from the environment
但是,这仍会重新启动容器。 希望对您有所帮助!