如何在Kubernetes Ingress中指定自定义Istio ingress网关
一、当前配置的网关匹配结果
你现在使用kubernetes.io/ingress.class: istio注解的Ingress配置,默认会匹配集群默认的istio-ingressgateway网关,不会命中你自定义的VPN专用istio-vpn-ingressgateway。
二、通过原生Ingress规则指定自定义网关的方案
你可以通过Kubernetes原生的IngressClass资源实现不同Ingress绑定不同Istio网关的需求,完全符合你兼容非Istio环境的要求:
- 首先为你的VPN专用网关创建对应的IngressClass资源:
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: istio-vpn spec: controller: istio.io/ingress-controller parameters: apiGroup: install.istio.io kind: IngressGateway name: istio-vpn-ingressgateway namespace: istio-system
如果你需要区分默认公开网关,也可以同步为默认网关创建对应IngressClass:
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: istio-public spec: controller: istio.io/ingress-controller parameters: apiGroup: install.istio.io kind: IngressGateway name: istio-ingressgateway namespace: istio-system
- 按需修改你的Ingress配置指定对应网关即可,两种方式可选:
- 注解方式(兼容旧版本K8s):将注解修改为
kubernetes.io/ingress.class: istio-vpn - 原生字段方式(K8s 1.19+推荐):在Ingress的spec字段下添加
ingressClassName: istio-vpn
- 注解方式(兼容旧版本K8s):将注解修改为
修改后Istio会自动将对应Ingress规则绑定到你指定的网关,全程不需要使用Istio自定义的Gateway、VirtualService资源,你的Ingress清单在没有Istio的环境下,只要存在对应名称的IngressClass控制器即可正常运行。
内容的提问来源于stack exchange,提问作者ammerzon
相关产品推荐
相关产品推荐

