k8s 通过 token 创建 kubeconfig 文件
本篇记录如何通过服务账号的 token 来创建 kubeconfig 文件
1. kubeconfig 文件模板
yaml
apiVersion: v1
kind: Config
clusters:
- name: default-cluster
cluster:
certificate-authority-data: {ca}
server: {server}
contexts:
- name: default-context
context:
cluster: default-cluster
namespace: default
user: default-user
current-context: default-context
users:
- name: default-user
user:
token: {token}
server
集群的访问地址token
服务账号的 tokenca
证书
2. 获取证书和 token
- 通过下面命令获取账号名为 apiadmin 的 secret 信息
bash
kubectl get secret/apiadmin -n kube-system -o json
输出如下:
json
{
"apiVersion": "v1",
"data": {
"ca.crt": "LS0tLS1CRUdJTiBDRVJUSUZtCg==",
"namespace": "a3ViN0ZW0=",
"token": "ZXlKaGJHY2lPaUFia0E="
},
"kind": "Secret",
"metadata": {
"annotations": {},
"creationTimestamp": "2023-12-05T07:44:07Z",
"labels": {
"kubernetes.io/legacy-token-last-used": "2025-02-28"
},
"name": "apiadmin",
"namespace": "kube-system",
"resourceVersion": "120014737",
"uid": "ee00cf04-4c-486-9cf8-711cc3a"
},
"type": "kubernetes.io/service-account-token"
}
- 证书:
data['ca.crt']
直接复制使用 - token:
data['token']
此值为 base64 编码格式,需要进行解码
- token 解码
bash
token="ZXlKaGJHY2lPaUFia0E="
echo $token | base64 --decode
3. 生成 kubeconfig 文件
- 将模板保存为 kubeconfig 文件,并先配置 server 集群地址
- 根据第2步获取 ca 和 token 的值,配置模板中的相对应的变量
4. 验证使用
以 kubeconfig 文件保存为 .kube/kubeconfig
为例:
bash
kubectl --kubeconfig=.kube/kubeconfig get namespace
能正常输出结果就验证通过