我想向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
答案 0 :(得分:0)
欢迎使用StackOverflow @ skim-go
恐怕您不应该不要直接对istio自动生成的资源(例如默认的Ingress网关)进行任何直接修改(kubectl编辑),这是GKE附件中Istio随附的,因为它们将由Kubernetes插件管理器还原。
相反,我建议您在GKE安装上为现有的Istio安装/添加自定义网关(并在那里进行自定义),因为它们不已对帐,并在官方doc后面引用:
您添加的任何入口和出口资源都在用户下 控制,并且不对帐或自动升级。
如何添加自定义入口网关,这是我在另一个SO的问题here中解释的。
提示:因为您已经在GKE上安装了Istio,所以在您的情况下,应使用unified diff策略来准备必要的清单文件,而群集中仅缺少资源。