使用 Python K8 的 API 客户端库获取所有正确的命名空间和入口路由



我有下面的命令行。它给了我命名空间和入口路由的名字(见下面的例子)

kubectl --context mlf-eks-dev get --all-namespaces ingressroutes

NAMESPACE                       NAME                                                           AGE
aberdeentotalyes               aberdeentotalgeyes-yesgepi                                      98d

我试图通过我的python代码复制上面的kubetl命令行,使用kubernetes的python客户端,但我错过了如何获取ingressroutes的选项。

#My python code
from kubernetes import client, config
# Configs can be set in Configuration class directly or using helper utility
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("%st%s" % (i.metadata.namespace, i.metadata.name))

结果如下

wwwpaulolo   ci-job-backup-2kt6f
wwwpaulolo   wwwpaulolo-maowordpress-7dddccf44b-ftpbq
wwwvhugo        ci-job-backup-dz5hs
wwwvhugo        wwwvhua-maowordpress-5f7bdfdccd-v7kcx

我有名称空间,但没有入口路由,因为我不知道如何得到它。

问题是有ingress路由的选项是什么,请问?

欢迎任何帮助。

欢呼

仔细阅读了现有的ingressroutes api的文档后,我发现没有一个可以使用,它们都还在测试阶段,因为ingressroutes不是Kubernetes的原生组件。

我还在Slack的Kubernetes客户端频道上问过。

Alan C在Kubernetes的slack上给了我这个答案:

没有ingressroutes类。您可以使用动态客户端来支持任意资源类型(见链接)

我的解决方案是使用python库subprocess来运行kubectl命令行。

您是否尝试过CustomObjectsApi?

from kubernetes import client, config
config.load_kube_config()
api = client.CustomObjectsApi()
dir(api) # check for list_cluster_custom_object 
#example below api will list all issuers in the cluster. 
#issuer is custom resource of cert-manager.io
api.list_cluster_custom_object(group="cert-manager.io",
version="v1",plural="issuers")

最新更新