Открытая служба TCP во входном Nginx работает с ssl?

#ssl #kubernetes #mqtt #nginx-ingress

#ssl #kubernetes #mqtt #nginx-вход

Вопрос:

Если у меня есть внутренняя реализация для TLS, правильно ли Ingress NGINX предоставляет ее?

Я предоставляю службу MQTT через входящий NGNIX со следующей конфигурацией:

Карта конфигурации:

 ---

apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-ingress-tcp-microk8s-conf
  namespace: ingress
#Add the service we want to expose
data:
  1883: "default/mosquitto-broker:1883"
  

Набор демонов:

 ---
apiVersion: apps/v1
kind: DaemonSet
   ...
spec:
  selector:
    matchLabels:
      name: nginx-ingress-microk8s
  template:
    metadata:
   ...
    spec:
      ...
        ports:
        - containerPort: 80
        - containerPort: 443
#Add the service we want to expose
        - name: prx-tcp-1883
          containerPort: 1883
          hostPort: 1883
          protocol: TCP
        args:
        - /nginx-ingress-controller
        - --configmap=$(POD_NAMESPACE)/nginx-load-balancer-microk8s-conf
        - --tcp-services-configmap=$(POD_NAMESPACE)/nginx-ingress-tcp-microk8s-conf
        - --udp-services-configmap=$(POD_NAMESPACE)/nginx-ingress-udp-microk8s-conf
        $DEFAULT_CERT
        $EXTRA_ARGS
  

Я настроил брокер MQTT на использование TLS в серверной части. Когда я запускаю брокера на своей машине, за пределами кластера kubernetes, Wireshark обнаруживает сообщения как TLS, и он ничего не показывает о MQTT:

введите описание изображения здесь

Однако, если я запускаю брокера внутри кластера, он показывает, что я использую MQTT, и ничего о TLS. Но сообщения читаются неправильно: введите описание изображения здесь

И, наконец, если я запускаю брокер MQTT внутри кластера без TLS, Wireshark правильно определяет пакеты MQTT: введите описание изображения здесь

Мой вопрос: зашифровано ли соединение, когда я использую TLS внутри кластера?Это правда, что Wireshark не показывает содержимое пакетов, но он знает, что я использую MQTT. Может быть, это потому, что заголовки не зашифрованы, но полезная нагрузка есть? Кто-нибудь точно знает?

Ответ №1:

Проблема заключалась в том, что я запускал TLS MQTT в порту 8883, как рекомендовано документацией (не в порту 1883 для стандартного MQTT), но Wireshark не распознал этот порт как порт MQTT, поэтому формат, заданный Wireshark, был немного нарушен.

Комментарии:

1. привет, не могли бы вы предоставить свою полную конфигурацию для cm, ing и deploy? Я вижу, что вы сопоставили только порт 1883, но вы говорите, что используете 8883