前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >K8S dashboard 2.0 安装配置并使用 ingress-nginx 访问

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

作者头像
烂猪皮
发布2020-10-19 15:27:19
1.7K1
发布2020-10-19 15:27:19
举报
文章被收录于专栏:JAVA烂猪皮JAVA烂猪皮

走过路过不要错过

点击蓝字关注我们

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、证书制作

# 生成证书请求的key
openssl genrsa -out dashboard.key 2048
# 生成证书请求
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
# 生成自签证书(证书文件 dashboard.crt 和私钥 dashboad.key)
openssl x509 -req -in dashboard.csr -signkey tls.key -out dashboard.crt
# 查看证书信息
openssl x509 -in dashboard.crt -text -noout

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

# 创建 namespace
kubectl create namespace kubernetes-dashboard
# 创建 secret(2行命令自选一个)
kubectl create secret tls kubernetes-dashboard-certs -n kubernetes-dashboard --key dashboard.key --cert dashboard.crt
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

apiVersion: networking.k8s.io/v1beta1 # for versions before 1.14 use extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-nginx-kubernetes-dashboard
  namespace: kubernetes-dashboard
  annotations:
    kubernetes.io/ingress.class: "nginx"
    # 开启use-regex,启用path的正则匹配 
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    #nginx.ingress.kubernetes.io/secure-backends: "true" //好像是版本0.20.0发布后被删除,请使用下面这行
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
  tls:
  - hosts:
    - shanhy-k8s.com
    - "*.shanhy-k8s.com"
    secretName: kubernetes-dashboard-certs
  rules:
  - host: dashboard.shanhy-k8s.com
    http:
      paths:
      - path: /
        backend:
          serviceName: kubernetes-dashboard
          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

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard

---

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard

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

kubectl apply -f kubernetes-dashboard-rbac.yaml
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优先即可。


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA烂猪皮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • K8S dashboard 安装配置(v1.17.0)
    • 一、dashboard总配置文件下载
      • 二、配置文件修改
        • 三、tls证书制作
          • 四、命令启动服务
            • 六、浏览器登录访问
              • 七、解决forbidden 403问题
                • 八、彩蛋 —— 中文设置
                相关产品与服务
                容器服务
                腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档