[TOC]
0x00 前言简述 1.Kuboard 介绍 描述: Kuboard 是一款免费的 Kubernetes 管理工具,提供了丰富的功能,结合已有或新建的代码仓库、镜像仓库、CI/CD工具
等,可以便捷的搭建一个生产可用的 Kubernetes 容器云平台,轻松管理和运行云原生应用。
您也可以直接将 Kuboard 安装到现有的 Kubernetes 集群,通过 Kuboard 提供的 Kubernetes RBAC 管理界面,将 Kubernetes 提供的能力开放给您的开发/测试团队。
Kuboard 提供的功能有:
Kubernetes 基本管理功能
Kubernetes 问题诊断
Kubernetes 存储管理
通过 ceph-csi 对接 CephFS
通过 ceph-csi 对接 Rook 安装的 CephFS
通过 nfs-client-provisioner 对接 NFS 类型的存储
对接其他类型的存储
认证与授权
内建用户库认证
GitLab / GitHub 单点登录
LDAP 认证
完整的 RBAC 权限管理
Kuboard 特色功能
Kuboard 官方套件
Grafana+Prometheus 资源监控
Grafana+Loki+Promtail 日志聚合
Kuboard 自定义名称空间布局
Kuboard 中英文语言包
2.Kuboard v3.x 版本 描述: Kuboard v3.x 兼容性涉及 Kubernetes 版本 (v1.13 ~ v1.20)
Kuboard v3.x 功能特点:
支持 Kubernetes 多集群管理
支持 amd64 (x86) 架构和 arm68 (armv8) 架构的 CPU;
Kuboard v3.x 与 v2.0.x 对比:
1.v3.x 不再部署在 Kubernetes 中,而是作为一个独立的容器运行。
2.由于运行模式不同 v2.0.x 与 v3.x 可以同时存在互不干扰, 其次是 v3.x 将 Kuboard 部署的大部分内容从 kube-system 名称空间迁移到 kuboard 名称空间。
Tips : 如果您最终决定从 Kuboard v2.0.x 迁移到 Kuboard v3,请在 Kuboard v2.0.x 的界面中卸载掉 Kuboard 套件,并在 Kuboard v3 中重新安装 Kuboard 套件。
0x01 安装部署 1.安装步骤
1) k8s集群部署说明获取部署 Kuboard 所需的 YAML 文件:
[TOC]
0x00 前言简述 1.Kuboard 介绍 描述: Kuboard 是一款免费的 Kubernetes 管理工具,提供了丰富的功能,结合已有或新建的代码仓库、镜像仓库、CI/CD工具
等,可以便捷的搭建一个生产可用的 Kubernetes 容器云平台,轻松管理和运行云原生应用。
您也可以直接将 Kuboard 安装到现有的 Kubernetes 集群,通过 Kuboard 提供的 Kubernetes RBAC 管理界面,将 Kubernetes 提供的能力开放给您的开发/测试团队。
Kuboard 提供的功能有:
Kubernetes 基本管理功能
Kubernetes 问题诊断
Kubernetes 存储管理
通过 ceph-csi 对接 CephFS
通过 ceph-csi 对接 Rook 安装的 CephFS
通过 nfs-client-provisioner 对接 NFS 类型的存储
对接其他类型的存储
认证与授权
内建用户库认证
GitLab / GitHub 单点登录
LDAP 认证
完整的 RBAC 权限管理
Kuboard 特色功能
Kuboard 官方套件
Grafana+Prometheus 资源监控
Grafana+Loki+Promtail 日志聚合
Kuboard 自定义名称空间布局
Kuboard 中英文语言包
2.Kuboard v3.x 版本 描述: Kuboard v3.x 兼容性涉及 Kubernetes 版本 (v1.13 ~ v1.20)
Kuboard v3.x 功能特点:
支持 Kubernetes 多集群管理
支持 amd64 (x86) 架构和 arm68 (armv8) 架构的 CPU;
Kuboard v3.x 与 v2.0.x 对比:
1.v3.x 不再部署在 Kubernetes 中,而是作为一个独立的容器运行。
2.由于运行模式不同 v2.0.x 与 v3.x 可以同时存在互不干扰, 其次是 v3.x 将 Kuboard 部署的大部分内容从 kube-system 名称空间迁移到 kuboard 名称空间。
Tips : 如果您最终决定从 Kuboard v2.0.x 迁移到 Kuboard v3,请在 Kuboard v2.0.x 的界面中卸载掉 Kuboard 套件,并在 Kuboard v3 中重新安装 Kuboard 套件。
0x01 安装部署 1.安装步骤
Tips : 此 YAML 文件向 Kubernetes 中部署了一个三副本的 StatefulSet kuboard-etcd
和一个单副本的 Deployment kuboard-v3;其中 Deployment kuboard-v3 暂时不支持多副本,请保持其 replicas 字段为 1,将在后续的版本升级中解决 kuboard-v3 多副本部署的问题。
2.配置步骤
weiyigeek.top-Kuboard多集群管理
2) 为单点登录的用户/用户组授权(由于在刚开发阶段所以还有些不成熟
) 描述: 当您配置 Kuboard 与 gitlab / github / ldap
实现单点登录以后,Kuboard 并不管理用户基本信息、用户组信息、用户与用户组之间的映射信息 为了让单点登录的用户获得合适的权限,您需要在 Kuboard 中为对应的用户/用户组授权:1 2 3 - 为用户添加角色绑定 - 切换到 角色绑定(全局) - 创建角色绑定
weiyigeek.top-授权
Tips : 全局角色绑定,用户可以在所有 Kubernetes 集群范围内执行该角色授予的权限; Tips : 集群角色绑定,用户只能在指定的 Kubernetes 集群范围内执行该角色授予的权限; Tips : 通常以用户组授权
比为单个用户授权更为灵活和方便
。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 ; 使用 nginx 作为反向代理,配置文件样例 http { # 您需要的其他配置 map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { listen 80; server_name kuboard.this-is-a-sample.com; # 替换成你的域名 location / { proxy_pass http://192.168.32.205:10080/; # 替换成你的 Kuboard IP 地址和端口,应该是 IP 地址,而不是 KUBOARD_ENDPOINT 参数的值 gzip on; } location /k8s-ws/ { proxy_pass http://192.168.32.205:10080/k8s-ws/; # 替换成你的 Kuboard IP 地址和端口 proxy_http_version 1.1; proxy_pass_header Authorization; proxy_set_header Upgrade "websocket"; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # proxy_set_header X-Forwarded-Proto https; # 如果您在反向代理上启用了 HTTPS } location /k8s-proxy/ { proxy_pass http://192.168.32.205:10080/k8s-proxy/; # 替换成你的 Kuboard IP 地址和端口 proxy_http_version 1.1; proxy_pass_header Authorization; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # proxy_set_header X-Forwarded-Proto https; # 如果您在反向代理上启用了 HTTPS gzip on; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } }
4) SSL 证书配置 描述: Web 服务端口在如下两种情况下需要配置 SSL 证书, 一是通过公网访问 Kuboard 界面,提高安全性;二是为被纳管的 Kubernetes 配置 OIDC与 Kuboard 实现单点登录(如不配置,通过 Kuboard 管理 Kubernetes 时,Kubernetes 只能将用户识别成 kuboard-admin 或者 kuboard-user 这两个 ServiceAccount 当中的一个)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 sudo docker run -d \ --restart=unless-stopped \ -v /hostpath/to/your/server.crt:/etc/certs/my.company.com/server.crt \ -v /hostpath/to/your/server.key:/etc/certs/my.company.com/server.key \ -e KUBOARD_TLS_CERT=/etc/certs/my.company.com/server.crt \ -e KUBOARD_TLS_KEY=/etc/certs/my.company.com/server.key \ -p 10080:80/tcp \ -p 443:443/tcp \ -p 10081:10081/tcp \ -p 10081:10081/udp \ -e KUBOARD_ENDPOINT="http://kuboard.this-is-a-sample.com:10080" \ -e KUBOARD_AGENT_SERVER_UDP_PORT="10081" \ -e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \ -v /root/kuboard-data:/data \ eipwork/kuboard:v3-beta sudo docker run -d \ --restart=unless-stopped \ -p 10080:80/tcp \ -p 443:443/tcp \ -p 10081:10081/tcp \ -p 10081:10081/udp \ -e KUBOARD_TLS_AUTOCERT=true \ -e KUBOARD_TLS_DOMAIN=kuboard.this-is-a -sample.com \ -e KUBOARD_ENDPOINT="http://kuboard.this-is-a-sample.com:10080" \ -e KUBOARD_AGENT_SERVER_UDP_PORT="10081" \ -e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \ -v /root/kuboard-data:/data \ eipwork/kuboard:v3-beta
Tips : Kuboard Agent Server 端口使用 TCP、UDP 通信,是私有协议,已经自动配置了 TLS 加密连接,无需用户额外配置证书。(该 Agent Server 端口无需暴露到公网) Tips : 如果通过 nginx 反向代理访问 Kuboard,建议在 nginx 中配置 SSL 证书; Tips : 如果您的 Kuboard 打算直接在公网上访问,建议使用 Lets Encrypt; Tips : 使用 Lets Encrypt 时,请将 kuboard.this-is-a-sample.com 域名指向您的 Kuboard 所在宿主机的公网 IP,并且确保 80, 443 端口开放。Kuboard 启动后,在您第一次访问 https://kuboard.this-is-a-sample.com 时,Lets Encrypt 将自动申请证书(浏览器上显示第一次访问将失败)。等候 1-5 分钟时间,再次访问 https://kuboard.this-is-a-sample.com 时,您将能够成功访问,证书也已经颁发并且自动配置好;通常免费证书有效期是一年时间,证书到期前一个月,系统会自动为您更新证书,无需您额外做任何操作。
3.升级配置 描述: 将 kuboard v3 更新到最新版本。
方式1.Docker 容器 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 docker stop $(docker ps -a | grep "eipwork/kuboard" | awk '{print $1 }' ) docker rm $(docker ps -a | grep "eipwork/kuboard" | awk '{print $1 }' ) sudo docker run -d \ --restart=unless-stopped \ --name=kuboard \ -p 10080:80/tcp \ -p 10081:10081/udp \ -p 10081:10081/tcp \ -e KUBOARD_ENDPOINT="http://kuboard.this-is-a-sample.com:10080" \ -e KUBOARD_AGENT_SERVER_UDP_PORT="10081" \ -e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \ -v /root/kuboard-data:/data \ eipwork/kuboard:v3.1.0.3
方式2.Kubernetes 集群 1 2 kubectl set image -n kuboard deployment/kuboard-v3 kuboard=swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3
0x02 使用实践 1.集群添加
Step 1.添加已有 Kubernetes 集群到 Kuboard(注意Kubernetes 集群,版本不低于 v1.13
),点击首页的添加集群。输入如图下所示(注意选择Agent连接方式)
weiyigeek.top-k8s cluster add
Step 2.请安装 kuboard-agent 然后在将要被导入的 Kubernetes 集群执行如下指令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 curl -k 'http://192.168.12.108:30567/kuboard-api/cluster/k8s-test.weiyigeek/kind/KubernetesCluster/k8s-test.weiyigeek/resource/installAgentToKubernetes?token=OIrni4gJpu4hfeAMyJTxCL0gyMZ0Ps1o' > kuboard-agent.yaml kubectl apply -f ./kuboard-agent.yaml $ kubectl get pod -n kuboard NAME READY STATUS RESTARTS AGE kuboard-agent-2-5f4bcf8b45-d4gr9 1/1 Running 0 33s kuboard-agent-784ccf8f5c-lm7fc 1/1 Running 0 33s
Step 3.最后点击我已执行导入命令(执行上面的命令后也会自动探测), 添加完集群后会在Kubernetes 集群列表中看它。
weiyigeek.top-集群添加
Step 4.如果您已经执行了导入命令,但仍然处于等待导入状态,有可能是因为 kuboard-agent 没有启动,或者 kuboard-agent 不能连接 kuboard-server。请按照下面的提示检查网络连通性以及 kuboard-agent 的日志。
1 2 3 4 5 6 7 8 9 nc -vuz 192.168.12.108 30568 kubectl get pods -n kuboard -o wide -l "k8s.kuboard.cn/name in (kuboard-agent, kuboard-agent-2)" kubectl logs -f -n kuboard -l "k8s.kuboard.cn/name in (kuboard-agent, kuboard-agent-2)"
Step 5.连接完成后与v2.x一样可以对集群进行管理包括(资源配置和应用程序应用以及存储的创建)
weiyigeek.top-集群管理
weiyigeek.top-Kubernetes 集群列表
2.集群管理使用
weiyigeek.top-yaml部署
Step 3.部署结果访问http://192.168.12.111:30000/
地址返回界面如下:
weiyigeek.top-部署结果
Step 4.查看我们资源清单创建的ConfigMap,点击配置中心->配置字典->我们可以通过资源清单和UI来创建
weiyigeek.top-kuboard-ConfigMap