Kubernetes (K8s) 是一个用于自动化部署、扩展和管理容器化应用程序的开源平台。K8s Dashboard 是一个用于管理 Kubernetes 集群的网页用户界面。在使用 K8s Dashboard 时,有时候需要通过 HTTPS 来确保通信安全。下面我将指导你如何实现“k8s dashboard https”。

整体流程如下:

| 步骤 | 操作 |
|---------|-------|
| 1 | 生成证书 |
| 2 | 部署 HTTPS |
| 3 | 部署 K8s Dashboard |


### 步骤一:生成证书

首先我们需要生成一个自签名的证书,用于 HTTPS 加密通信。

```bash
# 生成私钥
openssl genrsa -out dashboard.key 2048

# 生成证书签名请求
openssl req -new -key dashboard.key -out dashboard.csr -subj "/CN=kubernetes-dashboard"

# 生成证书
openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt
```

### 步骤二:部署 HTTPS

接下来我们需要创建 Kubernetes 的 Secret 对象,将证书和私钥存储在里面。

```bash
# 创建名为 'dashboard-certs' 的 Secret 对象
kubectl create secret generic dashboard-certs --from-file=dashboard.crt --from-file=dashboard.key -n kube-system
```

然后我们需要创建一个 Secret 对象,用于存储用户名和密码。

```bash
# 创建名为 'dashboard-user' 的 Secret 对象
kubectl create secret generic dashboard-user --from-literal=username=admin --from-literal=password=admin -n kube-system
```

### 步骤三:部署 K8s Dashboard

现在我们可以部署 K8s Dashboard,并使用已生成的证书和私钥以及用户名和密码。

```yaml
# dashboard.yaml
apiVersion: v1
kind: Service
metadata:
name: kubernetes-dashboard
namespace: kube-system
spec:
type: NodePort
ports:
- port: 443
targetPort: 8443
nodePort: 30000
selector:
k8s-app: kubernetes-dashboard
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: kubernetes-dashboard
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
k8s-app: kubernetes-dashboard
template:
metadata:
labels:
k8s-app: kubernetes-dashboard
spec:
containers:
- name: kubernetes-dashboard
image: kubernetesui/dashboard:v2.0.0
ports:
- containerPort: 8443
args:
- --auto-generate-certificates
- --namespace=kube-system
- --enable-insecure-login
volumeMounts:
- name: dashboard-certs
mountPath: /certs
readOnly: true
- name: dashboard-user
mountPath: /user
volumes:
- name: dashboard-certs
secret:
secretName: dashboard-certs
- name: dashboard-user
secret:
secretName: dashboard-user
```

```bash
# 部署 K8s Dashboard
kubectl apply -f dashboard.yaml

# 获取 dashboard 访问地址
kubectl get svc kubernetes-dashboard -n kube-system
```

完成以上步骤后,你就成功实现了在 Kubernetes 集群上部署 K8s Dashboard,并使用 HTTPS 进行加密通信。你可以访问提供的地址,在浏览器中输入用户名和密码即可登录并管理 Kubernetes 集群了。希望这篇文章能帮助你理解如何实现“k8s dashboard https”。