Kubernetes之ingress设置账号密码
Kubernetes中,应用服务使用ingress暴露后,默认是没有账号密码限制的,只要知道ingress的地址,所有人都可以访问服务(除非应用中有账号密码限制)。
那么有些开源服务访问时默认没有账号密码的,如kibana,elasticsearch-head 或者自己公司业务无账号密码,那么可以在k8s中给ingress设置账号密码来限制访问
设置步骤如下:
一、生成auth文件
使用htpasswd命令生产auth文件,其中mayi处改为你自己的账号,按提示输入密码
[root@mayi ~]# yum -y install httpd
#生成auth文件,password处输入密码
[root@mayi ~]# htpasswd -c auth mayi
New password:
New password:
Re-type new password:
Adding password for user mayi
[root@mayi ~]# cat auth
mayi:$apr1$POsaodhx$zK16ME9yNZqSUc9Tpe83o0
二、生成secret
basic-auth是secret名称,要指定namespace,因为secret是不能跨namespace访问的
#记得指定namespace
[root@mayi ~]# kubectl create secret generic basic-auth --from-file=auth -n default
secret "basic-auth" created
查看生成的secret
#查看basic-auth这个secret
[root@mayi ~]# kubectl get secret basic-auth -o yaml -n default
apiVersion: v1
data:
auth: ZHlqdzokYXByMSRUSVdYUjZtLyR6bUhpY2hzSlpDbTZ5bWd2QVVqLnoxCg==
kind: Secret
metadata:
creationTimestamp: "2021-08-23T12:47:46Z"
name: basic-auth
namespace: default
resourceVersion: "53830511"
selfLink: /api/v1/namespaces/default/secrets/basic-auth
uid: b2896f05-5008-4a2f-92c5-2c50d520ad30
type: Opaque
怎么在ingress中使用这个secret呢,在annotations中使用我们创建好的secret
三、创建ingress
[root@mayi ~]# ingress.yaml
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: elasticsearch-head
namespace: default
annotations:
nginx.ingress.kubernetes.io/auth-type: basic
nginx.ingress.kubernetes.io/auth-secret: basic-auth
nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - dyjw'
spec:
rules:
- host: kibana.mayi.com
http:
paths:
- path:
backend:
serviceName: kibana
servicePort: 5601
配置域名,解析到k8snode主机。
四、访问
使用:http://kibana.mayi.com/域名访问应用,现在就会提示账号密码登录。
参考地址:https://my.oschina.net/u/2518341/blog/4277962
请先 后发表评论~