Kubernetes (K8S) 是现代化软件开发中常用的容器编排工具之一,用于管理应用程序的自动化部署、扩展和管理。在K8S中,认证和授权是非常重要的安全概念之一。手动构建 token 是一种在 K8S 中生成认证 token,用于鉴权的方法。在本文中,我将教你如何实现 K8S 手动构建 token。

### 步骤概述
下面是手动构建 token 的步骤概述表格:

| 步骤 | 描述 |
| ------ | ------ |
| 1 | 创建 Service Account |
| 2 | 创建 Role |
| 3 | 创建 Role Binding |
| 4 | 获取 Token |

### 具体步骤和代码示例
#### 步骤 1:创建 Service Account
```bash
kubectl create sa -n
```
- ``:你指定的 Service Account 名称
- ``:Service Account 所在的命名空间

#### 步骤 2:创建 Role
```yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace:
name:
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]
```
- ``:Role 所在的命名空间
- ``:你指定的 Role 名称
- `resources`:指定资源,这里以 pods 为例
- `verbs`:指定操作权限,这里包括 get、list 和 watch 操作

#### 步骤 3:创建 Role Binding
```yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name:
namespace:
subjects:
- kind: ServiceAccount
name:
namespace:
roleRef:
kind: Role
name:
apiGroup: rbac.authorization.k8s.io
```
- ``:你指定的 Role Binding 名称
- ``:之前创建的 Service Account 的名称
- ``:Role Binding 所在的命名空间
- ``:之前创建的 Role 的名称

#### 步骤 4:获取 Token
```bash
kubectl get secret $(kubectl get sa -n -o jsonpath='{.secrets[0].name}') -n -o jsonpath='{.data.token}' | base64 -d
```
- 通过上述命令可以获取到 Service Account 关联的 Secret,其中包含了 Service Account 的 Token
- `base64 -d` 用于解码 Token

通过上述步骤,你就成功地手动构建了一个用于认证和鉴权的 Token。记得妥善保存 Token,确保安全性。

希望本文能帮助你理解 K8S 手动构建 token 的过程,并成功实现相关功能。祝你在 K8S 的学习和实践中取得进步!如果有任何疑问,欢迎随时向我提问。