You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写可复用Bash脚本生成指定ServiceAccount的Token

适配旧版kubectl的服务账户Token生成脚本

针对你因为minikube版本限制无法使用kubectl create token的场景,这里把只支持default账户的命令改写成可指定任意服务账户的可复用脚本,满足my_script another_account的调用需求:

脚本代码

#!/bin/bash

# 校验输入参数
if [ $# -lt 1 ]; then
    echo "用法: $0 <服务账户名> [命名空间]"
    echo "示例: $0 another_account"
    echo "示例: $0 another_account my-namespace"
    exit 1
fi

# 接收参数,命名空间默认取default
SA_NAME=$1
NAMESPACE=${2:-default}

# 查询并解码目标服务账户的token
kubectl get secrets -n "$NAMESPACE" -o jsonpath="{.items[?(@.metadata.annotations['kubernetes\.io/service-account\.name']=='$SA_NAME')].data.token}" | base64 --decode

# 追加换行,方便复制
echo

使用步骤

  1. 将上述代码保存为generate-sa-token.sh文件
  2. 给脚本添加执行权限:
    chmod +x generate-sa-token.sh
    
  3. 调用脚本:
    • 生成default命名空间下another_account的token:
      ./generate-sa-token.sh another_account
      
    • 生成指定命名空间(比如my-ns)下another_account的token:
      ./generate-sa-token.sh another_account my-ns
      

补充说明

  • 脚本会自动匹配目标服务账户关联的第一个Secret(通常是最新创建的)并输出解码后的token
  • 如果目标服务账户还没有关联的Secret,需要先手动创建:
    kubectl create secret generic "${SA_NAME}-token" \
      -n "$NAMESPACE" \
      --from-literal=token=$(openssl rand -hex 32) \
      --annotation kubernetes.io/service-account.name="$SA_NAME"
    
  • 确保当前kubectl上下文有访问目标命名空间Secret资源的权限

内容的提问来源于stack exchange,提问作者CaTx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 13:15:55