使用固定域和端口在 GKE 中运行可扩展服务

使用固定域和端口在 GKE 中运行可扩展服务

我有一个已发布的应用程序,其中的 URL 是硬编码的“upload.mydomain.io:123123/myRoute”。

此 DNS 指向一个 VM,NGINX 在该 VM 上将流量分发给服务。现在我需要在 VM 前面放置一个高度可扩展的服务,而不能更改硬编码的 URL。到目前为止,我尝试过:

  • 云功能
  • 应用引擎
  • 云运行
  • 我自己的 Kubernetes 集群。

作为 DNS 分发者,我使用 Cloudflare,同时我也尝试使用 Page Rules 做一些事情。

功能 -> 欧盟无域名

Cloud Run -> 仅端口 80

App Engine -> 仅端口 8080

Kubernetes Ingress -> 我可以将我的域名放上去,并将端口作为服务端口,但 URL 中的端口就消失了

这是我的 Kubernetes 清单:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: myApp-api
  name: myApp-api
spec:
  replicas: 3
  strategy:
    type: Recreate
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: myApp-api
    spec:
      containers:
      - name: myApp-api
        env:
        - name: NODE_ENV
          value: production
        image: eu.gcr.io/myApp-123/myApp-api:latest
        imagePullPolicy: Always
        ports:
        - containerPort: 21337
      restartPolicy: Always
status: {}


---

apiVersion: v1
kind: Service
metadata:
  labels:
    app: myApp-api-service
  name: myApp-api-service
spec:
  ports:
  - name: myApp-api-port
    port: 21337
    targetPort: 21337
  selector:
    app: myApp-api
  type: LoadBalancer
status:
  loadBalancer: {}

---

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: myApp-api-ingress
spec:
  tls:
  - hosts:
    - upload.myDomain.io
    secretName: tls-secret
  rules:
  - host: upload.myDomain.io
    http:
      paths:
      - path: /*
        backend:
          serviceName: myApp-api-service
          servicePort: myApp-api-port

是否有可能以某种方式通过某些服务创建此路线?

答案1

您可以使用集群IP服务在集群内映射外部服务这样,您将把您的服务视为集群本地地址(由服务表示),它将把请求中继到您的外部服务。

或者,您可以使用称为ExternalName,它也进行同样的中继,只不过使用 DNS 名称而不是地址。

相关内容