Skip to content

Commit 04d8c15

Browse files
committed
base64解码后的token才能用于登陆
1 parent db42078 commit 04d8c15

File tree

2 files changed

+22
-12
lines changed

2 files changed

+22
-12
lines changed

guide/auth-with-kubeconfig-or-token.md

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
## 使用 kubeconfig 或 token 进行用户身份认证
22

3-
在开启了 TLS 的集群中,每当与集群交互的时候少不了的是身份认证,kubernetes 同时支持 kubeconfig(即证书) 和 token 两种认证方式
3+
在开启了 TLS 的集群中,每当与集群交互的时候少不了的是身份认证,使用 kubeconfig(即证书) 和 token 两种认证方式是最简单也最通用的认证方式,在 dashboard 的登录功能就可以使用这两种登录功能
44

55
下文分两块以示例的方式来讲解两种登陆认证方式:
66

@@ -81,7 +81,14 @@ ca.crt: 1310 bytes
8181
也可以使用 jsonpath 的方式直接获取 token 的值,如:
8282

8383
```bash
84-
kubectl -n kube-system get secret admin-token-nwphb -o jsonpath={.data.token}
84+
kubectl -n kube-system get secret admin-token-nwphb -o jsonpath={.data.token}|base64 -d
8585
```
8686

87-
关于 JSONPath 的使用请参考 [JSONPath 手册](https://kubernetes.io/docs/user-guide/jsonpath/)。
87+
**注意**:yaml 输出里的那个 token 值是进行 base64 编码后的结果,一定要将 kubectl 的输出中的 token 值进行 `base64` 解码,在线解码工具 [base64decode](https://www.base64decode.org/),Linux 和 Mac 有自带的 `base64` 命令也可以直接使用,输入 `base64` 是进行编码,Linux 中`base64 -d` 表示解码,Mac 中使用 `base64 -D`。
88+
89+
我们使用了 base64 对其重新解码,因为 secret 都是经过 base64 编码的,如果直接使用 kubectl 中查看到的 `token` 值会认证失败,详见 [secret 配置](../guide/secret-configuration.md)。关于 JSONPath 的使用请参考 [JSONPath 手册](https://kubernetes.io/docs/user-guide/jsonpath/)。
90+
91+
## 参考
92+
93+
- [JSONPath 手册](https://kubernetes.io/docs/user-guide/jsonpath/)
94+
- [Kubernetes 中的认证](https://kubernetes.io/docs/admin/authentication/)

practice/dashboard-upgrade.md

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ kubernetes-dashboard 10.254.177.181 <nodes> 443:32324/TCP 49m
8989

9090
### 生成 token
9191

92-
需要创建一个admin用户并授予admin角色绑定,使用下面的yaml文件创建admin用户并赋予他管理员权限,然后可以通过token登陆dashbaord,该文件见[admin-role.yaml](https://github.com/rootsongjc/kubernetes-handbook/tree/master/manifests/dashboard-1.7.1/admin-role.yaml)
92+
需要创建一个admin用户并授予admin角色绑定,使用下面的yaml文件创建admin用户并赋予他管理员权限,然后可以通过token登陆dashbaord,该文件见[admin-role.yaml](https://github.com/rootsongjc/kubernetes-handbook/tree/master/manifests/dashboard-1.7.1/admin-role.yaml)这种认证方式本质上是通过 Service Account 的身份认证加上 Bearer token 请求 API server 的方式实现,参考 [Kubernetes 中的认证](https://kubernetes.io/docs/admin/authentication/)
9393

9494
```yaml
9595
kind: ClusterRoleBinding
@@ -146,20 +146,23 @@ token: 非常长的字符串
146146
ca.crt: 1310 bytes
147147
```
148148

149-
在dashboard登录页面上使用上面输出中的那个**非常长的字符串**作为token登录,即可以拥有管理员权限操作整个kubernetes集群中的对象。当然您也可以将这串token加到admin用户的`kubeconfig`文件中,继续使用`kubeconfig`登录,两种认证方式任您选择。
149+
在 dashboard 登录页面上使用上面输出中的那个**非常长的字符串进行 `base64` 解码后**作为 token 登录,即可以拥有管理员权限操作整个kubernetes集群中的对象。当然您也可以将这串 token 进行 `base64` 解码后,加到 admin 用户的`kubeconfig`文件中,继续使用`kubeconfig`登录,两种认证方式任您选择。
150+
151+
**注意**:一定要将 kubectl 的输出中的 token 值进行 `base64` 解码,在线解码工具 [base64decode](https://www.base64decode.org/),Linux 和 Mac 有自带的 `base64` 命令也可以直接使用,输入 `base64` 是进行编码,Linux 中`base64 -d` 表示解码,Mac 中使用 `base64 -D`。
150152

151153
也可以使用 jsonpath 的方式直接获取 token 的值,如:
152154

153155
```bash
154-
kubectl -n kube-system get secret admin-token-nwphb -o jsonpath={.data.token}
156+
kubectl -n kube-system get secret admin-token-nwphb -o jsonpath={.data.token}|base64 -d
155157
```
156158

157-
关于 JSONPath 的使用请参考 [JSONPath 手册](https://kubernetes.io/docs/user-guide/jsonpath/)。
159+
注意我们使用了 base64 对其重新解码,因为 secret 都是经过 base64 编码的,如果直接使用 kubectl 中查看到的 `token` 值会认证失败,详见 [secret 配置](../guide/secret-configuration.md)。关于 JSONPath 的使用请参考 [JSONPath 手册](https://kubernetes.io/docs/user-guide/jsonpath/)。
158160

159161
## 参考
160162

161-
[Dashboard log in mechanism #2093](https://github.com/kubernetes/dashboard/issues/2093)
162-
163-
[Accessing Dashboard 1.7.X and above](https://github.com/kubernetes/dashboard/wiki/Accessing-Dashboard---1.7.X-and-above)
164-
165-
[JSONPath 手册](https://kubernetes.io/docs/user-guide/jsonpath/)
163+
- [Dashboard log in mechanism #2093](https://github.com/kubernetes/dashboard/issues/2093)
164+
- [Accessing Dashboard 1.7.X and above](https://github.com/kubernetes/dashboard/wiki/Accessing-Dashboard---1.7.X-and-above)
165+
- [Kubernetes dashboard UX for Role-Based Access Control](https://github.com/kubernetes/dashboard/blob/master/docs/design/access-control.md)
166+
- [How to sign in kubernetes dashboard? - StackOverflow](https://stackoverflow.com/questions/46664104/how-to-sign-in-kubernetes-dashboard)
167+
- [JSONPath 手册](https://kubernetes.io/docs/user-guide/jsonpath/)
168+
- [Kubernetes 中的认证](https://kubernetes.io/docs/admin/authentication/)

0 commit comments

Comments
 (0)