gpt4 book ai didi

kubernetes - Istio K8sObjectOverlay.PathValue 列表元素不起作用

转载 作者:行者123 更新时间:2023-12-02 11:32:09 25 4
gpt4 key购买 nike

我有一个 IstioOperator 的现有实例从 Istio v1.5 安装:

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
namespace: istio-system
name: istio
spec:
profile: default
components:
ingressGateways:
- namespace: istio-system
name: istio-ingressgateway
enabled: true
k8s:
serviceAnnotations:
"cloud.google.com/load-balancer-type": "Internal"
"service.beta.kubernetes.io/aws-load-balancer-internal": "0.0.0.0/0"
"service.beta.kubernetes.io/azure-load-balancer-internal": "true"
"external-dns.alpha.kubernetes.io/hostname": "*.SedTarget"
addonComponents:
kiali:
enabled: true
prometheus:
enabled: false

这工作得很好。

我在 k8s 中添加了以下部分部分(在 spec.components.ingressGateways[0].k8s 下):

          overlays:
- apiVersion: v1
kind: Service
name: istio-ingressgateway
patches:
- path: spec.ports.[name:kafka]
value:
name: kafka
protocol: TCP
port: 9092
targetPort: 9092

这样我就可以添加 kafka到端口列表。

这不起作用,即使 the docs show I should be able to specify something like [name:kafka] to add an element to a list :

K8sObjectOverlay.PathValue

Field - Path of the form a.[key1:value1].b.[:value2] Where [key1:value1] is a selector for a key-value pair to identify a list element and [:value] is a value selector to identify a list element in a leaf list. All path intermediate nodes must exist.



我相信这不是因为打字错误,因为我可以用 kafka 替换列表中的现有元素。通过指定类似 spec.ports[1] 的路径来修补 .我无法指定现有端口以使用任何 [key:value] 覆盖它对,和 spec.ports[-]不适用于附加到列表的末尾。

这不符合我的期望。有没有人知道我哪里出错了?

提前致谢!

最佳答案

我花了一些时间学习这个并得到了 tls服务工作。

首先,听起来您缺少 |在 YAML 覆盖中。

          overlays:
- apiVersion: v1
kind: Service
name: istio-ingressgateway
patches:
- path: spec.ports.[name:kafka]
value: | <== here
name: kafka
protocol: TCP
port: 9092
targetPort: 9092

您可以通过查看运算符(operator)日志来获取更多信息。例如:
$ kubectl -n istio-operator logs istio-operator-5998f6c744-kg2v6

你应该看到这样的东西:
2020-06-20T06:20:28.200545Z info    installer   Applying Kubernetes overlay:
- kind: Service
name: istio-ingressgateway
patches:
- path: spec.ports.[name:kafka]
value: |
name: kafka
port: 9092
protocol: TCP
targetPort: 9092

但是,这似乎并没有覆盖端口,我得到了(即使我手动将 kafka 端口添加到 istio-ingressgateway K8s 服务):
2020-06-20T06:37:01.388907Z error   reconciling err: path spec.ports.[name:kafka]: element [name:kafka] not found

它确实适用于现有的东西,例如 spec.ports.[name:tls] .

现在,我不确定您要通过修改入口网关服务来做什么。据我了解,这些覆盖适用于特定的 Istio 组件,而不是您“使用” Istio 本身的方式。

通常,要使用 Istio 添加网关/服务,您可以使用类似 this 的内容。与 GatewayVirtualService资源。

关于kubernetes - Istio K8sObjectOverlay.PathValue 列表元素不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62479965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com