如何在GKE中配置自动生成的istio-ingressgateway?

时间:2019-06-12 05:11:04

标签: kubernetes google-kubernetes-engine kubernetes-ingress istio

我想向istio-ingressgateway添加基于通配符的域名(例如* .somedomain.com),并设置自签名TLS证书。通过从群集的插件列表中启用Istio,可以在GKE上安装Istio。

第一个问题是,是否建议配置并使用自动生成的istio-ingressgateway,而不是创建一个。

如果是,那么第二个问题是如何更新该网关的设置。

我必须在自动创建的入口网关中包含 labels resourceVersion selfLink 字段,并将resourceVersion设置为当前版本,否则, Kubernetes不接受新的YAML文件。

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  # QUESTION: Copid fields from the current ingressgateway to be specified.
  # Otherwise, kubectl does not accept the settings.
  # $ kubectl apply -f ./helm-charts/istio/gateway.yaml
  # The gateways "istio-autogenerated-k8s-ingress" is invalid: metadata.resourceVersion: Invalid value: 0x0: must be specified for an update

  # labels:
  #   addonmanager.kubernetes.io/mode: EnsureExists
  #   k8s-app: istio
  # resourceVersion: "9331065"
  # selfLink: /apis/networking.istio.io/v1alpha3/namespaces/istio-system/gateways/istio-autogenerated-k8s-ingressa
  name: istio-autogenerated-k8s-ingress
  namespace: istio-system
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 443
      name: https
      protocol: HTTPS
    tls:
      mode: PASSTHROUGH
      serverCertificate: /etc/istio/ingressgateway-certs/tls.crt
      privateKey: /etc/istio/ingressgateway-certs/tls.key
    hosts:
    - "*.heportal.squiz.cloud"

如果我应用上面的示例gateway.yaml文件:

$ kubectl apply -f ./helm-charts/istio/gateway.yaml
The gateways "istio-autogenerated-k8s-ingress" is invalid: metadata.resourceVersion: Invalid value: 0x0: must be specified for an update

1 个答案:

答案 0 :(得分:0)

欢迎使用StackOverflow @ skim-go

恐怕您不应该不要直接对istio自动生成的资源(例如默认的Ingress网关)进行任何直接修改(kubectl编辑),这是GKE附件中Istio随附的,因为它们将由Kubernetes插件管理器还原。

相反,我建议您在GKE安装上为现有的Istio安装/添加自定义网关(并在那里进行自定义),因为它们已对帐,并在官方doc后面引用:

  

您添加的任何入口和出口资源都在用户下   控制,并且不对帐或自动升级。

如何添加自定义入口网关,这是我在另一个SO的问题here中解释的。

提示:因为您已经在GKE上安装了Istio,所以在您的情况下,应使用unified diff策略来准备必要的清单文件,而群集中仅缺少资源。