当前位置:   article > 正文

K8S dashboard 2.0 安装配置并使用 ingress-nginx 访问_nginx-ingresskubernetes dashboard

nginx-ingresskubernetes dashboard

K8S dashboard 安装配置(v1.17.0)

一、dashboard总配置文件下载

官网地址:https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/

wget -O kubernetes-dashboard.yaml https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml

二、配置文件修改

1、将这段注释掉,下面我们使用自己手工签发的TLS证书并手工创建Secret
在这里插入图片描述
2、修改容器启动参数
在这里插入图片描述
其中auto-generate-certificates不能注释,因为我看到过有帖子说要注释掉(这个参数不仅仅是自动证书的开关,还是总的HTTPS的开关,当我们手工配置了证书后,容器不会自动生成)。
另外两个tls参数指定的是被挂载到容器中的证书的名字,下面我们使用 tls secret 处理的证书,通过配置mountPath: /certs可以得知被挂载到容器的/certs目录中,其名字为tls.crttls.key(为什么叫这2个名字或者是否可以配置其他名字,请继续往下看)。

三、tls证书制作

1、证书制作

  1. # 生成证书请求的key
  2. openssl genrsa -out dashboard.key 2048
  3. # 生成证书请求
  4. openssl req -days 3650 -new -key dashboard.key -out dashboard.csr -subj /C=CN/ST=JiangSu/L=NanJing/O=Shanhy/OU=Shanhy/CN=*.shanhy-k8s.com
  5. # 生成自签证书(证书文件 dashboard.crt 和私钥 dashboad.key
  6. openssl x509 -req -in dashboard.csr -signkey tls.key -out dashboard.crt
  7. # 查看证书信息
  8. openssl x509 -in dashboard.crt -text -noout

2、创建 kubernetes-dashboard-certs(因为我们把原来的注释掉了,所以这里手工创建)

  1. # 创建 namespace
  2. kubectl create namespace kubernetes-dashboard
  3. # 创建 secret(2行命令自选一个)
  4. kubectl create secret tls kubernetes-dashboard-certs -n kubernetes-dashboard --key dashboard.key --cert dashboard.crt
  5. kubectl create secret tls kubernetes-dashboard-certs -n kubernetes-dashboard --from-file=tls.crt=dashboard.crt --from-file=tls.key=dashboard.key

这里创建 secret 的两种方法命令对上面的问题进行了解释,下面解释一下,彻底把这块的用法说明白:

  • 如果你使用--key --cert方式则创建的secret中data的默认2个文件名就是tls.key和tls.crt,你可以使用命令kubectl describe secret -n kubernetes-dashboard kubernetes-dashboard-certs查看。
  • 如果你使用第二条命令的--from-file的方式,则你需要手工指定文件名称tls.crt和tls.key(看示例的写法),如果你把上面的命令直接写成--from-file=dashboard.crt,那么挂载后的文件就是dashboard.crt,这样你需要把第二步第2点中参数的tls.crt修改为dashboard.crt
  • 你还可以直接使用--from-file=mycert/这样直接指定一个目录,那么会把改目录下的所有文件都挂载到容器的/certs中,文件名保持不变。

四、命令启动服务

应用主配置文件一键启动

kubectl apply -f kubernetes-dashboard.yaml

启动后,查看一下 service、pod、secret 的信息内容确认结果。

五、配置ingress方式访问

创建文件ingress-nginx-kubernetes-dashboard.yaml

  1. apiVersion: networking.k8s.io/v1beta1 # for versions before 1.14 use extensions/v1beta1
  2. kind: Ingress
  3. metadata:
  4. name: ingress-nginx-kubernetes-dashboard
  5. namespace: kubernetes-dashboard
  6. annotations:
  7. kubernetes.io/ingress.class: "nginx"
  8. # 开启use-regex,启用path的正则匹配
  9. nginx.ingress.kubernetes.io/use-regex: "true"
  10. nginx.ingress.kubernetes.io/rewrite-target: /
  11. nginx.ingress.kubernetes.io/ssl-redirect: "true"
  12. #nginx.ingress.kubernetes.io/secure-backends: "true" //好像是版本0.20.0发布后被删除,请使用下面这行
  13. nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
  14. spec:
  15. tls:
  16. - hosts:
  17. - shanhy-k8s.com
  18. - "*.shanhy-k8s.com"
  19. secretName: kubernetes-dashboard-certs
  20. rules:
  21. - host: dashboard.shanhy-k8s.com
  22. http:
  23. paths:
  24. - path: /
  25. backend:
  26. serviceName: kubernetes-dashboard
  27. servicePort: 443

其中secretName就使用我们上面手工创建的kubernetes-dashboard-certs
然后发布配置:

kubectl apply -f ingress-nginx-kubernetes-dashboard.yaml

六、浏览器登录访问

dashboard.shanhy-k8s.com配置到本机hosts中,对应kubectl get ingree -A中看到的IP地址。
然后打开浏览器访问 https://dashboard.shanhy-k8s.com,打开页面:
在这里插入图片描述
其中Token的获取命令为:

kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep kubernetes-dashboard-token | awk '{print $1}')

输入获取的命令,就可以登录进入了。
此时还不能高兴的太早,你会发现等进入后啥都不显示,右上角的小铃铛上的提醒数字在一直增长。
打开浏览器debug模式,你会发现Network网络请求响应的都是forbidden 403这样的错误。

七、解决forbidden 403问题

这个错误是绑定的角色没有权限导致的,最简单的办法再创一个管理员角色,戳这里了解K8S RBAC介绍
1、创建配置文件kubernetes-dashboard-rbac.yaml

  1. apiVersion: v1
  2. kind: ServiceAccount
  3. metadata:
  4. name: admin-user
  5. namespace: kubernetes-dashboard
  6. ---
  7. apiVersion: rbac.authorization.k8s.io/v1
  8. kind: ClusterRoleBinding
  9. metadata:
  10. name: admin-user
  11. roleRef:
  12. apiGroup: rbac.authorization.k8s.io
  13. kind: ClusterRole
  14. name: cluster-admin
  15. subjects:
  16. - kind: ServiceAccount
  17. name: admin-user
  18. namespace: kubernetes-dashboard

运行配置文件内容,并获取admin-userToken(admin-user不是固定值你随便起什么名字):

  1. kubectl apply -f kubernetes-dashboard-rbac.yaml
  2. kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user-token | awk '{print $1}')

退出登录,用新创建的admin-usertoken进行登录,精彩完美呈现~~
在这里插入图片描述

八、彩蛋 —— 中文设置

Kubernetes Dashboard 2.0 已经支持中文界面了,但是你需要做一下浏览器设置,如下图:
在这里插入图片描述
其他浏览器,同理设置语言zh优先即可。


(END)

转载至https://blog.csdn.net/catoop/article/details/105046078/

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/48565
推荐阅读
相关标签
  

闽ICP备14008679号