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

如何通过kubectl程序化创建Rancher API Key

如何通过kubectl程序化创建Rancher API Key

没问题,既然你能访问Rancher所在的K8s管理集群,确实可以直接通过kubectl来程序化创建API Key,不用走浏览器登录那一套。核心思路是Rancher的所有配置(包括API密钥)都以自定义资源(CRD)的形式存储在etcd中,我们直接操作这些资源就行。

具体步骤:

  1. 确认Rancher的API Key CRD存在
    首先先检查集群里有没有Rancher的API Key自定义资源定义,执行以下命令:

    kubectl get crd apiKeys.management.cattle.io
    

    如果返回正常的CRD信息,就说明可以继续操作。

  2. 编写API Key的配置YAML文件
    创建一个名为rancher-api-key.yaml的文件,内容如下(根据你的需求调整字段):

    apiVersion: management.cattle.io/v3
    kind: APIKey
    metadata:
      generateName: api-key-
    spec:
      description: "程序化通过kubectl创建的Rancher API Key"
      expiresAt: "2025-12-31T23:59:59Z" # 可选:设置密钥过期时间,不填则永久有效
      userName: "admin" # 替换为你要绑定的Rancher用户名
    
    • generateName:让K8s自动生成唯一的API Key名称,避免手动命名冲突
    • description:给API Key加个描述,方便后续识别用途
    • expiresAt:建议设置过期时间,提升安全性,格式要符合RFC3339标准
    • userName:必须是Rancher中已经存在的用户,比如默认的admin
  3. 创建API Key资源
    执行kubectl命令应用这个配置文件:

    kubectl apply -f rancher-api-key.yaml
    

    执行成功后,K8s会自动创建API Key资源,同时生成对应的Secret存储密钥内容。

  4. 获取生成的API Key密钥
    首先找到刚创建的API Key对应的Secret名称:

    # 列出所有API Key相关的Secret
    kubectl get secrets -l cattle.io/creator=norman,cattle.io/resource-kind=APIKey
    

    找到最新创建的那个Secret(可以通过创建时间判断),然后执行以下命令提取密钥:

    kubectl get secret <你的Secret名称> -o jsonpath='{.data.value}' | base64 -d
    

    输出的内容就是完整的Rancher API Key,格式通常是token-xxxxxxxxxxxx,可以直接用来调用Rancher的API接口。

注意事项:

  • 确保你操作的是Rancher所在的管理集群,而不是下游的工作负载集群,Rancher的核心CRD都存储在管理集群中
  • API Key的密钥要妥善保存,一旦泄露可能会导致集群权限被滥用
  • 如果需要创建绑定到其他用户的API Key,只需要修改YAML中的userName字段即可

备注:内容来源于stack exchange,提问作者d_inevitable

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 07:40:27