1

我有这两个用于蓝色(生产)和绿色(金丝雀)部署的入口,我希望在我的 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:
  ...
4

1 回答 1

1

我认为没有可以检查的特定金丝雀属性。
但是,您可以查找您的金丝雀服务可以提供的特定cookie

if ($http_cookie ~* "id=([^;]+)(?:;|$)") {
    ...
}

请注意,虽然 nginx 确实有if指令,但没有else. else 的等价物将是所有未使用if.

于 2021-09-14T07:41:33.477 回答