【问题标题】:Authentification to kubernetes api via Azure Active Directory (AKS)通过 Azure Active Directory (AKS) 对 kubernetes api 进行身份验证
【发布时间】:2020-02-11 02:24:53
【问题描述】:

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

为此,我尝试使用 kubernetes 给出的示例:

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 列表,但我收到以下错误:

Traceback(最近一次调用最后一次):文件“test.py”,第 4 行,在 config.load_kube_config() 文件“/Users//works/test-kube-api-python/env/lib/python2.7/site-packages/kubernetes/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/kubernetes/config/kube_config.py”, 第 469 行,在 load_and_set self._load_authentication() 文件“/Users//works/test-kube-api-python/env/lib/python2.7/site-packages/kubernetes/config/kube_config.py”, 第 203 行,在 _load_authentication 如果 self._load_auth_provider_token(): 文件 "/Users//works/test-kube-api-python/env/lib/python2.7/site-packages/kubernetes/config/kube_config.py", 第 221 行,在 _load_auth_provider_token 中 返回 self._load_azure_token(provider) 文件“/Users//works/test-kube-api-python/env/lib/python2.7/site-packages/kubernetes/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/kubernetes/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", 第 236 行,在 acquire_token_with_refresh_token 中 返回 self._acquire_token(token_func) 文件“/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 返回 self._get_token_with_refresh_token(refresh_token, None, client_secret) 文件 "/Users//works/test-kube-api-python/env/lib/python2.7/site-packages/adal/token_request.py", 第 340 行,在 _get_token_with_refresh_token 返回 self._oauth_get_token(oauth_parameters) 文件“/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”, 第 291 行,在 get_token 中 raise AdalError(return_error_string, error_response) adal.adal_error.AdalError: Get Token request returned http error: 400 和服务器响应: {"error":"invalid_grant","error_description":"AADSTS65001: 用户或 管理员未同意使用带有 ID 的应用程序 '' 命名为 'Kubernetes AD 客户端 '。为该用户发送交互式授权请求,并 资源。\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 错误。

感谢您的帮助

【问题讨论】:

    标签: python kubernetes azure-aks


    【解决方案1】:
    • 以租户管理员身份登录https://portal.azure.com
    • 中为您的应用打开注册
    • 转到设置,然后转到所需权限
    • 按授予权限按钮

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

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

    【讨论】:

      猜你喜欢
      • 2017-04-06
      • 1970-01-01
      • 1970-01-01
      • 2017-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多