Kubernetes nginx ingress 0.22 не соблюдает аннотацию привязки файлов cookie?

Недавно мы обновились до nginx-ingress 0.22. До этого обновления моя служба использовала старое пространство имен ingress.kubernetes.io/affinity: cookie, и все работало так, как я ожидал. Однако после обновления до 0.22 привязка перестала применяться к моей службе (я не вижу sticky нигде в nginx.conf).

Я просмотрел документы и изменил пространство имен на nginx.ingress.kubernetes.io, как показано в этом примере, но это не помогло.

Есть ли какой-нибудь журнал отладки, который я могу посмотреть, чтобы показать процесс синтаксического анализа / построения конфигурации? Я предполагаю, что этому мешает какой-то другой параметр (я не могу представить, что команда k8s выпустила выпуск с полностью сломанной функцией), но я не уверен, что это могло быть.

Моя конфигурация входа, показанная на панели управления k8s, выглядит следующим образом:

  "kind": "Ingress",
  "apiVersion": "extensions/v1beta1",
  "metadata": {
    "name": "example-ingress",
    "namespace": "master",
    "selfLink": "/apis/extensions/v1beta1/namespaces/master/ingresses/example-ingress",
    "uid": "01e81627-3b90-11e9-bb5a-f6bc944a4132",
    "resourceVersion": "23345275",
    "generation": 1,
    "creationTimestamp": "2019-02-28T19:35:30Z",
    "labels": {
    },
    "annotations": {
      "ingress.kubernetes.io/backend-protocol": "HTTPS",
      "ingress.kubernetes.io/limit-rps": "100",
      "ingress.kubernetes.io/proxy-body-size": "100m",
      "ingress.kubernetes.io/proxy-read-timeout": "60",
      "ingress.kubernetes.io/proxy-send-timeout": "60",
      "ingress.kubernetes.io/secure-backends": "true",
      "ingress.kubernetes.io/secure-verify-ca-secret": "example-ingress-ssl",
      "kubernetes.io/ingress.class": "nginx",
      "nginx.ingress.kubernetes.io/affinity": "cookie",
      "nginx.ingress.kubernetes.io/backend-protocol": "HTTPS",
      "nginx.ingress.kubernetes.io/limit-rps": "100",
      "nginx.ingress.kubernetes.io/proxy-body-size": "100m",
      "nginx.ingress.kubernetes.io/proxy-buffer-size": "8k",
      "nginx.ingress.kubernetes.io/proxy-read-timeout": "60",
      "nginx.ingress.kubernetes.io/proxy-send-timeout": "60",
      "nginx.ingress.kubernetes.io/secure-verify-ca-secret": "example-ingress-ssl",
      "nginx.ingress.kubernetes.io/session-cookie-expires": "172800",
      "nginx.ingress.kubernetes.io/session-cookie-max-age": "172800",
      "nginx.ingress.kubernetes.io/session-cookie-name": "route",
      "nginx.org/websocket-services": "example"
    }
  },
  "spec": {
    "tls": [
      {
        "hosts": [
          "*.example.net"
        ],
        "secretName": "example-ingress-ssl"
      }
    ],
    "rules": [
      {
        "host": "*.example.net",
        "http": {
          "paths": [
            {
              "path": "/",
              "backend": {
                "serviceName": "example",
                "servicePort": 443
              }
            }
          ]
        }
      }
    ]
  },
  "status": {
    "loadBalancer": {
      "ingress": [
        {}
      ]
    }
  }
}

person anisoptera    schedule 07.03.2019    source источник


Ответы (1)


Когда я тестировал привязку сеанса Sticky к Nginx Ingress версии 0.22, я могу заверить, что он работает нормально. Затем, когда я искал вашу конфигурацию, я заменил хост с подстановочным знаком host: "*.example.net" на т.е host: "stickyingress.example.net", просто чтобы игнорировать подстановочный знак, и он снова работал нормально. Итак, после некоторого поиска я обнаружил, что из этой проблемы

Имена хостов с подстановочными знаками не поддерживаются спецификацией Ingress (поддерживаются только сертификаты с подстановочными знаками SSL)

Даже эта проблема была открыта для версии контроллера NGINX Ingress: 0.21.0

person coolinuxoid    schedule 11.03.2019
comment
Ах, спасибо за эту находку. Крайне прискорбно. Думаю, мне придется развернуть отдельное решение для экземпляра входящего трафика, упомянутое в этой проблеме ... - person anisoptera; 11.03.2019