安装过程中的Istio-ingressgateway定制

时间:2020-09-25 06:13:15

标签: istio

在安装Istio时,我需要将Istio Ingressgateway(网关对象)的“主机”从默认值“ *”更改为“任何”。我们正在使用IstioOperator进行安装的自定义。 我认为应该使用 k8s叠加

...
   k8s:
         overlays:
            - kind: Gateway
              name: istio-ingressgateway
              patches:
                - path: spec.servers.??????
                  value: whatever
...

path属性的表达式应该是什么?

我在https://github.com/istio/istio/blob/master/operator/pkg/patch/patch.go上找到了一些信息,但情况并不完全相同。

因此,名称空间istio-system中的istio-gateway网关对象应更改为

spec:
  servers:
    - hosts:
        - '*'
      port:
        name: http
        number: 80
        protocol: HTTP

spec:
  servers:
    - hosts:
        - whatever
      port:
        name: http
        number: 80
        protocol: HTTP

我们正在使用Istio 1.5.6

谢谢!

使用工作示例进行更新

@Jakub致谢,以指示我正确的方向。

          overlays:
            - kind: Gateway
              name: istio-ingressgateway
              patches:
                - path: spec.servers[0]
                  value: 
                    hosts:
                      - whatever.dummy
                    port:
                      name: http
                      number: 80
                      protocol: HTTP

1 个答案:

答案 0 :(得分:1)

我将其发布为社区Wiki答案,以提高可见度。


与此类似,{@ {3}}带有@Jens Wurm提供的答案和代码示例。

这是覆盖的一部分,它将添加带有某些示例规格的另一个服务器条目。只需将其调整为您想要的方式即可。您还可以使用spec.servers [0]路径覆盖第一个服务器条目,然后将该值设置为所需的值。

ingressGateways: 
  - enabled: true
    k8s:
      overlays:
      - apiVersion: networking.istio.io/v1alpha3
        kind: Gateway
        name: ingressgateway
        patches:
        - path: spec.servers[1]
          value:
            hosts:
              - '*.example.com'
            port:
              name: https
              number: 443
              protocol: HTTPS
            tls:
              credentialName: example-cert
              mode: SIMPLE
              privateKey: sds
              serverCertificate: sds

还有@Peter Claes提供的工作示例

  overlays:
    - kind: Gateway
      name: istio-ingressgateway
      patches:
        - path: spec.servers[0]
          value: 
            hosts:
              - whatever.dummy
            port:
              name: http
              number: 80
              protocol: HTTP