Cockpit не работает в k8s

привет!

Разрабатываем микросервис, содержащий в себе встроенную Camunda: движок и веб-приложеения. Запущен этот микросервис в среде Kubernetes и наружу предоставляеться nginx-ingress. Обнаружили такую интересную историю, если запускается более одной реплики сервиса, перестает работать вход в Cockpit. Выдается ошибка 401. Подскажите, куда копать?

1 лайк

Привет.

Когда реплик камунды становится больше одной, необходимо реализовать sticky session, для этого нужно добавить в манифест ingress-а через который происходит доступ к веб-интерфейсу камунды следующие аннотации:

> metadata:
>   annotations:
>     nginx.ingress.kubernetes.io/affinity: "cookie"
>     nginx.ingress.kubernetes.io/session-cookie-name: "INGRESSCAMUNDACOOKIE"
>     nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
>     nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"

Информацию об аннотациях можно посмотреть тут.

Решение реализовано с помощью nginx ingress. Добавляется новый Cookie, который обеспечивает “липкую” сессию.

При этом нужно учесть, что должно быть установлено dns имя:

spec:
  rules:
  - host: stickyingress.example.com
2 лайка

Спасибо добрый человек! После применения настроек все заработало. :heart_eyes:

Здравствуйте. Подскажите, а если вместо ingress используется istio, то как будет выглядеть настройка? Вы сталкивались с такой проблемой? Прблема в общем-то всё та же, только вместо nginx-ingress используется istio и как-то не очень понятно как. на данный момент вот такой вариант конфига

---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
    name: bpm-main-dr
    namespace: {{ k8s_namespace }}
spec:
    host: bpm-main-service
    trafficPolicy:
      loadBalancer:
        consistentHash:
          httpCookie:
            name: INGRESSCAMUNDACOOKIE
            ttl: 3600s
---

Но с ним проблема. При попытке зайти в cockpit выбрасывает через довольно быстрое время. Более менее работает в режиме инкогнито в браузере и то не всегда.

Если вдруг у кого аналогичная проблема с балансировщиком istio, помог следующий совет

На практике проще всего сделать так чтобы трафик /camunda всегда направлять только но один под, а трафик /engine-rest, направлять балансировщиком на все поды.

2 лайка