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

如何通过Azure SDK for Go获取Azure AKS的kubectl配置文件

使用Azure SDK for Go获取AKS管理员kubeconfig

要实现az aks get credentials --resource-group "rg" --name "k8s-name" --admin的功能,你需要用到Azure SDK for Go中的armcontainerservice包,具体步骤如下:

1. 依赖准备

确保已安装所需SDK包:

go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
go get github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice

2. 完整代码示例

package main

import (
	"context"
	"fmt"
	"os"

	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice"
)

func main() {
	// 配置Azure认证参数(对应az login的参数)
	tenantID := "你的租户ID"
	clientID := "你的客户端ID"
	clientSecret := "你的客户端密钥" // 若用用户名密码登录,替换为UsernamePasswordCredential
	resourceGroup := "rg"
	aksClusterName := "k8s-name"
	subscriptionID := "你的订阅ID"

	// 创建认证凭据(这里用客户端密钥示例,可替换为用户名密码认证)
	cred, err := azidentity.NewClientSecretCredential(tenantID, clientID, clientSecret, nil)
	if err != nil {
		fmt.Printf("创建凭据失败: %v\n", err)
		return
	}

	// 创建AKS服务客户端
	client, err := armcontainerservice.NewContainerServiceClient(subscriptionID, cred, nil)
	if err != nil {
		fmt.Printf("创建AKS客户端失败: %v\n", err)
		return
	}

	// 获取管理员kubeconfig(对应命令中的--admin参数)
	resp, err := client.GetAdminCredentials(context.TODO(), resourceGroup, aksClusterName, nil)
	if err != nil {
		fmt.Printf("获取凭据失败: %v\n", err)
		return
	}

	// 提取kubeconfig内容
	kubeConfig := *resp.Kubeconfig
	if kubeConfig == "" {
		fmt.Println("未获取到有效kubeconfig内容")
		return
	}

	// 将kubeconfig保存到本地文件(示例路径,可替换为~/.kube/config)
	err = os.WriteFile("/path/to/your/kubeconfig", []byte(kubeConfig), 0600)
	if err != nil {
		fmt.Printf("保存kubeconfig失败: %v\n", err)
		return
	}

	fmt.Println("管理员kubeconfig已成功保存")
}

关键说明

  • GetAdminCredentials方法直接对应命令中的--admin参数,若需获取普通用户kubeconfig,改用GetUserCredentials方法即可。
  • 认证部分可根据实际场景替换:比如用azidentity.NewUsernamePasswordCredential实现用户名密码登录,完全匹配你之前的az login -u "id" -p "password" -t "tenant"操作。
  • 保存kubeconfig时建议设置权限为0600,避免其他用户读取敏感内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 17:22:14