如何将网关绑定到特定的名称空间?

时间:2020-01-03 09:43:05

标签: kubernetes istio

我有以下情况: enter image description here

  • 当用户 A 时,在以下网址中输入地址foo.example1.example.com 浏览器,则应在命名空间中调用服务 FOO example1
  • 当用户 B 时,在地址栏中输入地址foo.example1.example.com 浏览器,则应在命名空间中调用服务 FOO example2

我正在使用istio,问题是,如何配置特定于命名空间的网关:

看一个istio网关配置示例:

  $ kubectl apply -f - <<EOF
  apiVersion: networking.istio.io/v1alpha3
  kind: Gateway
  metadata:
    name: ns_example1
  spec:
    selector:
      istio: ingressgateway # use Istio default gateway implementation
    servers:
    - port:
        number: 80
        name: http
        protocol: HTTP
      hosts:
      - "example1.example.com"
  EOF

当我部署网关时,它将应用于当前的名称空间,但我想指定一个名称空间。

如何将网关分配给特定的名称空间?

1 个答案:

答案 0 :(得分:2)

我认为这个link应该回答您的问题。

您不需要很多东西,但是有个想法要应用于istio集群。

因此,您需要1个网关和2个虚拟服务。

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: foocorp-gateway
  namespace: default
spec:
  selector:
    istio: ingressgateway # use istio default ingress gateway
  servers:
  - port:
      number: 80
      name: http-example1
      protocol: HTTP
    hosts:
    - "example1.example.com"
  - port:
      number: 80
      name: http-example2
      protocol: HTTP
    hosts:
    - "example2.example.com"

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: example1
  namespace: ex1
spec:
  hosts:
  - "example1.example.com"
  gateways:
  - foocorp-gateway
  http:
  - match:
    - uri:
        exact: /
    route:
    - destination:
        host: example1.ex1.svc.cluster.local
        port:
          number: 80
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: example2
  namespace: ex2
spec:
  hosts:
  - "example2.example.com"
  gateways:
  - foocorp-gateway
  http:
  - match:
    - uri:
        exact: /
    route:
    - destination:
        host: example2.ex2.svc.cluster.local
        port:
          number: 80

编辑

您可以在命名空间ex1和ex2中创建网关,然后只需在虚拟服务中更改网关字段即可。

记住要添加名称空间/网关,而不仅要添加网关名称,例如there

gateways:
  - some-config-namespace/gateway-name

让我知道这是否对您有帮助。