From 7bb6c3464e15576383c1fd5455d4f2f39cd1dc8e Mon Sep 17 00:00:00 2001 From: "huanqing.shao" Date: Wed, 11 Nov 2020 00:05:55 +0800 Subject: [PATCH] v3.0.0-alpha.2 --- .vuepress/comp/CurrentVersionV3.vue | 50 +++++++++++ .vuepress/comp/index.js | 1 + .vuepress/config-sidebar.js | 24 +++++- .../image-20201108174801858.png | Bin 65745 -> 0 bytes install/v3-upgrade.md | 26 +++++- .../image-20201110231839543.png | Bin 0 -> 64609 bytes .../{v3-install.md => v3/install-built-in.md} | 18 ++-- install/v3/install-github.md | 22 +++++ install/v3/install-gitlab.md | 22 +++++ install/v3/install-ldap.md | 22 +++++ install/v3/proxy.md | 57 +++++++++++++ install/v3/tls.md | 80 ++++++++++++++++++ support/change-log/upgrade-2-3.md | 14 +++ support/change-log/v3.0.x.md | 53 ++++++++++++ support/known-issue.md | 2 + 15 files changed, 380 insertions(+), 11 deletions(-) create mode 100644 .vuepress/comp/CurrentVersionV3.vue delete mode 100644 install/v3-install.assets/image-20201108174801858.png create mode 100644 install/v3/install-built-in.assets/image-20201110231839543.png rename install/{v3-install.md => v3/install-built-in.md} (70%) create mode 100644 install/v3/install-github.md create mode 100644 install/v3/install-gitlab.md create mode 100644 install/v3/install-ldap.md create mode 100644 install/v3/proxy.md create mode 100644 install/v3/tls.md create mode 100644 support/change-log/upgrade-2-3.md create mode 100644 support/change-log/v3.0.x.md diff --git a/.vuepress/comp/CurrentVersionV3.vue b/.vuepress/comp/CurrentVersionV3.vue new file mode 100644 index 0000000..e528def --- /dev/null +++ b/.vuepress/comp/CurrentVersionV3.vue @@ -0,0 +1,50 @@ + + + + + diff --git a/.vuepress/comp/index.js b/.vuepress/comp/index.js index 0deaf7a..281558c 100644 --- a/.vuepress/comp/index.js +++ b/.vuepress/comp/index.js @@ -2,6 +2,7 @@ let components = [ { name: 'LearningPlan', component: () => import(`./LearningPlan.vue`) }, { name: 'Course', component: () => import(`./Course.vue`) }, { name: 'CurrentVersion', component: () => import(`./CurrentVersion.vue`) }, + { name: 'CurrentVersionV3', component: () => import(`./CurrentVersionV3.vue`) }, ] export default function (Vue) { diff --git a/.vuepress/config-sidebar.js b/.vuepress/config-sidebar.js index 77f922c..32c0a95 100644 --- a/.vuepress/config-sidebar.js +++ b/.vuepress/config-sidebar.js @@ -46,7 +46,25 @@ let sidebar = { title: '安装 Kubernetes 管理工具', collapsable: false, children: [ - 'v3-install', + { + title: '安装 Kuboard v3', + collapsable: true, + children: [ + 'v3/install-built-in', + 'v3/install-gitlab', + 'v3/install-github', + 'v3/install-ldap', + ] + }, + { + title: '配置 Kuboard v3', + collapsable: true, + children: [ + 'v3/proxy', + 'v3/tls', + 'v3-upgrade', + ] + }, 'install-dashboard', 'install-dashboard-offline', { @@ -659,10 +677,12 @@ let sidebar = { title: '更新说明', collapsable: false, children: [ + 'change-log/v3.0.x', 'change-log/v2.0.x', 'change-log/v1.0.x', + 'change-log/upgrade-2-3', 'change-log/upgrade-1-2', - 'change-log/upgrade-2-from-beta', + // 'change-log/upgrade-2-from-beta', 'known-issue', ] } diff --git a/install/v3-install.assets/image-20201108174801858.png b/install/v3-install.assets/image-20201108174801858.png deleted file mode 100644 index b88703f11e0262b0f424a4b9e4e00a7a7690142b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65745 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 a6>xA1EB0dcg;%S9=bY6AOS*;o-Twj|SC~Wq diff --git a/install/v3-upgrade.md b/install/v3-upgrade.md index 23193db..c085bc1 100644 --- a/install/v3-upgrade.md +++ b/install/v3-upgrade.md @@ -10,4 +10,28 @@ meta: -本文描述了如何升级 Kuboard v3.x.x +1. 停止已有 kuboard 容器 + + ``` sh + docker stop $(docker ps -a | grep "eipwork/kuboard" | awk '{print $1 }') + docker rm $(docker ps -a | grep "eipwork/kuboard" | awk '{print $1 }') + ``` + +2. 使用新版本的镜像启动 kuboard + + ``` sh {7} + sudo docker run -d \ + --restart=unless-stopped \ + -p 80:80/tcp \ + -p 10081:10081/udp \ + -p 10081:10081/tcp \ + -v /root/kuboard-data:/data \ + eipwork/kuboard:v3.0.0-alpha.2 + ``` + + ::: danger 请注意 + * 除了镜像标签之外,请确保命令行中所有其他参数与最初安装 Kuboard 时的参数一致; + * 从 kuboard-v3.0.0.alpha.1 升级过来的用户,命令行中第 3 行参数原本为 `-p 10080:10080/tcp`,请调整为 `-p 10080:80/tcp`,因为自 alpha.2 开始,容器内部将使用 80/443 作为 Web 服务的端口号; + * 调整为 `-p 10080:80/tcp` 后,您原有已导入到 Kubernetes 的集群仍可以正常访问; + * 如果您修改此处宿主机端口号,则需要您在 Kuboard 中删除已经导入了的 Kubernetes 集群,并重新导入。 + ::: diff --git a/install/v3/install-built-in.assets/image-20201110231839543.png b/install/v3/install-built-in.assets/image-20201110231839543.png new file mode 100644 index 0000000000000000000000000000000000000000..163bccd800fab24fd5f1b039e16d05865125edcd GIT binary patch literal 64609 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 Utu{NSwgHdBc^4bJ_00$W13nLhuK)l5 literal 0 HcmV?d00001 diff --git a/install/v3-install.md b/install/v3/install-built-in.md similarity index 70% rename from install/v3-install.md rename to install/v3/install-built-in.md index 9d7a274..b021a08 100644 --- a/install/v3-install.md +++ b/install/v3/install-built-in.md @@ -6,7 +6,7 @@ meta: content: Kubernetes Dashboard安装,Kuboard安装,K8S Dashboard安装 --- -# 安装 Kuboard v3 +# 安装 Kuboard v3 - 内建用户库 @@ -35,22 +35,24 @@ Kuboard v3.0 不再部署在 Kubernetes 集群当中,而是以一个 docker ``` sh {6} sudo docker run -d \ --restart=unless-stopped \ - -p 10080:10080/tcp \ - -p 10081:10081/tcp \ + --name=kuboard \ + -p 80:80/tcp \ -p 10081:10081/udp \ + -p 10081:10081/tcp \ -v /root/kuboard-data:/data \ eipwork/kuboard:v3-alpha ``` ::: tip Tips +* 建议将此命令保存为一个 shell 脚本,例如 `start-kuboard.sh`,后续升级 Kuboard 或恢复 Kuboard 时,需要通过此命令了解到最初安装 Kuboard 时所使用的参数; * Kuboard v3.0 的持久化数据存储在 `/data` 目录,如安装指令的第六行所示,默认映射到了宿主机的 `/root/kuboard-data` 路径,请根据您自己的情况进行调整; -* Kuboard v3.0 需要暴露 `10080` 端口,如安装指令的第三行所示,默认映射到了宿主机的 `10080` 端口,您可以根据自己的情况选择宿主机的其他端口; +* Kuboard v3.0 需要暴露 `80` 端口,如安装指令的第三行所示,默认映射到了宿主机的 `80` 端口,您可以根据自己的情况选择宿主机的其他端口; * Kuboard v3.0 需要暴露 `10081` 端口 TCP / UDP,如安装指令的第四、第五行所示,默认映射到了宿主机的 `10081` 端口,您可以根据自己的情况选择宿主机的其他端口; ::: ## 访问 Kuboard v3.0 -在浏览器输入 `http://your-host-ip:10080` 即可访问 Kuboard v3.0 的界面,登录方式: +在浏览器输入 `http://your-host-ip` 即可访问 Kuboard v3.0 的界面,登录方式: * 用户名: `admin` * 密 码: `Kuboard123` @@ -60,13 +62,13 @@ Kuboard 在添加被纳管的 Kubernetes 集群时,需要向集群中安装 Ku | 参数名称 | 默认值 | 描述 | | ----------------------------- | ---------------------------------------------------------- | ------------------------------------------------------------ | -| Kuboard UI 访问地址 |
http://your-host-ip:10080
| Kuboard Agent 访问 Kuboard web 时所使用的地址,必须映射到 Kuboard 的 `10080` 端口 | +| Kuboard UI 访问地址 |
http://your-host-ip:hostport
| Kuboard Agent 访问 Kuboard web 时所使用的地址及端口(此端口为 docker run 命令中映射到 Kuboard 容器 `80` 端口的宿主机端口,您可以自定义端口号,两处保持一致即可) | | Kuboard Agent Server Host | your-host-ip | Kuboard Agent 访问 Kuboard Agent Server 时所使用的目标地址 | -| Kuboard Agent Server UDP Port | 10081 | Kuboard Agent 可以使用 UDP 协议或者 TCP 协议连接 Kuboard Agent Server,二者选其一即可,必须映射到 Kuboard 的 `10081` 端口。
* *UDP 比 TCP 快 20%*;
* *TCP 可以使用 http 或 socks5 代理*;
不同的 Kubernetes 集群可以选择 UDP 或 TCP。 | +| Kuboard Agent Server UDP Port | 10081 | Kuboard Agent 可以使用 UDP 协议或者 TCP 协议连接 Kuboard Agent Server,此端口为 docker run 命令中映射到 Kuboard 容器 `10081/udp` 端口的宿主机端口,您可以自定义端口号,两处保持一致即可。
* *UDP 比 TCP 快 20%*;
* *TCP 可以使用 http 或 socks5 代理*;
不同的 Kubernetes 集群可以选择 UDP 或 TCP。 | | Kuboard Agent Server TCP Port | 10081 | 同上 | -![Kuboard v3 初始化设置](./v3-install.assets/image-20201108174801858.png) +![Kuboard-v3 访问地址](./install-built-in.assets/image-20201110231839543.png) diff --git a/install/v3/install-github.md b/install/v3/install-github.md new file mode 100644 index 0000000..78f01cb --- /dev/null +++ b/install/v3/install-github.md @@ -0,0 +1,22 @@ +--- +lessAds: false +description: 一行命令开启Kubernetes多集群管理之路_Kuboard_V3安装 +meta: + - name: keywords + content: Kubernetes Dashboard安装,Kuboard安装,K8S Dashboard安装 +--- + +# 安装 Kuboard v3 - github + + + +Kuboard 支持多种认证方式: + +* 内建用户库 +* GitLab Community Edition / GitLab Enterprise Edition / gitlab.com +* GitHub Enterprise / github.com +* LDAP + +本文将要描述如何使用 GitHub 用户登录 Kuboard。 + +预计在 kuboard v3.0.0-alpha.5 支持此认证方式。 diff --git a/install/v3/install-gitlab.md b/install/v3/install-gitlab.md new file mode 100644 index 0000000..b76c37d --- /dev/null +++ b/install/v3/install-gitlab.md @@ -0,0 +1,22 @@ +--- +lessAds: false +description: 一行命令开启Kubernetes多集群管理之路_Kuboard_V3安装 +meta: + - name: keywords + content: Kubernetes Dashboard安装,Kuboard安装,K8S Dashboard安装 +--- + +# 安装 Kuboard v3 - gitlab + + + +Kuboard 支持多种认证方式: + +* 内建用户库 +* GitLab Community Edition / GitLab Enterprise Edition / gitlab.com +* GitHub Enterprise / github.com +* LDAP + +本文将要描述如何使用 GitLab 用户登录 Kuboard。 + +预计在 kuboard v3.0.0-alpha.3 支持此认证方式。 diff --git a/install/v3/install-ldap.md b/install/v3/install-ldap.md new file mode 100644 index 0000000..81a48b5 --- /dev/null +++ b/install/v3/install-ldap.md @@ -0,0 +1,22 @@ +--- +lessAds: false +description: 一行命令开启Kubernetes多集群管理之路_Kuboard_V3安装 +meta: + - name: keywords + content: Kubernetes Dashboard安装,Kuboard安装,K8S Dashboard安装 +--- + +# 安装 Kuboard v3 - ldap + + + +Kuboard 支持多种认证方式: + +* 内建用户库 +* GitLab Community Edition / GitLab Enterprise Edition / gitlab.com +* GitHub Enterprise / github.com +* LDAP + +本文将要描述如何使用 LDAP 用户登录 Kuboard。 + +预计在 kuboard v3.0.0-alpha.4 支持此认证方式。 diff --git a/install/v3/proxy.md b/install/v3/proxy.md new file mode 100644 index 0000000..76dc70c --- /dev/null +++ b/install/v3/proxy.md @@ -0,0 +1,57 @@ +--- +vssueId: 13 +lessAds: false +description: Kuboard_是一款Kubernetes_Dashboard_快速在K8S上落地微服务_本文是Kuboard的安装手册_包括安装Kuboard的前提条件_与Kubernetes的版本兼容性_安装步骤_以及完成安装后如何访问Kuboard界面。 +meta: + - name: keywords + content: Kubernetes Dashboard安装,Kuboard安装,K8S Dashboard安装 +--- + +# 通过反向代理访问 Kuboard + + + + +## 配置反向代理时的注意事项 + +在为 Kuboard 配置反向代理时,需要注意: +* WebContextRoot + * Kuboard 需要使用根路径进行访问,即 https://yourkuboard.yourcompany.com/,而不能是 https://yourcompany.com/kuboard/ 这样的二级路径; +* 启用 WebSocket + * Kuboard 中终端和日志的功能需要用到 WebSocket,需要在您的反向代理中配置 WebSocket,才能正常使用 Kuboard 的终端和日志功能; +* PassHeader + * Kuboard v3 的 Portforward v3.0.0 功能需要用到 SPDY 协议,需要您的反向代理能够支持此协议,并将 Upgrade,Connection,Authorization 这几个 Header 传递给 Kuboard。 + +## 配置样例 + +### Nginx 配置 + +如果您使用 nginx 作为反向代理,配置文件样例如下所示: + +``` nginx {7-9,14-16} +server { + listen 80; + server_name kuboard.yourdomain.com; # 替换成你的域名 + location / { + proxy_pass http://192.168.2.39:80; # 替换成你的宿主机地址 + proxy_http_version 1.1; + proxy_pass_header Authorization; + 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-ws/ { + proxy_pass http://192.168.2.39:80; # 替换成你的宿主机地址 + 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 + } + gzip on; +} +``` diff --git a/install/v3/tls.md b/install/v3/tls.md new file mode 100644 index 0000000..57979a3 --- /dev/null +++ b/install/v3/tls.md @@ -0,0 +1,80 @@ +--- +lessAds: false +description: 为 Kuboard v3 配置 TLS 证书 +meta: + - name: keywords + content: Kubernetes Dashboard安装,Kuboard安装,K8S Dashboard安装 +--- + +# SSL 证书 + + + +Kuboard v3 容器对外暴露三个端口: +* `80` Kuboard Web 服务端口,TCP; +* `443` Kuboard Web 服务端口,TCP; +* `10081` Kuboard Agent Server 端口,TCP 、 UDP。 + +其中,Web 服务端口在如下两种情况下需要配置 SSL 证书: + * 通过公网访问 Kuboard 界面,提高安全性; + * 为被纳管的 Kubernetes 配置 OIDC,与 Kuboard 实现单点登录(如不配置,通过 Kuboard 管理 Kubernetes 时,Kubernetes 只能将用户识别成 `kuboard-admin` 或者 `kuboard-user` 这两个 ServiceAccount 当中的一个) + +Kuboard Agent Server 端口使用 TCP、UDP 通信,是私有协议,已经自动配置了 TLS 加密连接,无需用户额外配置证书;此外,该端口只提供给安装到 Kubernetes 集群中的 Kuboard Agent 访问,无需暴露到公网。 + +## Certificates + +您可以加载 SSL 证书到 Kuboard 容器中,并且配置好证书对应的路径以支持 HTTPS 访问; + +::: tip Tips +* 如果 [通过 nginx 反向代理访问 Kuboard](./v3-proxy.html),建议在 nginx 中配置 SSL 证书; +* 如果您的 Kuboard 打算直接在公网上访问,建议使用 [Lets Encrypt](#lets-encrypt) +::: + +启动命令如下所示: + +```sh {3-6,8} +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 80:80/tcp \ + -p 443:443/tcp \ + -p 10081:10081/tcp \ + -p 10081:10081/udp \ + -v /root/kuboard-data:/data \ + eipwork/kuboard:v3-alpha +``` + +其中: +* 第 3 - 4 行,将证书的 crt 文件和 key 文件从宿主机映射到 Kuboard 容器的某一个路径; +* 第 5 - 6 行,通过环境变量指定 Kuboard 使用该证书; +* 第 8 行将 443 端口映射到宿主机的 443 端口。 + + +## Lets Encrypt + +Lets Encrypt 是一个开源免费的证书颁发机构,如果您直接在公网上访问 Kuboard,建议使用 Lets Encrypt 配置 SSL 证书。 + +启动命令如下所示: + +```sh {3,4,6} +sudo docker run -d \ + --restart=unless-stopped \ + -e KUBOARD_TLS_AUTOCERT=true \ + -e KUBOARD_TLS_DOMAIN=kuboard.yourcompany.com \ + -p 80:80/tcp \ + -p 443:443/tcp \ + -p 10081:10081/tcp \ + -p 10081:10081/udp \ + -v /root/kuboard-data:/data \ + eipwork/kuboard:v3-alpha +``` + +其中: +* 第 3 行激活 Kuboard 中的 Lets Encrypt 客户端; +* 第 4 行指定 Lets Encrypt 颁发证书时对应的域名; +* 第 6 行将 443 端口映射到宿主机的 443 端口。 + +> 使用 Lets Encrypt 时,请将 `kuboard.yourcompany.com` 域名指向您的 Kuboard 所在宿主机的公网 IP,并且确保 80, 443 端口开放。Kuboard 启动后,在您第一次访问 `https://kuboard.yourcompany.com` 时,Lets Encrypt 将自动申请证书(浏览器上显示第一次访问将失败)。等候 1-5 分钟时间,再次访问 `https://kuboard.yourcompany.com` 时,您将能够成功访问,证书也已经颁发并且自动配置好;通常免费证书有效期是一年时间,证书到期前一个月,系统会自动为您更新证书,无需您额外做任何操作。 diff --git a/support/change-log/upgrade-2-3.md b/support/change-log/upgrade-2-3.md new file mode 100644 index 0000000..521d570 --- /dev/null +++ b/support/change-log/upgrade-2-3.md @@ -0,0 +1,14 @@ +--- +vssueId: 72 +description: 本文描述了Kuboard_v3.0.x版本的升级方法 +--- + +# 从 v2.0.x 升级到 v3.0.x + +与 v2.0.x 相比,v3.0.x 不再部署在 Kubernetes 中,而是作为一个独立的容器运行。 + +* 由于运行模式不同,v2.0.x 与 v3.0.x 可以同时存在互不干扰。 + + 请参考 [安装 Kuboard v3](/install/v3-install.html) + +* Kuboard v3.0.x 计划将 Kuboard 部署的内容全部从 kube-system 名称空间迁移到 kuboard 名称空间,这也使得两个版本能够同时存在于同一个 Kubernetes 集群。建议用户在 Kuboard v3.0 版本正式发布后,将使用 Kuboard v2.0.x 安装的 Kuboard 套件卸载,并在 Kuboard v3.0.x 中重新安装这些套件。 diff --git a/support/change-log/v3.0.x.md b/support/change-log/v3.0.x.md new file mode 100644 index 0000000..b258a7d --- /dev/null +++ b/support/change-log/v3.0.x.md @@ -0,0 +1,53 @@ +--- +vssueId: 72 +description: 本文描述了Kuboard_v3.0.x的版本变更说明 +--- + +# Kuboard v3.0.x + + + + + + + +Kuboard v3.0.x 的更新说明 + + +## v3.0.0-alpha.2 + +**发布日期** + +2020年11月10日 + +**新特性** +* 支持 TLS 、 Lets Encrypts; + +**优化** + +* Web 服务使用标准端口 80 / 443 +* 点击后才弹出集群切换窗口,避免悬停弹出分散用户注意力; +* 优化创建集群时的提示信息; + +**BUG修正** +* 创建用户时,部分特殊电子信箱地址校验不通过; + +* 节点详情页,如果节点的容器组数量太多,不能显示该页面的问题; +* CustomResourceList 页的链接错误; +* User/Group 列表页的链接错误; + + +## v3.0.0-alpha.1 + +**发布日期** + +2020年11月8日 + +**新特性** + +* 主版本升级,调整了 Kuboard 的架构: + * 支持多 Kubernetes 集群管理 + * 内建用户库 + * 优化导航栏及菜单的结构 + * 不再部署在 Kubernetes 集群当中,而是作为一个独立的容器部署在集群之外 + * 使用 golang 重写后端代码,不再使用 openresty lua diff --git a/support/known-issue.md b/support/known-issue.md index 81a0fa4..ece38ae 100644 --- a/support/known-issue.md +++ b/support/known-issue.md @@ -9,6 +9,8 @@ description: 本文描述了 Kuboard 的一些已知问题 Kuboard 自 v1.0.7 开始,使用 [OpenResty](https://hub.docker.com/r/openresty/openresty) 提供的基础镜像,该镜像存在的一个问题是:CPU 必须兼容 SSE4.2。这意味着,一部分 2007 年以前的 CPU 可能无法兼容。请参考 [https://github.com/openresty/docker-openresty/issues/39](https://github.com/openresty/docker-openresty/issues/39) +> Kuboard v3.0.x 不再使用 OpenResty,因此也不存在此问题。 + 出现此问题时,通过 kubectl 命令查看 Kuboard 日志 ``` sh kubectl logs -f -l k8s.eip.work/name=kuboard -n kube-system