配置文件
把配置文件下载到本地,方便自定义
当前使用的版本是v2.2.0
的
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.2.0/aio/deploy/recommended.yaml
使用默认的配置就可以部署好,但是在使用过程中,会出现https证书、账号权限等问题,所以建议自己修改后再部署
HTTPS证书
生成证书
参考链接:https://kubernetes.io/docs/tasks/administer-cluster/certificates/
提供了3种方式:easyrsa 、openssl 、cfssl ,这里使用 openssl 演示
在文档中是使用CA签发终端证书的方式,但是在部署Dashboard时,由于健康检查时证书无法信任,所以这里用最简单的方式配置
执行文档中的3、4、5步骤,然后通过以下方式生成Dashboard的证书
openssl x509 -req -in server.csr -signkey server.key -out server.crt -days 3650
使用到的是 server.crt
和 server.key
配置证书到Dashboard
在默认的Dashboard部署文件中,你也许能发现名为kubernetes-dashboard-certs
的Secret
的数据是空,这也是默认部署下,Chrome访问证书的原因
把之前得到的 server.crt
和 server.key
文件内容,经过base64后,放到 kubernetes-dashboard-certs
里,就可以使用了
apiVersion: v1
kind: Secret
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard-certs
namespace: kubernetes-dashboard
type: Opaque
data:
server.crt: LS0tLS1CRUdJTiBDRxxxxx
server.key: LS0tLS1CRUdJTiBSxxxxxx
注意,默认的挂在的文件名称是 dashboard.crt
和 dashboard.key
,由于这里我配置的是 server.xxx
,所以,需要在名为 kubernetes-dashboard
的 deployment
中声明一下
kind: Deployment
apiVersion: apps/v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
k8s-app: kubernetes-dashboard
template:
metadata:
labels:
k8s-app: kubernetes-dashboard
spec:
containers:
- name: kubernetes-dashboard
image: kubernetesui/dashboard:v2.2.0
imagePullPolicy: Always
ports:
- containerPort: 8443
protocol: TCP
args:
# - --auto-generate-certificates
- --namespace=kubernetes-dashboard
- --tls-key-file=server.key
- --tls-cert-file=server.crt
- --token-ttl=43200
......
token-ttl 是声明token过期时间的,默认的时间太短,这里可以设置长一些
访问方式
在文档中提到使用proxy的方式访问,但不是很方便,可以通过nodePort的方式访问
https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/#command-line-proxy
修改名为 kubernetes-dashboard
的 Service
,调整 ports
配置
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
type: NodePort
ports:
- port: 443
targetPort: 8443
nodePort: 30001
selector:
k8s-app: kubernetes-dashboard
这样部署好后,就可以直接使用 https://localhost:30001
访问Dashboard了
部署
kubectl apply -f recommended.yaml
感谢大家的阅读, 如有疑问可以加我微信
评论已关闭