kubernetes - 使用 Traefik 进行 Kubernetes 基本身份验证
问题描述
我正在尝试在使用 Traefik 作为入口控制器的 Nginx 示例上配置基本身份验证。
我只是"mypasswd"
在 Kubernetes 机密上创建机密。
这是我正在使用的入口:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginxingress
annotations:
ingress.kubernetes.io/auth-type: basic
ingress.kubernetes.io/auth-realm: traefik
ingress.kubernetes.io/auth-secret: mypasswd
spec:
rules:
- host: nginx.mycompany.com
http:
paths:
- path: /
backend:
serviceName: nginxservice
servicePort: 80
我检查了 Traefik 仪表板,它出现了,如果我访问 nginx.mycompany.com,我可以检查 Nginx 网页,但没有基本身份验证。
这是我的 nginx 部署:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
Nginx 服务:
apiVersion: v1
kind: Service
metadata:
labels:
name: nginxservice
name: nginxservice
spec:
ports:
# The port that this service should serve on.
- port: 80
# Label keys and values that must match in order to receive traffic for this service.
selector:
app: nginx
type: ClusterIP
解决方案
使用基本身份验证很流行。参考Kubernetes 文档,您应该能够使用以下步骤保护对 Traefik 的访问:
htpasswd
使用工具创建认证文件。系统将要求您输入用户密码:
htpasswd -c ./auth
- 现在使用
kubectl
创建的文件在监控命名空间中创建一个秘密htpasswd
。
kubectl create secret generic mysecret --from-file auth --namespace=monitoring
- 通过将注释附加到 Ingress 对象来启用基本身份验证:
ingress.kubernetes.io/auth-type:“基本”
ingress.kubernetes.io/auth-secret:“我的秘密”
因此,基本身份验证的完整示例配置如下所示:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: prometheus-dashboard
namespace: monitoring
annotations:
kubernetes.io/ingress.class: traefik
ingress.kubernetes.io/auth-type: "basic"
ingress.kubernetes.io/auth-secret: "mysecret"
spec:
rules:
- host: dashboard.prometheus.example.com
http:
paths:
- backend:
serviceName: prometheus
servicePort: 9090
- 您可以应用以下示例:
kubectl create -f prometheus-ingress.yaml -n 监控
这应该没有任何问题。
推荐阅读
- ruby-on-rails - docx 文件的回形针上传被下载为 zip 文件?
- java - 在 Aspose Words for Android 中获取段落中字符样式文本的起始位置
- python - 使用应用返回错误基于 2 列创建新列
- rabbitmq - Rabbitmq 服务器启动失败
- react-native - 在 react-native-nfc-manager v2 中禁用声音
- python - 有没有办法在输入后预先写一些东西?
- rust - Rust 为模块保留的名称
- linux-kernel - 如何卸载使用 ACPI_CONFIG_SYSFS 加载的覆盖
- node.js - 将所有IP地址列入白名单,仍然无法连接到mongodb atlas集群
- python - SyntaxError:无法分配给函数调用 Python