使用 python k8 的 api 客户端库获取所有正确的命名空间和入口路由

get all the proper namespaces and ingressroutes with the python k8's api client library

我在下面有以下命令行。它给了我命名空间和入口路由名称(参见下面的示例)

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

例子

NAMESPACE                       NAME                                                           AGE
aberdeentotalyes               aberdeentotalgeyes-yesgepi                                      98d

我正在尝试通过我的 python 代码复制上面的 kubetl 命令行,使用 kubernetes 的 python 客户端,但我错过了关于如何获取入口路由的选项。

#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("%s\t%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

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

问题是进入路由的选项是什么?

我们非常欢迎任何帮助。

干杯

仔细阅读了documentation现有的ingressroutes API,发现none可以使用,由于Ingressroutes不是其原生组件,所以都还处于beta阶段Kubernetes.

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

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

There's no class for ingressroutes. You can use the dynamic client to support arbitrary resource types (see link)

我的解决方案是使用 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")