我有一个已发布的应用程序,其中的 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 名称而不是地址。