Как я могу прокси-запросы на внешний порт в Kubernetes? - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть веб-служба, работающая на порте в моей локальной сети, на порт 6003. У меня также есть кластер Kubernetes, работающий на другой машине в той же сети, которая использует Nginx Ingress для прокси для всех служб в кластере. , Как настроить вход для прокси на машине? У меня была установка, которая работала. Но сейчас я получаю либо ошибки DNS на модуле nginx, либо время ожидания ответа в браузере, и ничего не происходит.

Вот манифест, который я использовал.

apiVersion: v1
kind: Service
metadata:
  name: myservice-service
spec:
  type: ExternalName
  externalName: 192.xxx.xx.x
ports:
  - name: myservice
    port: 80
    protocol: TCP
    targetPort: 6003
---
apiVersion: v1
kind: Endpoints
metadata:
  name: myservice-ip
subsets:
  - addresses:
      # list all external ips for this service
      - ip: 192.xxx.xx.x
    ports:
      - name: myservice
        port: 6003
        protocol: TCP
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: service.example.com
  annotations:
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
  rules:
    - host: service.example.com
      http:
        paths:
          - backend:
              serviceName: myservice-service
              servicePort: 80
            path: /
  tls:
    - secretName: secret-prod-tls
      hosts:
        - service.example.com

Изменить для получения дополнительной информации: Этот манифест работает. Я понял, что вы должны указать https, даже если у входа есть блок tls. Это все еще показывает ошибки Lua DNS в модуле Nginx-ingress.

Ответы [ 2 ]

1 голос
/ 25 апреля 2019

Вы ДОЛЖНЫ указать nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" в вашем входном ресурсе, если в восходящем направлении прослушиваются запросы HTTPS.Таким образом, это связано с бэкэндом, а не с самим входом. TLS конфигурация для Ingress (внешний интерфейс), а не для внутреннего приложения.

0 голосов
/ 24 апреля 2019

Вам не нужно ExternalName здесь. Обычный безголовый сервис сделает работу:

apiVersion: v1
kind: Service
metadata:
  name: external-ip
spec:
  ports:
  - name: http
    port: 80
  clusterIP: None
  type: ClusterIP
---
apiVersion: v1
kind: Endpoints
metadata:
  name: external-ip
subsets:
- addresses:
  - ip: 172.17.0.5
  ports:
  - name: http
    port: 80
...