Get Ingress gateway IP address using Kubernetes Python client

2.6k Views Asked by At

I am using the following kubectl command to get the Ingress host IP address after my Seldon Deployment is avaible.

kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}'

I would like to run the same command from the Kubernetes Python API but cannot find any information in the documentation on how to do so.

Could you please help me out?

Thanks in advance.

2

There are 2 best solutions below

0
On BEST ANSWER

There's a separate client function for each REST operation on each Kubernetes object type. Once you have that object, you can navigate it like any other Python object.

service = kubernetes.client.read_namespaced_service('istio-ingressgateway', 'istio-system')
print(service.status.load_balancer.ingress[0].ip)
# Note the capitalization ^^^^ of load_balancer, not loadBalancer

The service object is a V1Service object. More generally, the API documentation includes every method call and documentation for all of the request and return types.

A Service is a standard Kubernetes object. If you were dealing with some of the Istio-specific objects like VirtualServices, there is a separate API for custom resources.

0
On
import kubernetes

network_api =kubernetes.client.NetworkingV1Api()
service = network_api.read_namespaced_ingress(ingress_name, namespace)
print(service.status.load_balancer.ingress[0].ip)