У меня есть приложение, в котором жестко задан URL-адрес «upload.mydomain.io:123123/myRoute".
. Этот DNS указывает на виртуальную машину, на которую распространяется NGINX. трафик к услугам. Теперь мне нужно поставить перед виртуальной машиной масштабируемую службу, БЕЗ возможности изменить жестко запрограммированный URL. Я пробовал:
В качестве DNS-распределителя я использую Cloudflare, где я также пытался что-то сделать с Page Правила.
Функции -> Нет домена в ЕС
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
Можно ли каким-то образом создать этот маршрут с помощью какой-либо службы?
Вы можете использовать ClusterIP сервисы для отображения внешних служб внутри кластера , таким образом, вы увидите ваш сервис как кластерный локальный адрес (представленный сервисом), который будет ретранслировать запросы к вашей внешней службе.
В качестве альтернативы, вы можете использовать специфический тип сервиса под названием ExternalName
, который также осуществляет такую же ретрансляцию, используя только DNS имена вместо адресов.