一个 GKE 入口控制器可用于不同命名空间中的多个服务

问题描述 投票:0回答:1

我希望拥有一个内部应用程序负载均衡器,该负载均衡器具有单个内部 IP 地址,用于不同命名空间中的多个服务。

因此,如果我将入口控制器和服务全部部署在一个命名空间中,它就可以工作。但是在一个命名空间中进入而在另一个命名空间中进入服务则不起作用。

这是我的入口控制器和一个名称规范中的两个服务

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ilb-demo-ingress
  namespace: namespace1
  annotations:
    kubernetes.io/ingress.class: "gce-internal"
spec:
  rules:
  - host: test.de
    http:
      paths:
      - backend:
          service:
            name: paketmap
            port:
              number: 80
        path: /
        pathType: ImplementationSpecific
  - host: test2.de
    http:
      paths:
      - backend:
          service:
            name: hostname
            port:
              number: 80
        path: /
        pathType: ImplementationSpecific

服务1

kind: Service
metadata:
  name: hostname
  namespace: paketmap
  annotations:
    cloud.google.com/neg: '{"ingress": true}'
spec:
  ports:
  - name: host1
    port: 80
    protocol: TCP
    targetPort: 9376
  selector:
    app: hostname
  type: ClusterIP

服务2

apiVersion: v1
kind: Service
metadata:
  name: paketmap
  namespace: namespace1
  annotations:
    cloud.google.com/neg: '{"ingress": true}'
spec:
  ports:
  - name: host1
    port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: paketmap
  type: ClusterIP

我尝试使用ExternalName Service作为namaspace1中的入口和namespace2中的服务之间的桥梁,但它不起作用。当我部署ExternalName Service时,我没有端点,入口找不到任何后端:翻译失败:入口规范无效:无法在服务“namespace1/hostname-bridge”中找到端口“&ServiceBackendPort{Name:,Number:80,}”

google-kubernetes-engine kubernetes-ingress gke-networking ingress-controller google-cloud-internal-load-balancer
1个回答
0
投票

Ingress 不支持跨命名空间引用。所以那是行不通的。

您应该考虑使用新的 Gateway API https://cloud.google.com/kubernetes-engine/docs/concepts/gateway-api

这个新 API 的众多新功能包括后端服务的跨命名空间引用。

© www.soinside.com 2019 - 2024. All rights reserved.