Sal*_*elo 7 kubernetes kustomize
我有一个像这样的 StatefulSet:
apiVersion: apps/v1
kind: StatefulSet
metadata:
namespace: myns
name: myapp
spec:
replicas: 3
template:
spec:
containers:
- name: mycontainer
image: ...
...
env:
- name: MY_ENV1
value: "1"
Run Code Online (Sandbox Code Playgroud)
现在我想通过 Kustomize 添加第二个环境变量,因为它仅在开发环境中使用。我做了这样的事情:
namespace: myns
resources:
...
patches:
- patch: |-
- op: add
path: "/spec/template/spec/containers/0/env/-"
value:
- name: MY_ENV2
value: "2"
target:
kind: StatefulSet
namespace: myns
name: myapp
Run Code Online (Sandbox Code Playgroud)
问题是它不起作用。如果我运行,kustomize build我看不到这个附加变量(我看到其他变体)。
谁能帮助我了解如何实施它?
Sal*_*elo 13
这个问题的问题是我忘记添加version: v1补丁的目标部分。然后您还应该删除-值部分中标记名称前面的 。结果应该是这样的:
apiVersion: apps/v1
kind: StatefulSet
metadata:
namespace: myns
name: myapp
spec:
replicas: 3
template:
spec:
containers:
- name: mycontainer
image: ...
...
env:
- name: MY_ENV1
value: "1"
Run Code Online (Sandbox Code Playgroud)
这里是kustomization.yaml文件:
namespace: myns
resources:
...
patches:
- patch: |-
- op: add
path: "/spec/template/spec/containers/0/env/-"
value:
name: MY_ENV2
value: "2"
target:
kind: StatefulSet
namespace: myns
name: myapp
Run Code Online (Sandbox Code Playgroud)
这对于我原来的问题来说效果很好。我现在遇到了类似的问题,这次我需要替换基础部署中的现有环境变量。
我会考虑在您的 StatefulSet 中使用envFrom从 ConfigMap 加载变量,然后您可以使用configMapGenerator带有 N 个文字的变量。
请参阅将 ConfigMap 中的所有键值对配置为容器环境变量,例如envFrom:
使用 envFrom 将 ConfigMap 的所有数据定义为容器环境变量。ConfigMap 中的键成为 Pod 中的环境变量名称。
configMapGenerator是生成此 ConfigMap 的好方法。它可以通过多种不同的方式完成,但这里是一个带有文字的示例- 来自同一文档页面,但适合您的示例:
cat <<EOF >./kustomization.yaml
configMapGenerator:
- name: example-configmap-2
literals:
- MY_ENV1=Foo
- MY_ENV2=Bar
EOF
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22962 次 |
| 最近记录: |