在金丝雀部署期间,Nginx + ingress用于sticky会话



我正在部署2个服务到kubernetes pod,它们只是回显版本号;echo-v1,echo-v2

echo-v2被认为是金丝雀部署,我可以演示粘性会话,因为金丝雀权重使用canary &从0重新配置到100;canary-weight注释。

使用2个入口:第一个用会话cookie注释路由echo-v1。第二个途径是使用canary true、canary weight和session cookie注解来访问echo-v2。

我可以应用第二个入口,而不会影响在第一个入口上启动的会话,并且新会话按照预期遵循金丝雀权重。

然而,我后来了解到这些注释是nginx社区的,不能与nginx plus一起工作。

我怎么能实现相同的使用入口(es)与nginx plus?

这是我使用Nginx社区和Nginx plus的入口配置。

Nginx社区:

(coffee-v1服务)

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/affinity: "cookie"
name: ingress-coffee
spec:
rules:
- http:
paths:
- path: /coffee
pathType: Exact
backend:
service:
name: coffee-v1
port:
number: 80

(coffee-v2 'canary' service)

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/canary: "true"
nginx.ingress.kubernetes.io/canary-weight: "100"
name: ingress-coffee-canary
spec:
rules:
- http:
paths:
- path: /coffee
pathType: Exact
backend:
service:
name: coffee-v2
port:
number: 80

Nginx +:

(coffee-v1,

apiVersion: k8s.nginx.org/v1
kind: VirtualServer
metadata:
name: cafe
spec:
host: cloudbees-training.group.net
tls:
secret:  cloudbees-trn.aks.group.net-tls
upstreams:
- name: coffee-v1
service: coffee-v1-svc
port: 80
sessionCookie:
enable: true
name: srv_id_v1
path: /coffee
expires: 2h
- name: coffee-v2
service: coffee-v2-svc
port: 80
sessionCookie:
enable: true
name: srv_id_v2
path: /coffee
expires: 2h
routes:
- path: /coffee
matches:
- conditions:
- cookie: srv_id_v1
value: ~*
action:
pass: coffee-v1
- conditions:
- cookie: srv_id_v2
value: ~*
action:
pass: coffee-v2
# 3 options to handle new session below:
#
# 1) All new sessions to v1:
#      action:
#        pass: coffee-v1
#
# 2) All new sessions to v2:
#      action:
#        pass: coffee-v2
#
# 3) Split new sessions by weight
#    Note: 0,100 / 100,0 weightings causes sessions 
#    to drop for the 0 weighted service:
#      splits:
#        - weight: 50
#          action:
#            pass: coffee-v1
#        - weight: 50
#          action:
#            pass: coffee-v2

最新更新