Kubernetes Services Discovery - Cross Namespace
Asked Answered
M

1

2

I have a kubernetes cluster with serviceA on namespaceA and serviceB on namespaceB.

I want, from serviceA, use kubernetes service discovery to programmatically list serviceB. I am planning to use spring cloud kubernetes ( @EnableDiscoveryClient ).

However, there is a company wide policy to block the use of the configuration below that should have solved the problem: spring.cloud.kubernetes.discovery.all-namespaces=true

Is there any way to circumvent the problem? Maybe assign serviceB to two different namespaces or some other permission/configuration that I am not aware of?

Mansoor answered 3/12, 2019 at 12:44 Comment(5)
You want to access a service in different namespace i.e. your eureka server? If so, you can refer the link: #37221983 service-x.namespace-b.svc.cluster.local:<port of eureka server> - you can try? is what I am guessing.Eroto
Very interesting link, thanks! I am not using eureka server, I am planning to use spring cloud kubernetes implementation of discoveryClient. Do you think that it is possible that the discoveryClient find the service located in a different namespace using the externalName parameter?Mansoor
Sorry for delay in response, I have did not use it that way, so need to implement to check this out. If you are able to resolve, please let me know.Eroto
spring.cloud.kubernetes.discovery.all-namespaces setting is not mentioned in the link you have provided. Could you please elaborate more on what your problem actually is?Goddaughter
@OhHiMark, sure. Here it is: github.com/spring-cloud/…Mansoor
H
1

If you are trying to simply look up a service IP by service name through Kubernetes API than it should not really matter if you're doing it through kubectl or a Java client, the options you pass to the API are the same.

The thing that matters however is whether the service name would be looked up in the same namespace only or in all namespaces. Accessing a service from a different namespace can be done by specifying its name along with the namespace - instead of my-service they would need to write my-service.some-namespace.

Services without selectors are also an option to expose a service from one namespace to another so that the namespace would be specified in Kubernetes objects and not in app code.

Please let me know if that helps.

Histamine answered 5/12, 2019 at 13:7 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.