Istio 1.1.4 helm setup --set global.defaultNodeSelector 示例
Istio 1.1.4 helm setup --set global.defaultNodeSelector sample
关于 Istio 1.1.4
的当前安装选项,应该可以 define a default node selector which gets added to all Istio deployments
文档没有显示如何定义选择器的专用示例,仅显示 {}
作为值。
目前我无法找到一种工作格式来使用 --set
将值传递给 helm 图表,例如:
--set global.defaultNodeSelector="{cloud.google.com/gke-nodepool:istio-pool}"
我尝试了几种变体,有和没有转义,JSON 映射,...但是目前所有的结果都是相同的 Helm 错误消息:
2019/05/06 15:58:10 Warning: Merging destination map for chart 'istio'. Cannot overwrite table item 'defaultNodeSelector', with non table value: map[]
Istio version 1.1.4
Helm 2.13.1
期望有更详细的文档,在 Istio 端提供一些示例。
搜索了几个小时后,我在发布问题后立即通过挖掘 Istio 提交找到了解决方案。
我会留下我的发现作为参考,也许有人可以这样安全一些。
至少对我来说,设置默认节点选择器是可行的,方法是用点分隔键并用 \ 转义其他键(如果感兴趣的标签中有点)
--set global.defaultNodeSelector.cloud\.google\.com/gke-nodepool=istio-pool
为标记为
的节点池创建 defaultNodeSelector
cloud.google.com/gke-nodepool: istio-pool
我无法添加多个值,因为在 Helm 中添加列表的 {} 表示法似乎不受尊重。
当使用 --set 指定覆盖时,多个 key/value 对基于键深度合并。
这意味着在您的情况下,只有最后一项会出现在生成的模板中。
即使您使用 -f(YAML 文件)选项覆盖,也会发生同样的情况。
以下是 -f 选项与 custom_values.yaml 一起使用的示例,带有可区分的键:
#custom_values.yaml
global:
defaultNodeSelector:
cloud.google.com/bird: stork
cloud.google.com/bee: wallace
helm template . -x charts/pilot/templates/deployment.yaml -f
custom_values.yaml
呈现的 Istio`s Pilot deployment.yaml 清单文件的片段:
volumes:
- name: config-volume
configMap:
name: istio
- name: istio-certs
secret:
secretName: istio.istio-pilot-service-account
optional: true
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: beta.kubernetes.io/arch
operator: In
values:
- amd64
- ppc64le
- s390x
- key: cloud.google.com/bee
operator: In
values:
- wallace
- key: cloud.google.com/bird
operator: In
values:
- stork
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 2
preference:
matchExpressions:
- key: beta.kubernetes.io/arch
operator: In
values:
- amd64
同样可以用--set:
实现
--set global.defaultNodeSelector."cloud\.google\.com/bird"=stork,global.defaultNodeSelector."cloud\.google\.com/bee"=wallace
关于 Istio 1.1.4
的当前安装选项,应该可以 define a default node selector which gets added to all Istio deployments
文档没有显示如何定义选择器的专用示例,仅显示 {}
作为值。
目前我无法找到一种工作格式来使用 --set
将值传递给 helm 图表,例如:
--set global.defaultNodeSelector="{cloud.google.com/gke-nodepool:istio-pool}"
我尝试了几种变体,有和没有转义,JSON 映射,...但是目前所有的结果都是相同的 Helm 错误消息:
2019/05/06 15:58:10 Warning: Merging destination map for chart 'istio'. Cannot overwrite table item 'defaultNodeSelector', with non table value: map[]
Istio version 1.1.4
Helm 2.13.1
期望有更详细的文档,在 Istio 端提供一些示例。
搜索了几个小时后,我在发布问题后立即通过挖掘 Istio 提交找到了解决方案。
我会留下我的发现作为参考,也许有人可以这样安全一些。
至少对我来说,设置默认节点选择器是可行的,方法是用点分隔键并用 \ 转义其他键(如果感兴趣的标签中有点)
--set global.defaultNodeSelector.cloud\.google\.com/gke-nodepool=istio-pool
为标记为
的节点池创建 defaultNodeSelectorcloud.google.com/gke-nodepool: istio-pool
我无法添加多个值,因为在 Helm 中添加列表的 {} 表示法似乎不受尊重。
当使用 --set 指定覆盖时,多个 key/value 对基于键深度合并。
这意味着在您的情况下,只有最后一项会出现在生成的模板中。
即使您使用 -f(YAML 文件)选项覆盖,也会发生同样的情况。
以下是 -f 选项与 custom_values.yaml 一起使用的示例,带有可区分的键:
#custom_values.yaml
global:
defaultNodeSelector:
cloud.google.com/bird: stork
cloud.google.com/bee: wallace
helm template . -x charts/pilot/templates/deployment.yaml -f custom_values.yaml
呈现的 Istio`s Pilot deployment.yaml 清单文件的片段:
volumes:
- name: config-volume
configMap:
name: istio
- name: istio-certs
secret:
secretName: istio.istio-pilot-service-account
optional: true
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: beta.kubernetes.io/arch
operator: In
values:
- amd64
- ppc64le
- s390x
- key: cloud.google.com/bee
operator: In
values:
- wallace
- key: cloud.google.com/bird
operator: In
values:
- stork
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 2
preference:
matchExpressions:
- key: beta.kubernetes.io/arch
operator: In
values:
- amd64
同样可以用--set:
实现--set global.defaultNodeSelector."cloud\.google\.com/bird"=stork,global.defaultNodeSelector."cloud\.google\.com/bee"=wallace