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