Files
kuboard-press/install/v3/tls.md
2021-06-05 22:48:50 +08:00

87 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
lessAds: false
description: 为 Kuboard v3 配置 TLS 证书
meta:
- name: keywords
content: Kubernetes Dashboard安装,Kuboard安装,K8S Dashboard安装
---
# SSL 证书
<AdSenseTitle/>
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}
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 \
-e KUBOARD_ENDPOINT="https://kuboard.my-company.com" \
-e KUBOARD_AGENT_SERVER_UDP_PORT="10081" \
-e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \
-v /root/kuboard-data:/data \
eipwork/kuboard:v3
```
其中:
* 第 3 - 4 行,将证书的 crt 文件和 key 文件从宿主机映射到 Kuboard 容器的某一个路径;
* 第 5 - 6 行,通过环境变量指定 Kuboard 使用该证书;
* 其他参数请参考 [安装 Kuboard v3](./install-built-in.html)
## Lets Encrypt
Lets Encrypt 是一个开源免费的证书颁发机构,如果您直接在公网上访问 Kuboard建议使用 Lets Encrypt 配置 SSL 证书。
启动命令如下所示:
```sh {4,7,8}
sudo docker run -d \
--restart=unless-stopped \
-p 80:80/tcp \
-p 443:443/tcp \
-p 10081:10081/tcp \
-p 10081:10081/udp \
-e KUBOARD_TLS_AUTOCERT=true \
-e KUBOARD_TLS_DOMAIN=kuboard.my-company.com \
-e KUBOARD_ENDPOINT="https://kuboard.my-company.com" \
-e KUBOARD_AGENT_SERVER_UDP_PORT="10081" \
-e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \
-v /root/kuboard-data:/data \
eipwork/kuboard:v3
```
其中:
* 第 4 行将 443 端口映射到宿主机的 443 端口。
* 第 7 行激活 Kuboard 中的 Lets Encrypt 客户端;
* 第 8 行指定 Lets Encrypt 颁发证书时对应的域名;
> 使用 Lets Encrypt 时,请将 `kuboard.my-company.com` 域名指向您的 Kuboard 所在宿主机的公网 IP并且确保 80, 443 端口开放。Kuboard 启动后,在您第一次访问 `https://kuboard.my-company.com` 时Lets Encrypt 将自动申请证书(浏览器上显示第一次访问将失败)。等候 1-5 分钟时间,再次访问 `https://kuboard.my-company.com` 时,您将能够成功访问,证书也已经颁发并且自动配置好;通常免费证书有效期是一年时间,证书到期前一个月,系统会自动为您更新证书,无需您额外做任何操作。