我有以下kubectl
命令来获取Azure集群的凭据:
kubectl config set-credentials token --token="$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" --auth-provider=azure
但是,这会抛出以下错误:
creating a new azure token source for device code authentication: client-id is empty
在做了一些调查之后,我发现我们需要为client id
,tenant id
和apiserver id
提供额外的信息:
kubectl config
set-credentials "<username>"
--auth-provider=azure
--auth-provider-arg=environment=AzurePublicCloud
--auth-provider-arg=client-id=<kubectl-app-id>
--auth-provider-arg=tenant-id=<tenant-id>
--auth-provider-arg=apiserver-id=<apiserver-app-id>
如何获取client id
、tenant id
和apiserver id
的详细信息?
kubectl config set-credentials
命令顾名思义用于设置凭据。如果您想从集群中获取一些信息,有几种方法可以做到。例如,您可以使用Azure Portal。本文描述了所有内容。例如,要获取租户ID,您需要:
- 登录您的azure帐户。
- 在左侧栏中选择azure active directory
- 单击"属性"。
- 复制目录ID。
获取Client ID:
- 登录您的azure帐户。
- 在左侧栏中选择azure active directory
- 单击企业应用程序。
- 单击"All applications"。
- 选择您创建的应用程序
- 单击"属性"。
- 复制应用程序ID
获取Client Secret:
- 登录您的azure帐户。
- 在左侧栏中选择azure active directory
- 点击App注册。
- 选择您创建的应用程序
- 点击所有设置。
- 点击键
- Type密钥描述,并选择持续时间
- 单击save。
- 复制并存储键值。离开此页后,您将无法检索它。
您也可以根据官方文档使用cli找到这些信息。
您还可以找到租户ID的其他示例(使用Azure门户和cli选项的示例):
az login
az account list
az account tenant list