Назад | Перейти на главную страницу

Запустите масштабируемую службу в GKE с фиксированным доменом и портом

У меня есть приложение, в котором жестко задан 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 вместо адресов.