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

如何将kubectl create token映射为可调用API及用.NET SDK实现?

对应K8s API说明

kubectl token相关操作(如创建临时ServiceAccount令牌、获取令牌)对应Kubernetes的ServiceAccountToken API,核心端点如下:

  • 创建临时令牌:POST /api/v1/namespaces/{namespace}/serviceaccounts/{serviceaccount-name}/token
  • 获取已绑定ServiceAccount的令牌(存储在Secret中):GET /api/v1/namespaces/{namespace}/secrets/{secret-name}
使用.NET SDK调用示例

1. 安装依赖

先安装Kubernetes C#客户端NuGet包:

dotnet add package KubernetesClient

2. 创建临时ServiceAccount令牌

以下代码生成指定ServiceAccount的临时令牌:

using k8s;
using k8s.Models;

// 加载K8s配置(默认读取kubeconfig或集群内服务账号配置)
var config = KubernetesClientConfiguration.BuildDefaultConfig();
using var client = new Kubernetes(config);

// 构建令牌请求参数
var tokenRequest = new V1TokenRequest
{
    Spec = new V1TokenRequestSpec
    {
        ExpirationSeconds = 3600, // 设置令牌有效期为1小时
        Audiences = new List<string> { "kubernetes.default.svc" } // 指定令牌受众
    }
};

// 发起创建请求,替换命名空间和ServiceAccount名称
var tokenResponse = await client.CreateNamespacedServiceAccountTokenAsync(
    tokenRequest,
    namespaceParameter: "default",
    name: "target-serviceaccount");

// 提取生成的令牌
var generatedToken = tokenResponse.Status.Token;
Console.WriteLine($"生成的临时令牌:{generatedToken}");

3. 获取已存在的ServiceAccount令牌

如果令牌已存储在Secret中,可通过以下代码获取:

using k8s;
using System.Text;

var config = KubernetesClientConfiguration.BuildDefaultConfig();
using var client = new Kubernetes(config);

// 读取指定Secret,替换命名空间和Secret名称
var secret = await client.ReadNamespacedSecretAsync(
    name: "target-serviceaccount-token-xxxxx",
    namespaceParameter: "default");

// 解码Secret中的令牌数据(base64编码)
var tokenBytes = Convert.FromBase64String(secret.Data["token"]);
var existingToken = Encoding.UTF8.GetString(tokenBytes);
Console.WriteLine($"已存在的令牌:{existingToken}");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:01:10