在Kubernetes(简称K8S)集群中,Dashboard是一个基于Web的用户界面,用于可视化集群中的资源和管理操作。要访问Dashboard,我们需要一个证书来进行身份验证和安全的访问。接下来,我将向你展示如何生成和使用证书来启用K8S Dashboard。
整件事情的流程如下:
| 步骤 | 操作 |
| ---- | -------------- |
| 1 | 创建证书签名请求 |
| 2 | 生成证书 |
| 3 | 部署Dashboard |
| 4 | 访问Dashboard |
下面是每个步骤所需的操作和代码示例:
步骤1:创建证书签名请求
首先,我们需要创建一个CSR(Certificate Signing Request)来向CA(Certificate Authority,证书颁发机构)请求证书签名。
```shell
$ openssl genrsa -out dashboard.key 2048
$ openssl req -new -key dashboard.key -out dashboard.csr -subj "/CN=dashboard/O=dashboard"
```
这段代码将生成一个私钥(dashboard.key)和一个CSR(dashboard.csr)文件。CSR中的"/CN=dashboard/O=dashboard"将成为证书的主题。
步骤2:生成证书
接下来,我们需要使用CA来签名生成的CSR,以生成一个有效的证书。我们可以使用自签名CA,也可以使用实际的CA来签名CSR。
```shell
$ openssl x509 -req -in dashboard.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out dashboard.crt -days 365
```
此处的ca.crt和ca.key分别是CA的证书和私钥。生成的证书将命名为dashboard.crt。
步骤3:部署Dashboard
现在,我们需要将生成的证书部署到Kubernetes集群中,以便Dashboard可以使用它来进行安全访问。
首先,将dashboard.crt和dashboard.key文件放在Kubernetes Master节点上的一个目录中,例如/tmp/dashboard.
然后,使用kubectl创建一个Secret来存储证书和私钥。
```shell
$ kubectl create secret generic kubernetes-dashboard-certs --from-file=/tmp/dashboard -n kube-system
```
这里创建了一个名为kubernetes-dashboard-certs的Secret,其中包含了/tmp/dashboard目录下的证书和私钥文件。
步骤4:访问Dashboard
现在,我们已经部署了证书并将其存储在Secret中。我们可以通过以下步骤访问Kubernetes Dashboard:
首先,通过以下命令获取Dashboard的访问地址:
```shell
$ kubectl proxy
```
此时,Dashboard将绑定到本地主机的8001端口。
然后,打开Web浏览器,访问以下地址:
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
点击"Skip"跳过登录页面,你将能够访问和管理Kubernetes集群的资源。
通过执行以上步骤,你已经学会了如何为K8S Dashboard生成和使用证书。有了证书,我们可以通过身份验证来实现安全的访问,并更好地管理集群中的资源。
希望本文能帮助到你!