Липкие сеансы обслуживания кубернет с апачем и входом - PullRequest
0 голосов
/ 17 октября 2019

У меня есть сервер Apache k8s, который использует mod_jk для подключения к различным сервисам kubernetes. mod_jk является своего рода фиктивной, так как у рабочих есть URL службы k8s. Я сейчас пытаюсь добиться липких сессий на основе JESSIONID в куки. У меня есть входной контроллер traefik, который направляет все запросы к службе Apache k8s. Запросы прекращаются на уровне входа для TLS. Каков наилучший способ добиться липкой сессии?

Я пытался включить sessionAffinity: ClientIP, но IP-адрес клиента всегда один и тот же. Это входной контроллер.

1 Ответ

0 голосов
/ 22 октября 2019

В объекте входа Kubernetes в метке аннотации вы должны определить, какой тип Ingress вы будете использовать, так что в вашем случае: контроллер входа Traefik. Обратите внимание, что липкий сеанс в Traefik определяется в объекте Service с аннотацией. Вместо случайного имени файла cookie мы определяем его как JSESSIONID.

Определение входного объекта:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: traefik
  labels:
    app: session-affinity
  name: session-affinity
spec:
  tls:
  - host: <address>
    secretName:
  rules:
  - host: <address>
    http:
      paths:
      - path: /
        backend:
          serviceName: session-affinity
          servicePort: 8080

Определение объекта службы:

apiVersion: v1
kind: Service
metadata:
  name: session-affinity
  labels:
    app: session-affinity
  annotations:
    traefik.ingress.kubernetes.io/affinity: "true"
    traefik.ingress.kubernetes.io/session-cookie-name: "JSESSIONID"
spec:
  type: NodePort
  ports:
  - port: 8080
    targetPort: 8080

Вы можете найтибольше информации в документации .

...