python - 通过 Azure Active Directory (AKS) 对 kubernetes api 进行身份验证
问题描述
我想使用 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”,第 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 if 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(提供者)文件“/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 and server response: {"error":"invalid_grant","error_description":"AADSTS65001: 用户或管理员未同意使用ID 为“Kubernetes AD Client”的应用程序。为此用户和资源发送交互式授权请求。\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://portal.azure.com
- 在
- 转到设置,然后转到所需权限
- 按授予权限按钮
如果您不是租户管理员,则无法给予管理员同意
来自https://github.com/Azure-Samples/active-directory-angularjs-singlepageapp-dotnet-webapi/issues/19
推荐阅读
- laravel - yajra Datatables 过滤并排序不在数据库中的数据
- java - 如何在 2d Arraylist 上使用 TrimToSize 方法?
- xslt - 使用 xls 删除属性值等于 0 的 xml 节点
- mysql - Mysql LEFT JOIN 结合 INNER 和 Group By
- java - 如何使用 javax.xml.bind 将 XML 写入带有 xmlns 字段的 POJO?
- r - split-lapply- 组合一个大数据帧以避免内存问题?
- android - 如何在我的联系人列表中搜索和拨打电话?
- r - 闪亮的仪表板 tabitem 没有显示
- flask - Flask:无法解析包中的端点位置
- javascript - 如何处理在我的 React 原生项目中查看的阿拉伯语和英语数据?