我有以下情况:
kubernetes - 如何将网关绑定(bind)到特定的 namespace ?-LMLPHP

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

  • 我正在使用istio,问题是如何配置网关,该网关特定于 namespace 绑定(bind):

    查看一个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
    

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

    如何为特定的 namespace 分配网关?

    最佳答案

    我认为这个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中创建网关,然后只需在虚拟服务中更改网关字段即可。

    记住要添加 namespace /网关,而不仅要添加网关名称,例如there
    gateways:
      - some-config-namespace/gateway-name
    

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

    关于kubernetes - 如何将网关绑定(bind)到特定的 namespace ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59576218/

    10-16 16:51