Ingress 注释 annotations 说明

2020-03-19 0 By admin

在 Kuberneters 中基础的配置 Ingress 只需要在 path 中设置好后端的 service 名称和 service 的clusterIP端口即可。
当我们使用 Nginx Ingress Controller 时,其 Pod 中实际上就是运行了一个nginx实例,我们通过设置 Ingress 对象向 Nginx 实例中添加规则。
我们在配置 Nginx 服务的规则时,会添加一些特殊的设置,比如:超时时间、消息体大小、域名证书等。而我们在 Ingress 中添加相似的配置,就需要使用 Annotations (注释) 来实现。

1、金丝雀发布

金丝雀发布是一种试错的发布新版本的方式;将新版本接受的请求数逐渐增加,如果发下新版本存在问题,即使的回滚。
nginx.ingress.kubernetes.io/backend-protocol
nginx.ingress.kubernetes.io/canary
nginx.ingress.kubernetes.io/canary-by-header
nginx.ingress.kubernetes.io/canary-by-header-value
nginx.ingress.kubernetes.io/canary-by-header-pattern
nginx.ingress.kubernetes.io/canary-by-cookie
nginx.ingress.kubernetes.io/canary-weight

2、Rewrite URL 重写

某些情况下,后端服务中暴漏的URL地址和对客户展示的URL(入口规则)是不同的。这时候需要对地址进行重写。
nginx.ingress.kubernetes.io/rewrite-target
nginx.ingress.kubernetes.io/app-root

3、会话关联

当后端上游服务有多个实例时,通过设置会话关联;将一个用户的所有访问请求,转发到同一个服务实例上。
nginx.ingress.kubernetes.io/affinity
nginx.ingress.kubernetes.io/affinity-mode
nginx.ingress.kubernetes.io/session-cookie-name
nginx.ingress.kubernetes.io/session-cookie-path
nginx.ingress.kubernetes.io/session-cookie-samesite
nginx.ingress.kubernetes.io/session-cookie-conditional-samesite-none

4、Authentication 认证

可以添加身份验证,在入口规则中添加其他注释。身份验证的源是包含用户名和密码的机密。
nginx.ingress.kubernetes.io/auth-type: [basic|digest]
nginx.ingress.kubernetes.io/auth-secret: secretName
nginx.ingress.kubernetes.io/auth-secret-type: [auth-file|auth-map]
nginx.ingress.kubernetes.io/auth-realm: “realm string”

5、自定义Nginx 的上游服务器的哈希hash

NGINX支持基于给定密钥的一致散列的客户机-服务器映射的负载平衡。
有一种特殊的上游哈希模式叫做子集。在这种模式下,上游服务器被分组到子集中,粘性通过将键映射到子集而不是单个上游服务器来工作。特定服务器是从选定的粘性子集中随机统一选择的。它提供了粘性和负载分布之间的平衡。
nginx.ingress.kubernetes.io/upstream-hash-by: “$request_uri”
nginx.ingress.kubernetes.io/upstream-hash-by-subset

6、客户端证书认证

nginx.ingress.kubernetes.io/auth-tls-secret: secretName
nginx.ingress.kubernetes.io/auth-tls-verify-depth
nginx.ingress.kubernetes.io/auth-tls-verify-client
nginx.ingress.kubernetes.io/auth-tls-error-page
nginx.ingress.kubernetes.io/auth-tls-pass-certificate-to-upstream

7、自定义HTTP错误

nginx.ingress.kubernetes.io/custom-http-errors

8、默认后端服务

nginx.ingress.kubernetes.io/default-backend:

9、传输速率限制

nginx.ingress.kubernetes.io/limit-connections
nginx.ingress.kubernetes.io/limit-rps
nginx.ingress.kubernetes.io/limit-rpm
nginx.ingress.kubernetes.io/limit-rate-after
nginx.ingress.kubernetes.io/limit-rate
nginx.ingress.kubernetes.io/limit-whitelist

总结

另外还包括其他各种配置,强制跳转到SSL证书,重定向到www的域名、设置IP访问白名单、响应超时、代理信息设置等。
详情看 https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md#canary