Authentication nginx入口使用k8s secret作为HTTP头

Authentication nginx入口使用k8s secret作为HTTP头,authentication,nginx,kubernetes,nginx-ingress,Authentication,Nginx,Kubernetes,Nginx Ingress,我使用的nginx入口设置如下: nginx.ingress.kubernetes.io/auth-url: http://api/v1/introspect nginx.ingress.kubernetes.io/auth-method: POST nginx.ingress.kubernetes.io/auth-response-headers: X-User-Auth nginx.ingress.kubernetes.io/auth-snippet: | proxy_set_heade

我使用的nginx入口设置如下:

nginx.ingress.kubernetes.io/auth-url: http://api/v1/introspect
nginx.ingress.kubernetes.io/auth-method: POST
nginx.ingress.kubernetes.io/auth-response-headers: X-User-Auth
nginx.ingress.kubernetes.io/auth-snippet: |
  proxy_set_header  auth-header "authheaderhere==";
我的问题很简单,但不确定答案是否是:

我如何定义入口而不硬编码入口定义中的
auth头

内省端点(解码JWT令牌并将其附加到代理给其他微服务的原始请求)不会暴露在集群之外,但我想知道,即使在集群中,端点也只响应经过身份验证的请求(auth header是一个base64编码的字符串,其中包含客户端密码和客户端id)

如何定义入口而不在入口定义中硬编码auth头

开发自己的控制器。一个例子是如何做到这一点

如果您不想将其附加到入口实体,则必须有人将其附加到入口实体

自己的控制器可以监视现有入口(通过标签过滤)并更新入口清单:附加所需的注释

内省端点(解码JWT令牌并将其附加到代理给其他微服务的原始请求)不会暴露在集群之外,但我想知道,即使在集群中,端点也只响应经过身份验证的请求(auth header是一个base64编码的字符串,其中包含客户端密码和客户端id)

如果您想将JWT令牌隐藏到Secret中,那么使用vanilla Nginx IngressController是不容易的

nginx.ingres.kubernetes.io/auth snippet
参数

将您的代码片段添加到Nginx的ConfigMap中。然后创建一些代码片段并将
kubernetes.io/ingres.class=my\u ingres\u class\u name
注释添加到您的入口(甚至集群)