「Kubernetes Objects」- Ingress 常见问题处理

  CREATED BY JENKINSBOT

关于 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 配置;