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