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

У меня есть приложение, в котором жестко задан URL-адрес «upload.mydomain.io:123123/myRoute".

. Этот DNS указывает на виртуальную машину, на которую распространяется NGINX. трафик к услугам. Теперь мне нужно поставить перед виртуальной машиной масштабируемую службу, БЕЗ возможности изменить жестко запрограммированный URL. Я пробовал:

  • Облачные функции
  • App Engine
  • Cloud Run
  • Мой собственный кластер Kubernetes.

В качестве 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

Можно ли каким-то образом создать этот маршрут с помощью какой-либо службы?

0
задан 2 September 2019 в 15:28
1 ответ

Вы можете использовать ClusterIP сервисы для отображения внешних служб внутри кластера , таким образом, вы увидите ваш сервис как кластерный локальный адрес (представленный сервисом), который будет ретранслировать запросы к вашей внешней службе.

В качестве альтернативы, вы можете использовать специфический тип сервиса под названием ExternalName, который также осуществляет такую же ретрансляцию, используя только DNS имена вместо адресов.

.
0
ответ дан 5 December 2019 в 01:05

Теги

Похожие вопросы