I have a question about following architecture, I could not find a clear cut answer in the Kubernetes documentation may be you can help me.
I have a service called 'OrchestrationService' this service is dependant to 3 other services 'ServiceA', 'ServiceB', 'ServiceC' to be able to do its job.
All these services have their Docker Images and deployed to Kubernetes.
Now, the 'OrchestrationService' will be the only one that is going to have a contact with outside world so it would definitely have an external endpoint, my question is does 'ServiceA', 'ServiceB', 'ServiceC' would need one or Kubernetes would make those services available for 'OrchestrationService' via KubeProxy/LoadBalancer?
Thx for answers
Not as external services like loadbalancer but your services A/B/C need to publish themselves as services inside cluster so that other services like OrchestrationService can use them.
No you dont need external end points for ServiceA
,ServiceB
and ServiceC
.
If these pods are running successfully depending upon your labels you can access this in OrchestrationService
you can refer those by saying http://servicea/context_path
servicea
in the url is the label in the defined service for ServiceA
No, you only expose OrchestrationService to public and other service A/B/C need to be cluster services. You create selector
services for A/B/C so OrchestrationService can connect to A/B/C services. OrchestrationService can be defined as NodePort
with fixed port or you can use ingress to route traffic to OrchestrationService.