繁体   English   中英

通过 Azure Active Directory (AKS) 对 kube.netes api 进行身份验证

[英]Authentification to kubernetes api via Azure Active Directory (AKS)

我想使用 python kube.netes-client连接到我的 AKS 集群 api。

为此,我尝试使用 kube.netes 提供的示例:

config.load_kube_config()

v1 = client.CoreV1Api()
print("Listing pods with their IPs:")
ret = v1.list_pod_for_all_namespaces(watch=False)
for i in ret.items:
    print("%s\t%s\t%s" % (i.status.pod_ip, i.metadata.namespace, i.metadata.name))

它应该加载我的本地 kubeconfig 并获取一个 pod 列表,但我收到以下错误:

回溯(最近调用最后):文件“test.py”,第 4 行,在 config.load_kube_config() 文件“/Users//works/test-kube-api-python/env/lib/python2.7/site- packages/kube.netes/config/kube_config.py”,第661行,在load_kube_config loader.load_and_set(config)文件“/Users//works/test-kube-api-python/env/lib/python2.7/site- packages/kube.netes/config/kube_config.py”,第 469 行,在 load_and_set self._load_authentication() 文件“/Users//works/test-kube-api-python/env/lib/python2.7/site-packages /kube.netes/config/kube_config.py", line 203, in _load_authentication if self._load_auth_provider_token(): File "/Users//works/test-kube-api-python/env/lib/python2.7/site- packages/kube.netes/config/kube_config.py”,第 221 行,在 _load_auth_provider_token return self._load_azure_token(provider) 文件“/Users//works/test-kube-api-python/env/lib/python2.7/site -packages/kube.netes/config/kube_config.py”,第 233 行,在 _load_azure_token self._refresh_azure_token(provider['config']) 文件“/Users//works/test-kube-api -python/env/lib/python2.7/site-packages/kube.netes/config/kube_config.py”,第253行,在_refresh_azure_token refresh_token, client_id, '00000002-0000-0000-c000-000000000000') 文件”/ Users//works/test-kube-api-python/env/lib/python2.7/site-packages/adal/authentication_context.py", line 236, in acquire_token_with_refresh_token return self._acquire_token(token_func) File "/Users// works/test-kube-api-python/env/lib/python2.7/site-packages/adal/authentication_context.py”,第 128 行,在 _acquire_token 返回 token_func(self) 文件“/Users//works/test-kube -api-python/env/lib/python2.7/site-packages/adal/authentication_context.py”,第 234 行,在 token_func 返回 token_request.get_token_with_refresh_token(refresh_token, client_secret) 文件“/Users//works/test-kube- api-python/env/lib/python2.7/site-packages/adal/token_request.py”,第 343 行,在 get_token_with_refresh_token return self._get_token_with_refresh_token(refresh_token, None, client_secret) 文件“/Users//works/test-kube -api-python/环境/库/ python2.7/site-packages/adal/token_request.py", line 340, in _get_token_with_refresh_token return self._oauth_get_token(oauth_parameters) File "/Users//works/test-kube-api-python/env/lib/python2.7 /site-packages/adal/token_request.py”,第 112 行,在 _oauth_get_token 返回 client.get_token(oauth_parameters) 文件“/Users//works/test-kube-api-python/env/lib/python2.7/site- packages/adal/oauth2_client.py", line 291, in get_token raise AdalError(return_error_string, error_response) adal.adal_error.AdalError:获取令牌请求返回 http 错误:400 和服务器响应:{"error":"invalid_grant","error_description “:”AADSTS65001:用户或管理员未同意使用名为“Kube.netes AD Client”的 ID 为“”的应用程序。 为此用户和资源发送交互式授权请求。\r\n跟踪 ID:\r\n相关 ID:\r\n时间戳:2019-10-14 12:32:35Z","error_codes":[65001],"timestamp ":"2019-10-14 12:32:35Z","trace_id":"","correlation_id":"","suberror":"consent_required"}

我真的不明白为什么它不起作用。

当我使用 kubectl 时,一切正常。

我阅读了一些文档,但我不确定是否理解 adal 错误。

谢谢你的帮助

如果您不是租户管理员,则无法给予管理员同意

来自https://github.com/Azure-Samples/active-directory-angularjs-singlepageapp-dotnet-webapi/issues/19

这是一篇很好的文章,您可以在其中找到用于对 AKS 进行身份验证的代码段:

from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.containerservice import ContainerServiceClient
from azure.mgmt.containerservice.models import (ManagedClusterAgentPoolProfile,
                                                ManagedCluster)

credential = AzureCliCredential()
subscription_id = "XXXXX"
resource_group= 'MY-RG'
resouce_client=ResourceManagementClient(credential,subscription_id)
container_client=ContainerServiceClient(credential,subscription_id)
resouce_list=resouce_client.resources.list_by_resource_group(resource_group)

注意:您需要安装相应的 Az Python SKD 库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM