-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathk8s_api_discovery.py
64 lines (53 loc) · 2.29 KB
/
k8s_api_discovery.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
'''
Supported APIs (* is preferred version):
core v1
apiregistration.k8s.io *v1,v1beta1
extensions v1beta1
apps v1
events.k8s.io v1beta1
authentication.k8s.io *v1,v1beta1
authorization.k8s.io *v1,v1beta1
autoscaling *v1,v2beta1,v2beta2
batch *v1,v1beta1
certificates.k8s.io v1beta1
networking.k8s.io *v1,v1beta1
policy v1beta1
rbac.authorization.k8s.io *v1,v1beta1
storage.k8s.io *v1,v1beta1
admissionregistration.k8s.io *v1,v1beta1
apiextensions.k8s.io *v1,v1beta1
scheduling.k8s.io *v1,v1beta1
coordination.k8s.io *v1,v1beta1
node.k8s.io v1beta1
discovery.k8s.io v1beta1
crd.projectcalico.org v1
monitoring.coreos.com v1
authentication.istio.io v1alpha1
rbac.istio.io v1alpha1
config.istio.io v1alpha2
networking.istio.io v1alpha3
security.istio.io v1beta1
cluster.cattle.io v3
metrics.k8s.io v1beta1
'''
from kubernetes import client, config
def main():
# Configs can be set in Configuration class directly or using helper
# utility. If no argument provided, the config will be loaded from
# default location.
config.load_kube_config()
print("Supported APIs (* is preferred version):")
print("%-40s %s" %
("core", ",".join(client.CoreApi().get_api_versions().versions)))
for api in client.ApisApi().get_api_versions().groups:
versions = []
for v in api.versions:
name = ""
if v.version == api.preferred_version.version and len(
api.versions) > 1:
name += "*"
name += v.version
versions.append(name)
print("%-40s %s" % (api.name, ",".join(versions)))
if __name__ == '__main__':
main()