Dashboard Install
Kubernetes Dashboard就是k8s集群的web界面,集合了所有命令行可以操作的所有命令。界面如下所示
环境
192.168.48.101 master01
192.168.48.201 node01
192.168.48.202 node02
dashboard 安装
k8s的dashboard安装可以说是非常简单,参考github的指导既可。项目地址如下
https://github.com/kubernetes/dashboard
官方安装命令
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
但是这么安装存在几个问题:
- 镜像国内无法直接访问,需要设置docker代理,才能下载镜像
- dashboard的默认web证书是自动生成的,由于时间和名称存在问题,导致谷歌和ie浏览器无法打开登录界面,经过测试Firefox可以正常打开
镜像
dashboardv1.10.1镜像下载
链接:https://pan.baidu.com/s/1A4NI1guHwOFQv-n7F6ajYA 提取码:fvne
各节点无脑加载镜像
docker load -i dashboard.tar.gz
创建dashboard
[root@master01 ~]# kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
secret/kubernetes-dashboard-certs created
serviceaccount/kubernetes-dashboard created
role.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
deployment.apps/kubernetes-dashboard created
service/kubernetes-dashboard created
[root@master01 ~]# kubectl get pod -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-fb8b8dccf-jfm2m 1/1 Running 8 6d19h
coredns-fb8b8dccf-r8tqp 1/1 Running 7 6d19h
etcd-master 1/1 Running 5 6d19h
kube-apiserver-master01 1/1 Running 5 6d19h
kube-controller-manager-master01 1/1 Running 4 6d19h
kube-flannel-ds-amd64-26xjf 1/1 Running 7 6d19h
kube-flannel-ds-amd64-82s7n 1/1 Running 3 6d19h
kube-flannel-ds-amd64-sd2j9 1/1 Running 3 6d19h
kube-proxy-792hk 1/1 Running 5 6d19h
kube-proxy-88cgt 1/1 Running 3 6d19h
kube-proxy-frgtq 1/1 Running 2 6d19h
kube-scheduler-master01 1/1 Running 4 6d19h
kubernetes-dashboard-5f7b999d65-rmxhw 1/1 Running 0 92s
[root@master ~]#
kubernetes-dashboard service 在集群内部,无法再外部访问,为了方便访问,得暴露kubernetes-dashboard 443端口给NodePort
[root@master01 ~]# kubectl get svc -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 6d19h
kubernetes-dashboard ClusterIP 10.109.71.206 <none> 443/TCP 2m25s
[root@master01 ~]# kubectl edit svc kubernetes-dashboard -n kube-system
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
kind: Service
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"k8s-app":"kubernetes-dashboard"},"name":"kubernetes-dashboard","namespace":"kube-system"},"spec":{"ports":[{"port":443,"targetPort":8443}],"selector":{"k8s-app":"kubernetes-dashboard"}}}
creationTimestamp: "2019-04-06T14:30:32Z"
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
resourceVersion: "37052"
selfLink: /api/v1/namespaces/kube-system/services/kubernetes-dashboard
uid: 88d3c228-5878-11e9-8c85-000c296cdc6e
spec:
clusterIP: 10.109.71.206
ports:
- port: 443
protocol: TCP
targetPort: 8443
selector:
k8s-app: kubernetes-dashboard
sessionAffinity: None
type: NodePort
status:
loadBalancer: {}
[root@master01 ~]# kubectl get svc -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 6d19h
kubernetes-dashboard NodePort 10.109.71.206 <none> 443:30440/TCP 6m41s
通过谷歌浏览器访问,发现居然无法继续,如下图所示:
通过火狐浏览器可以访问
发现原因是证书日期问题,Chrome拦截了,所以得手动配证书
证书
生成证书通过openssl生成自签名证书即可,这样就有了证书文件dashboard.crt 和 私钥 dashboad.key
[root@master01 ~]# cd /etc/kubernetes/pki/
[root@master01 pki]# openssl genrsa -out dashboard.key 2048
Generating RSA private key, 2048 bit long modulus
...................................+++
....................................................+++
e is 65537 (0x10001)
[root@master01 pki]# openssl req -new -out dashboard.csr -key dashboard.key -subj "/CN=dashboard"
[root@master01 pki]# openssl x509 -req -in dashboard.csr -out dashboard.crt -signkey dashboard.key -CA ca.crt -CAkey ca.key -CAcreateserial -days 365
Signature ok
subject=/CN=dashboard
Getting Private key
Getting CA Private Key
[root@master01 pki]# ls
apiserver.crt apiserver-etcd-client.key apiserver-kubelet-client.crt ca.crt ca.srl dashboard.csr etcd front-proxy-ca.key front-proxy-client.key sa.pub
apiserver-etcd-client.crt apiserver.key apiserver-kubelet-client.key ca.key dashboard.crt dashboard.key front-proxy-ca.crt front-proxy-client.crt sa.key
下载dashboard yaml并修改
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
我们需要重新生成secret,并且将该配置文件中创建secret的配置文件信息去掉,将以下内容 从配置文件中去掉
[root@master01 ~]# vim kubernetes-dashboard.yaml
# ------------------- Dashboard Secret ------------------- #
apiVersion: v1
kind: Secret
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard-certs
namespace: kube-system
type: Opaque
在配置文件中,修改service type为nodeport类型,固定访问端口nodePort:30001
vim kubernetes-dashboard.yaml
# ------------------- Dashboard Service ------------------- #
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
type: NodePort
ports:
- port: 443
targetPort: 8443
nodePort: 30001
selector:
k8s-app: kubernetes-dashboard
生成secret
先删除以前的secret 生成新的secret
[root@master01 ~]# kubectl delete -f kubernetes-dashboard.yaml
serviceaccount "kubernetes-dashboard" deleted
role.rbac.authorization.k8s.io "kubernetes-dashboard-minimal" deleted
rolebinding.rbac.authorization.k8s.io "kubernetes-dashboard-minimal" deleted
deployment.apps "kubernetes-dashboard" deleted
service "kubernetes-dashboard" deleted
[root@master01 ~]# kubectl create secret generic kubernetes-dashboard-certs --from-file=/etc/kubernetes/pki/dashboard.key --from-file=/etc/kubernetes/pki/dashboard.crt -n kube-system
secret/kubernetes-dashboard-certs created
重新apply yaml文件
重新创建kubernetes-dashboard.yaml
[root@master01 ~]# kubectl apply -f kubernetes-dashboard.yaml
serviceaccount/kubernetes-dashboard created
role.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
deployment.apps/kubernetes-dashboard created
service/kubernetes-dashboard created
查看kubernetes-dashboard的服务
[root@master01 ~]# kubectl get svc -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 6d20h
kubernetes-dashboard NodePort 10.109.71.206 <none> 443:30001/TCP 64m
通过谷歌浏览器可以访问,如下图所示:
dashboard 访问
token访问
访问dashboard的是serviceaccount,得创建serviceaccount
[root@master01 ~]# kubectl create serviceaccount dashboard-admin -n kube-system
serviceaccount/dashboard-admin created
[root@master01 ~]# kubectl get serviceaccounts -n kube-system
NAME SECRETS AGE
attachdetach-controller 1 6d20h
bootstrap-signer 1 6d20h
certificate-controller 1 6d20h
clusterrole-aggregation-controller 1 6d20h
coredns 1 6d20h
cronjob-controller 1 6d20h
daemon-set-controller 1 6d20h
dashboard-admin 1 33s
default 1 6d20h
deployment-controller 1 6d20h
disruption-controller 1 6d20h
endpoint-controller 1 6d20h
expand-controller 1 6d20h
flannel 1 6d20h
generic-garbage-collector 1 6d20h
horizontal-pod-autoscaler 1 6d20h
job-controller 1 6d20h
kube-proxy 1 6d20h
kubernetes-dashboard 1 10m
namespace-controller 1 6d20h
node-controller 1 6d20h
persistent-volume-binder 1 6d20h
pod-garbage-collector 1 6d20h
pv-protection-controller 1 6d20h
pvc-protection-controller 1 6d20h
replicaset-controller 1 6d20h
replication-controller 1 6d20h
resourcequota-controller 1 6d20h
service-account-controller 1 6d20h
service-controller 1 6d20h
statefulset-controller 1 6d20h
token-cleaner 1 6d20h
ttl-controller 1 6d20h
clusterrolebinding绑定
[root@master01 ~]# kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
clusterrolebinding.rbac.authorization.k8s.io/dashboard-cluster-admin created
获取token
[root@master01 ~]# kubectl get secrets -n kube-system
NAME TYPE DATA AGE
attachdetach-controller-token-w5tsb kubernetes.io/service-account-token 3 6d20h
bootstrap-signer-token-2gsqj kubernetes.io/service-account-token 3 6d20h
certificate-controller-token-qb8hw kubernetes.io/service-account-token 3 6d20h
clusterrole-aggregation-controller-token-k6czs kubernetes.io/service-account-token 3 6d20h
coredns-token-mfq8b kubernetes.io/service-account-token 3 6d20h
cronjob-controller-token-b5k7j kubernetes.io/service-account-token 3 6d20h
daemon-set-controller-token-qmpqt kubernetes.io/service-account-token 3 6d20h
dashboard-admin-token-zf5kd kubernetes.io/service-account-token 3 5m30s
default-token-sx4mq kubernetes.io/service-account-token 3 6d20h
deployment-controller-token-n4z6v kubernetes.io/service-account-token 3 6d20h
disruption-controller-token-bg4gl kubernetes.io/service-account-token 3 6d20h
endpoint-controller-token-wb9p2 kubernetes.io/service-account-token 3 6d20h
expand-controller-token-l5nz2 kubernetes.io/service-account-token 3 6d20h
flannel-token-kmdc4 kubernetes.io/service-account-token 3 6d20h
generic-garbage-collector-token-vrsdm kubernetes.io/service-account-token 3 6d20h
horizontal-pod-autoscaler-token-82685 kubernetes.io/service-account-token 3 6d20h
job-controller-token-vg4qd kubernetes.io/service-account-token 3 6d20h
kube-proxy-token-lwgch kubernetes.io/service-account-token 3 6d20h
kubernetes-dashboard-certs Opaque 2 19m
kubernetes-dashboard-key-holder Opaque 2 82m
kubernetes-dashboard-token-wsrcl kubernetes.io/service-account-token 3 15m
namespace-controller-token-kjtfb kubernetes.io/service-account-token 3 6d20h
node-controller-token-2vljj kubernetes.io/service-account-token 3 6d20h
persistent-volume-binder-token-gcbz2 kubernetes.io/service-account-token 3 6d20h
pod-garbage-collector-token-vfwll kubernetes.io/service-account-token 3 6d20h
pv-protection-controller-token-86bv7 kubernetes.io/service-account-token 3 6d20h
pvc-protection-controller-token-ls59z kubernetes.io/service-account-token 3 6d20h
replicaset-controller-token-snxzg kubernetes.io/service-account-token 3 6d20h
replication-controller-token-96ff9 kubernetes.io/service-account-token 3 6d20h
resourcequota-controller-token-ht46g kubernetes.io/service-account-token 3 6d20h
service-account-controller-token-lhj4g kubernetes.io/service-account-token 3 6d20h
service-controller-token-vrpt2 kubernetes.io/service-account-token 3 6d20h
statefulset-controller-token-w5dxf kubernetes.io/service-account-token 3 6d20h
token-cleaner-token-99l6t kubernetes.io/service-account-token 3 6d20h
ttl-controller-token-cwwp4 kubernetes.io/service-account-token 3 6d20h
[root@master01 ~]# kubectl describe secrets -n kube-system dashboard-admin-token-zf5kd
Name: dashboard-admin-token-zf5kd
Namespace: kube-system
Labels: <none>
Annotations: kubernetes.io/service-account.name: dashboard-admin
kubernetes.io/service-account.uid: 508072c6-5883-11e9-8c85-000c296cdc6e
Type: kubernetes.io/service-account-token
Data
====
ca.crt: 1025 bytes
namespace: 11 bytes
token: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4temY1a2QiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiNTA4MDcyYzYtNTg4My0xMWU5LThjODUtMDAwYzI5NmNkYzZlIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.YxTu6SH0LswKd0AJMEDXvVsgKWqZSRlAqh_Xhlxt592m2KjfxlNzjHIufa6x44qo7bed9LYsvA03wvD0jIsJcDMadzlnQ_Mw-AUxe8kox6oUHgUbzSAmJg9-WRbhF0eYCq4RA8xB88S4KS2YyW1-XSz4gLf2MEqYZ0zyLqbE_br1Rz5vp9O2oKeVoDzrG18Zp-mdNJrQYWSGvk5ZyUaYT1T53NP3hSFRb2KppCGCP3d9pNZCEQ1x9nUp4nXqBc5wSawCtj83uDzyRtfnJquhqUu-gVsnv2t3WGIQnAwHWom5mW9824moczkISYf9sp8JT-ZSLwnf05s9-1Qv9urAaA
利用token登录
eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4temY1a2QiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiNTA4MDcyYzYtNTg4My0xMWU5LThjODUtMDAwYzI5NmNkYzZlIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.YxTu6SH0LswKd0AJMEDXvVsgKWqZSRlAqh_Xhlxt592m2KjfxlNzjHIufa6x44qo7bed9LYsvA03wvD0jIsJcDMadzlnQ_Mw-AUxe8kox6oUHgUbzSAmJg9-WRbhF0eYCq4RA8xB88S4KS2YyW1-XSz4gLf2MEqYZ0zyLqbE_br1Rz5vp9O2oKeVoDzrG18Zp-mdNJrQYWSGvk5ZyUaYT1T53NP3hSFRb2KppCGCP3d9pNZCEQ1x9nUp4nXqBc5wSawCtj83uDzyRtfnJquhqUu-gVsnv2t3WGIQnAwHWom5mW9824moczkISYf9sp8JT-ZSLwnf05s9-1Qv9urAaA
config访问
复制.kube/config文件 将token那一串添加进去
[root@master01 ~]# cp .kube/config admin.conf
[root@master01 ~]# vim admin.conf
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRFNU1ETXpNREU0TlRZd05sb1hEVEk1TURNeU56RTROVFl3Tmxvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTUdtCkFvU3g5VlNBeThHQnl3dUdjelBOVU8rZEJNRDhHZGkzQVVSdEg3TTd5U3FhVWxGY0Jnanpic004UmJ0QmwvZGYKeUh6a0RENDJKVGJDd0RvZVFuQTFZVGVOUmdUTzE5R0VXcVpZakN0U29pck9RakZEVElXYXg2RVhTeER5ZjB1YwpDTEhzNWtPVzdobm9ramNVREFOZUVaTmFBSUFKMkhxOW90QU9WZUNiaWNFa0h5SUsrMGNqTmMyN3RKcUVUVWhJClRYS0hiQUJWSjB0Y2tXTm53SUkvNUIwODloL0dXbnlTVFIyYXBydSsxaDVUbVRJOWVNZUtRVHpva2psTG1DbWgKU2duaXA3ZFN4Q3g1cVUrNm9nMHY3bXlOc0xWeWFKVlZrR0UxSG4vMVlPdW9rVkYrZnJ3YThuUHhxQ291UVZkWgpiOUo3cU9JZWE1Vi9KY1d4akxrQ0F3RUFBYU1qTUNFd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFLVmZLb0labHdLVFI4MnlIeTBKeDduSHhwa0QKSjhRNHowM1N0Yk9rN2JlMjZCdGRSZTJieTRaOXdoMk8vcXA5T3NKNVpPNzJKbHNIa09lUEQrZDRleStTRHRaKwpFVElxRXd0NEg3Vm1TOCs1c0J1cFpvVlVBdlI5QVI2Z2ZkTXB2OUJLK1RUV2dsaU45dW4yVThZQXpQVCtCejVaCmxsZ3dNWFl5Ymh5ZzBiQjNjckhMcWxaWFh3THg3ajBaQ3JsbUZKSlV2elBhZWVOQzhiRWNJd2t1RXlXc2l4dkYKelRhSzVIbDA3WnNTb0FZbWJHbThheEI2T3B6cUUzYlJaTmdHV0Z6dE1reFlpYy9aNkdJemo0Qm9hNWJhTlJPdApwK1ZhMHVOSlROTjREMjhza0d4MjdkRmVTNXVkdzdPYXUrbEM5Z3g0YmJKUkV6T0RYM00wY2wxcm5YTT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
server: https://192.168.48.200:6443
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: kubernetes-admin
name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
user:
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM4akNDQWRxZ0F3SUJBZ0lJWGdzZkVBUWpUU3d3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB4T1RBek16QXhPRFUyTURaYUZ3MHlNREF6TWpreE9EVTJNRFphTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXBCQlFQYjJKK3BhNCtrT00KNHVtS1J1UjVJekFtWi9qWEk5QWpyR0J1OWMwSXFUQVI5MjlzMFpHUnRoU0ZrNGtXaGZkbHNNOEVFZGtsb3hzdgowL1NxZWIvWVhpMGR3WXBrcElxMDlkVi9zck1aelNBS0cyaXBkMXovN2VjaVEvYUU5MDJDMzBxcnFPTExPejdOCnZiYmN4cmtyWEwvcFJSK0tWZjRYTzBuOXJuaE05ci9qd0JBVUNzSFZmbXY0OTJSdXFqY3JVUHVBUUpRNmxsdHIKMnZ1cURyRWZOeFR3OVcwK0pPVVZ5SVV4TkV6UEx3YndSL1hjTE9IZG9OcmlUcVFnVWRseXg0TFdwYkJzYkZQcgpZU0xpaDQrRExnWndWOTFIUUkySkliNlFZYjgzWW8rMHRsZlFBaWNCc0Y2R0YwVktmNmlLQTFjRmlDTlV5V3NYCjhhVU5rd0lEQVFBQm95Y3dKVEFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFDNVlKQ3FEQXl3TTlOM2xoVkdjdkthMVNkN090eTEzQWtjZApjSDV4TDhWL2R5TGpTd3MrZHd6MDM1d3ZYVXVNMEtIT0hIcVMrMUkzenFpQW5wSWRNcVFjT3QzOEVGRnhqWnZxClNtYzdDczVVY0I1Znhocm14SnZFZGUvdFQzVmx4V2JHUHN0YUk3ZnRYdGFuQVFlZURBVjA3WHlvOHJqSG5VdFEKQ1ZrSEV5MUxIN3I5eGU3MUh2bzJFendHVzU2ZCtsSGlvK0hOdXdzcHlxZzF4NXF1SGhkYWc4VE9NY1RpcHpJawpndXNPTDF6YXh6bjBSalhsQ21ENmQ0cFR3bGtDVU42L3FaUWVHRkpjZFBBTlk0Y3NUQXdQSDJHS1Mrd2xrcGZECmw0NWpuL2IzSDJ6d2FabTFUK2xYNG1nYXZNR0lENjJTWno1WHNXOXprN3htODdrcmJoMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcFFJQkFBS0NBUUVBcEJCUVBiMkorcGE0K2tPTTR1bUtSdVI1SXpBbVovalhJOUFqckdCdTljMElxVEFSCjkyOXMwWkdSdGhTRms0a1doZmRsc004RUVka2xveHN2MC9TcWViL1lYaTBkd1lwa3BJcTA5ZFYvc3JNWnpTQUsKRzJpcGQxei83ZWNpUS9hRTkwMkMzMHFycU9MTE96N052YmJjeHJrclhML3BSUitLVmY0WE8wbjlybmhNOXIvagp3QkFVQ3NIVmZtdjQ5MlJ1cWpjclVQdUFRSlE2bGx0cjJ2dXFEckVmTnhUdzlXMCtKT1VWeUlVeE5FelBMd2J3ClIvWGNMT0hkb05yaVRxUWdVZGx5eDRMV3BiQnNiRlByWVNMaWg0K0RMZ1p3VjkxSFFJMkpJYjZRWWI4M1lvKzAKdGxmUUFpY0JzRjZHRjBWS2Y2aUtBMWNGaUNOVXlXc1g4YVVOa3dJREFRQUJBb0lCQVFDWW5hUkhDcDNqd1hscApOSlZHTDhFMW1Tc21sSS9sZ0JHQmV3ajBQUEI3THJPenpzZW55THNOWjhDSUJDY055eVJza21yQ1FwQ2ltY0R0CkxVa2NmaWhuQVJNZzZBOGFEc2I0V1I5azM2bmViY1MraitOWEE5RkErLzRITEU4dnNZNlhEaitEdjA1WDJFRDkKWjdxemsvdGowTFNKbnV3OEpNN21sMnE4K0dOSGU1dFd5cUo4YVJaaXB6UDB3cXZCU2ZsalpvdDFuNHl2alh4SQptM1d0QjY5bmpvRWVnYXdIN1V6SXZmSGNzUnlRejN6akFKTEdFYzA3a0Q1WnhaRlNGNkZudmovcjNCdFZOL0prCndoSXBXdFl2UytOTG5mMEFNbnZjZFplMlplQmJvWU5jVjZqU0RkeDZ3Mm80dmhWdXJHNzlVZDI2SW5DaUdqMGoKa2t4QXhUbGhBb0dCQU1ReGtjK21jQThwOENpR0YwdHJUM3Z0b2xicjRXbDhEbjE3Wng5R1BoZFVXSDhmOE9WcAo5VU1xVHdqYmNVODRUKzRyRG4yTHJkKy9iR2l5d25TR01vbXFwUXd1S3p2eitPQ1BOUkh2T1daYnF0Y2owUnlkCjhHL3NtQm9UaWFNaWVobURwTXZOUlJvd21xTHRjVWJPcFJKYS83MjBma3I3dk5EVmk4c3FidGdYQW9HQkFOWVQKYVVQYmZ0bTJKZ1Nxa1Q2NDJ0WTZDWFJpTzl1THdjVnBNZUluaWZBZkRVRmFLa1FjRldGVWVKeVByTXVuUDJ1MgpoL2dvZTljM2lPN1pmSERYWjlrMFptZ0FSZHA3bmhXQ3M0NVZCSElpZ3c0UmJQQkwvZ1lsSTlOcW1Xa1JHc0puCmg3UDUvalVlYlg1V3VISWJqVjNIQjhtNHBpQUlUR0gvcW4zVUorZmxBb0dBVzhYVUx3M3IzU3dBNnZQT2Nia0EKdFRlemVIVmVPN21NRGFacjFuVkZGaVNlUU5qd0ZtQTZHZkR3aDNRZXpLL0tzOTN3S1VudFMzeC9lWG9rKzl6SwpSeHRMbVNiL2trdk5YejJkMVlYUms4L05XbFdtdTN3bHZEVXY4UUt5bjF6QlFLNFRxRUdjMFdOcThrdWZjVCs0CmQ1MlpnMk9xcitpUnFoNDZCZzhUU29FQ2dZRUF5YzZRdkVSdUI2UzdvRWgvRmNiRG5aSW1tWTJGYWdrTXlTSEsKd2F5T1QwdW1ma1lXZEJDWll5QnpkdnZHWkZHczZzaXUweFN1OGdyTFRvYTkxYzVxZW9yNFF2Q0c2VmtCaEx1cQpzdkdZZUZQcWdkZVJmOUhUalUxendYakxXQTJrMFVFeDMwczdCaTVDQUFpV1poTnRKOHRabnlNdmtDRGlpTHV3CnFGL1lvclVDZ1lFQWpWQUFGQ0RGWXZVRWxMUEt2U2Y4K1hBdnR6Y3dKUGZoVmE5dmdYcjZtWnlOL0xWS1BBTmQKVDJLVHc2cStNNkF3cDQ2cFA2bkRiSjBEYVRyZUkxUFVvYlhFZFBnMTBlQjIyL0RNdDBaVlI5WnlCcmFVLzBkQgp6dXhuL21FbUk2NU9NL3RBQzlIblNZQUw3b3hUcVY4NldSTTI4VzNTTS82SFozSUZUVGVoa1ZZPQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=
token: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4temY1a2QiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiNTA4MDcyYzYtNTg4My0xMWU5LThjODUtMDAwYzI5NmNkYzZlIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.YxTu6SH0LswKd0AJMEDXvVsgKWqZSRlAqh_Xhlxt592m2KjfxlNzjHIufa6x44qo7bed9LYsvA03wvD0jIsJcDMadzlnQ_Mw-AUxe8kox6oUHgUbzSAmJg9-WRbhF0eYCq4RA8xB88S4KS2YyW1-XSz4gLf2MEqYZ0zyLqbE_br1Rz5vp9O2oKeVoDzrG18Zp-mdNJrQYWSGvk5ZyUaYT1T53NP3hSFRb2KppCGCP3d9pNZCEQ1x9nUp4nXqBc5wSawCtj83uDzyRtfnJquhqUu-gVsnv2t3WGIQnAwHWom5mW9824moczkISYf9sp8JT-ZSLwnf05s9-1Qv9urAaA
利用admin.conf文件登录