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

如何使用Golang在Kubernetes集群外从Kubeconfig文件程序化生成Bearer Token

从Kubeconfig生成Kubernetes API Bearer Token方案

你提供的示例Kubeconfig采用的是X509客户端证书认证模式,这种模式下Kubeconfig本身不直接内置Bearer Token,分两种场景处理:

场景1:Kubeconfig自带token字段

如果你的Kubeconfig中users[*].user节点下存在token字段,直接读取该字段的值即可作为Bearer Token使用,无需额外生成。

场景2:X509证书认证模式(你的示例属于该类)

需要用证书身份主动向Kubernetes API申请有效Bearer Token,无需依赖第三方K8s库或kubectl,实现步骤如下:

  • 第一步:解析Kubeconfig提取3个核心参数
    • 集群API地址:对应clusters[*].cluster.server字段,你的示例值为https://192.168.1.18:6443
    • 客户端证书Base64值:对应users[*].user.client-certificate-data字段
    • 客户端私钥Base64值:对应users[*].user.client-key-data字段
  • 第二步:解码证书和私钥
    可直接用原生Base64解码能力处理,shell环境下的解码示例:
    # 解码客户端证书
    echo "你提取的client-certificate-data内容" | base64 -d > client.crt
    # 解码客户端私钥
    echo "你提取的client-key-data内容" | base64 -d > client.key
    
  • 第三步:调用API申请Bearer Token
    用任意支持双向TLS的HTTP客户端即可发起请求,无需K8s专用依赖,curl请求示例如下:
    curl --cert client.crt --key client.key -k -X POST \
      https://192.168.1.18:6443/api/v1/namespaces/default/serviceaccounts/default/token \
      -H "Content-Type: application/json" \
      -d '{"spec":{"expirationSeconds":3600}}'
    
    接口返回结果中status.token字段就是可用的Bearer Token,调用K8s API时携带请求头Authorization: Bearer <获取到的token>即可完成身份认证。

补充说明

如果你只是需要调用K8s API,不需要额外转换为Bearer Token,直接用客户端证书+私钥做双向TLS认证即可,和Bearer Token的认证效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:54:03