Можете ли вы установить backend-протокол для каждого правила на входе k8s nginx? - PullRequest
1 голос
/ 15 января 2020

У меня есть настройка кластера kubernetes с двумя настроенными службами.

Ссылки Service1 с Deployment1 и ссылки Service2 с Deployment2.

Deployment1 обслуживает модули, которые могут быть подключены только с использованием http.

Deployment2 обслуживает модули, к которым можно подключиться только с помощью https.

Используя kubectl port-forward и exe c, входящие в модули. Я знаю, что службы и развертывания реагируют должным образом, подключение внутренне между сервисами работает нормально.

У меня есть nginx входная настройка для разрешения внешних подключений к обеим службам. Службы должны быть подключены только по протоколу https, а любые входящие соединения с http должны быть перенаправлены на https. Вот входная настройка:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: master-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    cert-manager.io/cluster-issuer: "letsencrypt-production"
spec:
  tls:
    - secretName: tls-secret-one
      hosts:
      - service1.domain.com
      - service2.domain.com
  rules:
    - host: "service1.domain.com"
      http:
        paths:
          - path: /
            backend:
              serviceName: service1
              servicePort: 60001
    - host: "service2.domain.com"
      http:
        paths:
          - path: /
            backend:
              serviceName: service2
              servicePort: 60002

Вот проблема. С помощью этого yaml я могу без проблем подключаться к service1 (бэкэнд http), но при подключении к service2 (бэкэнд https) получается неверный шлюз 502.

Если я добавлю аннотацию 'nginx .ingress.kubernetes. io / backend-protocol: "https" 'переключатели подключения. Я больше не могу подключиться к service1 (бэкэнд http), но могу подключиться к service2 (бэкэнд https)

Я могу понять, почему коммутатор делает это, но мой вопрос:

Можете ли вы установить бэкэнд-протокол для каждого правила в nginx -адрес?

1 Ответ

3 голосов
/ 15 января 2020

Невозможно установить внутренний протокол для правила за один вход. Чтобы достичь желаемого, вы можете создать два разных входа, один для service1, а другой для service2 и аннотировать вход для service1 с помощью http и вход для service2 с помощью https.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...