使用Python客户端调用任意k8s API

使用Python客户端调用任意k8s API,python,authentication,kubernetes,openshift,Python,Authentication,Kubernetes,Openshift,我想调用openshift机器api(/api/machine.openshift.io/v1beta1/machines)。有没有办法使用kubernetesPython模块来实现这一点?我可以创建如下api对象: >>> from kubernetes import client, config >>> config.load_incluster_config() >>> api = client.CoreV1API() 当然,这是一个

我想调用openshift机器api(
/api/machine.openshift.io/v1beta1/machines
)。有没有办法使用
kubernetes
Python模块来实现这一点?我可以创建如下api对象:

>>> from kubernetes import client, config
>>> config.load_incluster_config()
>>> api = client.CoreV1API()
当然,这是一个核心API客户机,它不包括对
机器
API的本机支持。但是对象拥有所有端点和身份验证信息。有一个可能看起来像
api.api\u client.call\u api
方法,但它似乎没有利用嵌入在api\u client对象中的身份验证信息:

>>> api.api_client.call_api('/apis/machine.openshift.io/v1beta1/machines', 'GET')
[...]
kubernetes.client.rest.ApiException: (403)
Reason: Forbidden
我可以显式地传递身份验证信息,但它似乎不会返回任何内容:

>>> >>> api.api_client.call_api('/apis/machine.openshift.io/v1beta1/machines', 'GET', auth_settings=api.api_client.configuration.auth_settings())
(None, 200, HTTPHeaderDict({'Audit-Id': '6f6965b5-1ad7-4c5e-ab61-343e38718ff8', 'Cache-Control': 'no-cache, private', 'Content-Type': 'application/json', 'X-Kubernetes-Pf-Flowschema-Uid': '9
5848e47-b51c-46eb-aa4f-e25130d61e09', 'X-Kubernetes-Pf-Prioritylevel-Uid': '39391d77-7b32-4aa2-93c3-9915a302d361', 'Date': 'Fri, 04 Sep 2020 19:43:59 GMT', 'Transfer-Encoding': 'chunked'}))
我当然可以使用
请求

>>> requests.get(f'{api.api_client.configuration.host}/apis/machine.openshift.io/v1beta1/machines', verify=False, headers=api.api_client.configuration.api_key)
<Response [200]>
>>requests.get(f'{api.api_client.configuration.host}/api/machine.openshift.io/v1beta1/machines',verify=False,headers=api.api_client.configuration.api_key)
这很好,但闻起来好像我走错了路。使用Python
kubernetes
模块发出任意API请求的正确方法是什么?

引用您可以使用
API\u客户端。如下所示调用\u API
通过传递有效的
BearerToken
调用任意API,该令牌可以是服务帐户令牌

api_client.call_api('/apis/machine.openshift.io/v1beta1/machines', 'GET', auth_settings = ['BearerToken'], response_type='json', _preload_content=False)

谢谢你的指点。问题实际上是调用任意API,包括那些不在
CoreV1API
中的API。我会用另一个例子来更新它。哦,太完美了!我一直在阅读同一个github问题,但我错过了一些细节。谢谢