关于Istio 1.1.4
的当前安装选项,应该可以define a default node selector which gets added to all Istio deployments
文档中没有显示专用示例,说明如何定义选择器,仅将{}
作为值。
目前,我无法找到一种有效的格式,无法通过使用--set
将值传递到舵图,例如:
--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方面提供一些示例。
答案 0 :(得分:0)
经过几个小时的搜索后,我通过挖掘Istio提交发布了问题,从而找到了解决方案。
我将我的发现作为参考,也许有人可以这样来确保安全。
设置默认节点选择器至少对我而言是有效的,方法是将键之间用点分隔,并用\转义其他键(如果感兴趣的标签中有点)
--set global.defaultNodeSelector.cloud\\.google\\.com/gke-nodepool=istio-pool
为标有
的节点池创建defaultNodeSelectorcloud.google.com/gke-nodepool: istio-pool
我无法添加多个值,以致于{}在Helm中添加列表的符号似乎没有受到尊重。
答案 1 :(得分:0)
使用--set指定替代时,多个键/值对将基于键深度合并。
这意味着在您的情况下,生成的模板中只会显示最后一项。
即使使用-f(YAML文件)选项覆盖,也会发生同样的情况。
这是带有专有键的custom_values.yaml -f选项用法的示例:
public function timeEntries()
{
return $this->hasMany('App\Model\TimeEntries');
}
$array_of_project = Project::with('timeEntries')
->whereBetween('spent_on', [($request->debut)), ($request->fin))])
->get();
头盔模板。 -x图表/飞行员/模板/deployment.yaml -f custom_values.yaml
呈现的Istio的Pilot deployment.yaml清单文件片段:
#custom_values.yaml
global:
defaultNodeSelector:
cloud.google.com/bird: stork
cloud.google.com/bee: wallace
使用--set可以实现相同的目的
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