Kubernetes 前端重定向到后端

Kubernetes redirect front-end to back-end

在 Kubernetes 中,我有一个负载均衡器和 2 个 Web 应用程序(名称为 UIKuard),它们 public 都可以通过类似于以下的服务和入口规则使用:

关卡服务:

apiVersion: v1
kind: Service
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |xxx
  creationTimestamp: "2022-01-17T15:44:30Z"
  labels:
    app: kuard
    app.kubernetes.io/managed-by: pulumi
  name: mykuard
  namespace: nginx-test-frwjnfp0
  resourceVersion: "975"
  uid: 819d94ca-b63d-44d5-9af9-a83da3f4bbd8
spec:
  clusterIP: 10.3.250.8
  clusterIPs:
  - 10.3.250.8
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - port: 8080
    protocol: TCP
    targetPort: http
  selector:
    app: kuard
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}

守卫入口

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: | xxx
    kubernetes.io/ingress.class: nginx
    pulumi.com/autonamed: "true"
  creationTimestamp: "2022-01-17T15:44:42Z"
  generation: 2
  labels:
    app: kuard
    app.kubernetes.io/managed-by: pulumi
  name: kuard-tuy3sb0v
  namespace: nginx-test-frwjnfp0
  resourceVersion: "13091"
  uid: 4d14f3fc-d116-4233-a717-c38d92741139
spec:
  rules:
  - host: kuard.xxx.com
    http:
      paths:
      - backend:
          service:
            name: mykuard
            port:
              name: http
        path: /
        pathType: ImplementationSpecific
status:
  loadBalancer:
    ingress:
    - ip: xxx

如您所见,我现在可以通过转到 kuard.xxx.com 访问 Kuard 应用程序,其中 xxx 是 public LB IP。

目前我可以通过在我的 UI 应用程序中硬编码 kuard.xxx.comUI 应用程序导航到 Kuard 应用程序。这很愚蠢,因为我使用的是 WWW 地址而不是内部集群地址。

我可以使用哪个 URL(和入口?)根据其内部集群地址从 UI 应用程序在浏览器中打开 Kuard 应用程序,而不是万维网 URL?

我尝试在“UI”网络应用程序中硬编码 http://mykuard:80,因为 Kuard 应用程序的服务名称是 mykuard,但我确实遗漏了一些东西.

你想要的不可能。

从浏览器访问服务时,您是从集群外部发出请求。为此,您需要外部 IP。

内部集群地址 (<service-name>:<port>) 仅用于内部通信(例如 pod 到 pod),由您的内部 DNS 解析,您的浏览器无法访问该地址。