如何在Kubernetes入口中指定自定义Istio入口网关



我使用操作符部署Istio,并添加了一个只能从特定源范围(我们的VPN)访问的自定义入口网关。

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
namespace: istio-system
name: ground-zero-ingressgateway
spec:
profile: empty
components:
ingressGateways:
- name: istio-ingressgateway
enabled: true
- name: istio-vpn-ingressgateway
label:
app: istio-vpn-ingressgateway
istio: vpn-ingressgateway
enabled: true
k8s:
serviceAnnotations:
...
service:
loadBalancerSourceRanges:
- "x.x.x.x/x"

现在我想配置Istio,使用Kubernetes Ingress资源在服务网格集群之外公开一个服务。我使用kubernetes.io/ingress.class注释来告诉Istio网关控制器它应该处理这个Ingress

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
annotations:
kubernetes.io/ingress.class: istio
spec:
...
Kubernetes版本(EKS): 1.19
  • 版本号:1.10.3
  • 现在使用哪个入口网关控制器(istio-ingressgatewayistio-vpn-ingressgateway)?有没有办法指定应该使用哪一个?

    注:我知道我可以创建一个VirtualService并指定正确的网关,但我们想要通过使用注释指定正确的入口控制器来编写一个没有Istio也能工作的清单。

    您可以创建一个入口类,该入口类引用默认部署在istio-system命名空间中的入口控制器。这个带有入口的配置可以工作,但是据我目前所知,这只用于向后兼容。如果你想使用istio入口控制器功能,你应该使用istio网关和虚拟服务:

    建议使用Istio网关,而不是入口,以充分利用Istio提供的完整功能集,如丰富的流量管理和安全功能。

    如果这个解决方案对你来说不是最优的,你应该使用例如nginx入口控制器,你仍然可以用注释绑定它(已弃用)或使用IngressClass。据我目前所知,不可能将这个入口类与额外的入口控制器绑定。如果你需要一个解释,文档,你应该在github上创建一个问题。

    简介:建议使用带虚拟服务的网关。另一种可能性是使用nginx单独访问不同的类,并为它们提供一个访问资源。

    相关内容

    • 没有找到相关文章

    最新更新