关于 apiVersion 字段
Deprecated API Migration Guide | Kubernetes
我们讲过很多不同版本的 apiVersion 字段:
1)apiVersion: extensions/v1beta1
2)apiVersion: networking.k8s.io/v1beta1
3)apiVersion: networking.k8s.io/v1
正常的 APIVersion 升级,我们根据集群版本进行调整资源声明:
1)extensions/v1beta1 与 networking.k8s.io/v1beta1 从 v1.22 不再可用;
2)networking.k8s.io/v1 从 v1.19 开始可用,并引入很多新的属性字段;
Basic Auth
Nginx-ingress Kubernetes routing with basic auth – Stack Overflow
注意事项,我们使用 Nginx Ingress Controller 组件,所以很多示例配置都与之相关。
第一步、创建 Secret 凭证
创建用于 Basic Auth 认证的 Secret 凭证:
$ htpasswd -c auth foo New password: <bar> New password: Re-type new password: Adding password for user foo $ kubectl create secret generic basic-auth --from-file=auth secret "basic-auth" created $ kubectl get secret basic-auth -o yaml apiVersion: v1 data: auth: Zm9vOiRhcHIxJE9GRzNYeWJwJGNrTDBGSERBa29YWUlsSDkuY3lzVDAK kind: Secret metadata: name: basic-auth namespace: default type: Opaque
注意事项:该凭证必须包含 名为 auth 的 Key,否则将产生 503 错误;
第二步、添加 Ingress 注解
... metadata: annotations: ... nginx.ingress.kubernetes.io/auth-type: basic nginx.ingress.kubernetes.io/auth-secret: basic-auth nginx.ingress.kubernetes.io/auth-realm: "Authentication Required" ...
如果需要针对不同的域名进行 Basic Auth 的认证,可以创建不同的 Ingress 资源;
或者,通过 nginx.ingress.kubernetes.io/configuration-snippet 来增加特定的 Nginx 配置;