GKE 入口传递 cookie 作为 header
GKE ingress pass cookie as header
我想在 google Cloud GKE 1.19.7-gke.1302 上使用一些 kubernetes ingress(与 ingress 类型无关),以及 nginx-ingress-0.8 部署的 nginx ingress .0 helm chart,我需要获取一个 cookie 并在以后使用它来对我们的服务进行身份验证。当我使用 nginx 作为部署时它工作,但是当我使用 nginx ingress 时它似乎忽略了注释。
我尝试将此配置片段用于 nginx 入口,它适用于 nginx 部署但不适用于入口:
nginx.ingress.kubernetes.io/configuration-snippet: |
proxy_set_header "Authorization" "Basic $cookie_myToken";
这是我的整个入口 yaml:
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-nginx-ingress
namespace: default
annotations:
kubernetes.io/ingress.class: nginx
# enable backend redirections
kubernetes.io/tls-acme: "true"
# enable stickiness
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "route"
nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
nginx.ingress.kubernetes.io/configuration-snippet: |
proxy_set_header "Authorization" "Basic $cookie_myToken";
spec:
tls:
- secretName: supersmart-tls
hosts:
- "test.com"
defaultBackend:
service:
name: supersmart-nodeport
port:
number: 80
rules:
- host: "test.com"
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
service:
name: my-nodeport
port:
number: 80
有什么想法吗?
发布此答案是为了在 comment section
.
中发现并解决问题时使其更加明显
此问题的根本原因是 Nginx Ingress Controller
配置错误。
在 OP 的设置 Nginx Ingress Controller
中,使用了 v.0.8.0
。将 Nginx Ingress
从 Nginx Ingress Documentation 重新部署到最新版本 (v0.44.0) 后,它开始正常工作。
Yes, reinstalling nginx ingress to the latest version with helm solved the problem.
我想在 google Cloud GKE 1.19.7-gke.1302 上使用一些 kubernetes ingress(与 ingress 类型无关),以及 nginx-ingress-0.8 部署的 nginx ingress .0 helm chart,我需要获取一个 cookie 并在以后使用它来对我们的服务进行身份验证。当我使用 nginx 作为部署时它工作,但是当我使用 nginx ingress 时它似乎忽略了注释。
我尝试将此配置片段用于 nginx 入口,它适用于 nginx 部署但不适用于入口:
nginx.ingress.kubernetes.io/configuration-snippet: |
proxy_set_header "Authorization" "Basic $cookie_myToken";
这是我的整个入口 yaml:
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-nginx-ingress
namespace: default
annotations:
kubernetes.io/ingress.class: nginx
# enable backend redirections
kubernetes.io/tls-acme: "true"
# enable stickiness
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "route"
nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
nginx.ingress.kubernetes.io/configuration-snippet: |
proxy_set_header "Authorization" "Basic $cookie_myToken";
spec:
tls:
- secretName: supersmart-tls
hosts:
- "test.com"
defaultBackend:
service:
name: supersmart-nodeport
port:
number: 80
rules:
- host: "test.com"
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
service:
name: my-nodeport
port:
number: 80
有什么想法吗?
发布此答案是为了在 comment section
.
此问题的根本原因是 Nginx Ingress Controller
配置错误。
在 OP 的设置 Nginx Ingress Controller
中,使用了 v.0.8.0
。将 Nginx Ingress
从 Nginx Ingress Documentation 重新部署到最新版本 (v0.44.0) 后,它开始正常工作。
Yes, reinstalling nginx ingress to the latest version with helm solved the problem.