Как настроить Ingress в Kubernetes для http и https backend

Представим, что у меня есть простой веб-сайт, и я хочу запустить его на Kubernetes. Веб-сайт должен прослушивать протоколы HTTP и HTTPS.

В Kubernetes я настроил его развертывание, обслуживание и вход. Если я попробую только порт 80, все будет работать хорошо, но если я захочу расширить его с помощью HTTPS, все не удастся, и я получаю ошибку 404 от контроллера входящего трафика. Трафик HTTPS должен перенаправляться непосредственно на серверную часть. Как я могу это сделать?

Я попытался расширить набор демонов контроллера входящего трафика с помощью параметра --enable-ssl-passthrough = true (непосредственно в конфигурации набора демонов), но тогда модуль контроллера входящего трафика не смог Начните. Я нашел в Интернете статью о том, что для включения --enable-ssl-passthrough необходимо установить контроллер входящего трафика с этим флагом: см. эту страницу. Кстати, как я могу «установить» контроллер входящего трафика с этим флагом?

Я попытался добавить порты 80 и 443 в правила входа, но тоже безуспешно.

Kubernetes: Ingress-контроллер v1.14.3: документация

Пожалуйста, посмотрите мой сервис и вход:

apiVersion: v1
kind: Service
metadata:
  name: {{ container_service_ingress }}-service
  labels:
    cms: "{{ cms }}"
    namespace: "default"
spec:
  selector:
    website: "{{ domain }}"
    cms: "{{ cms }}"
  ports:
    - name: http
      port: 80
    - name: https
      port: 443
  type: NodePort

---

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: {{ container_service_ingress }}-ingress
# I tried this annotation, but it didn't help:
  annotations:
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
  labels:
    website: "{{ domain }}"
spec:
  rules:
  - host: {{ domain }}
    http:
      paths:
      - backend:
          serviceName: {{ container_service_ingress }}-service
          servicePort: 80
      - backend:
          serviceName: {{ container_service_ingress }}-service
          servicePort: 443

И в этом случае входной контроллер не может запуститься, поскольку он говорит о дублировании местоположения "/" в файле конфигурации.

Кто-нибудь может мне с этим помочь?


person Vitalii    schedule 18.07.2019    source источник


Ответы (1)


apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: tls-ingress
spec:
  tls:
  - hosts:
    - ssl.example.com
    secretName: test-tls
  rules:
    - host: ssl.example.com
      http:
        paths:
        - path: /
          backend:
            serviceName: service1
            servicePort: 80

Вам нужно использовать раздел tls для достижения ваших требований.

person Dhevasenapathi S    schedule 23.07.2019
comment
Спасибо! Сделал это с другим контроллером входа - Traefik. У него есть гораздо более подходящее руководство, чем у контроллера входящего трафика Nginx. - person Vitalii; 24.07.2019