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

时间:2019-10-14 12:45:49

标签: python kubernetes azure-aks

我想使用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列表,但出现以下错误:

  

回溯(最近一次通话最后一次):文件“ test.py”,第4行,在          config.load_kube_config()文件“ /Users//works/test-kube-api-python/env/lib/python2.7/site-packages/kubernetes/config/kube_config.py”,   在load_kube_config中的第661行       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”,   _load_authentication中的第203行       如果self._load_auth_provider_token():文件“ /Users//works/test-kube-api-python/env/lib/python2.7/site-packages/kubernetes/config/kube_config.py”,   _load_auth_provider_token中的第221行       返回self._load_azure_token(提供者)文件“ /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”,   _refresh_azure_token中的第253行       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”,   _acquire_token中的第128行       返回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,无,client_secret)文件   “ /Users//works/test-kube-api-python/env/lib/python2.7/site-packages/adal/token_request.py”,   _get_token_with_refresh_token中的第340行       返回self._oauth_get_token(oauth_parameters)文件“ /Users//works/test-kube-api-python/env/lib/python2.7/site-packages/adal/token_request.py”,   _oauth_get_token中的第112行       返回client.get_token(oauth_parameters)文件“ /Users//works/test-kube-api-python/env/lib/python2.7/site-packages/adal/oauth2_client.py”,   第291行,在get_token中       引发AdalError(return_error_string,error_response)adal.adal_error.AdalError:获取令牌请求返回的HTTP错误:400   和服务器响应:   {“错误”:“ invalid_grant”,“错误描述”:“ AADSTS65001:用户或   管理员不同意使用ID为的应用程序   ''名为'Kubernetes AD客户端   '。发送对此用户的交互式授权请求,然后   资源。\ r \ n跟踪ID:   \ r \ n相关ID:   \ r \ n时间戳:2019年10月14日   12:32:35Z“,”错误代码“:[65001],”时间戳“:” 2019-10-14   12:32:35Z“,” trace_id“:”“,” correlation_id“:”“,” suberror“:” consent_required“}

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

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

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

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

  • 以租户管理员身份登录https://portal.azure.com
  • 中为您的应用打开注册
  • 依次转到“设置”和“所需权限”
  • 按“授予权限”按钮

如果您不是租户管理员,则不能征得管理员同意

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