Search code examples
kubernetesconnectionazure-akskubernetes-service

How to use an api that is mapped to a service in Kubernetes


I want to access my backend pods using an internal Kubernetes dns name. Instead of using http://somepodip:8080/get I want to use http://backend:8080/get to use my backend.

I am currently running my backend pods and have hooked them up to a service.

kind: Service
apiVersion: v1
metadata:
  name: backend
spec:
  selector:
    app: myapp-backend
  ports:
  - name: http
    protocol: TCP
    port: 8080
    targetPort: 8080

This does assign my pods to the backend service. But when I try to use a frontend pod with http://backend/get , it does not find the resource.

Am I incorrectly configuring the service?


Solution

  • Your service seems to be ok, the issue could be possibly because your frontend is not server rendered, which means that your browser is trying to lookup for a name backend, in that case you cannot rely on kubernetes service name as your browser does not recognize it as a valid hostname.

    If you want to access externally by instead of ip, you want to use names, check how to setup a ingress entry https://kubernetes.io/docs/concepts/services-networking/ingress/#what-is-ingress