我有蓝色(生产)和绿色(金丝雀)部署的这两个入口,我希望在我的nginx代码片段中根据请求是从生产服务还是从金丝雀提供服务来设置某些内容。代码片段中的if语句应该是什么?
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: blue-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/configuration-snippet: |
if (canary) { <--- WHAT CAN I CHECK HERE?
...
} else {
...
}
spec:
...
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: green-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/canary: "true"
nginx.ingress.kubernetes.io/canary-by-cookie: "green"
spec:
...发布于 2021-09-14 07:41:33
我不认为有特定的金丝雀属性可以检查。
但是,您可以查找金丝雀服务可以提供的特定cookie。
if ($http_cookie ~* "id=([^;]+)(?:;|$)") {
...
}注意,虽然nginx有if directive,但没有else。else的等价物将是所有未使用if修改的内容。
https://stackoverflow.com/questions/69136200
复制相似问题