【问题标题】:Run scalable Service in GKE with fixed Domain and Port在具有固定域和端口的 GKE 中运行可扩展服务
【发布时间】:2019-08-31 20:28:36
【问题描述】:

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

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

  • 云函数
  • App 引擎
  • 云跑
  • 我自己的 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

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

【问题讨论】:

标签: kubernetes google-cloud-platform google-cloud-functions cloudflare


【解决方案1】:

您可以使用负载均衡器类型的 Kubernetes 服务来实现相同的目的。

例如

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: MyApp
  ports:
    - protocol: TCP
      port: 123123
      targetPort: 8000

参考:https://cloud.google.com/kubernetes-engine/docs/concepts/service & https://kubernetes.io/docs/concepts/services-networking/#loadbalancer

【讨论】:

  • 然后,将您的 DNS 映射到负载均衡器 IP。
  • 我试过了,但是 URL 中的端口已经过时了。它将是 upload.mydomain.io,但没有端口
  • 能否请您显示负载均衡器配置,以及它是否与upload.mydomain.io:123123一起使用?
  • 我认为您遗漏了一些东西,您能否添加您用于部署的清单文件? cloud.google.com/kubernetes-engine/docs/how-to/exposing-apps
  • 能否请您添加一个指向负载均衡器 ip 的新 dns 条目并进行测试。例如点newupload.mydomain.io。不需要入口,因为我们已经使用负载均衡器公开服务
猜你喜欢
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多