Kubernetes Deploy Frontend and Backend
Kubernetes Deploy Frontend and Backend
At this point, you have a backend Deployment running three replicas of your hello
application, and you have a Service that can route traffic to them. However, this service is
neither available nor resolvable outside the cluster
Now that you have your backend running, you can create a frontend that is accessible
outside the cluster, and connects to the backend by proxying requests to it.
The frontend sends requests to the backend worker Pods by using the DNS name given to
the backend Service. The DNS name is hello, which is the value of the name field in the
examples/service/access/backend-service.yaml configuration file.
The Pods in the frontend Deployment run a nginx image that is configured to proxy requests
to the hello backend Service. Here is the nginx configuration file:
# The identifier Backend is internal to nginx, and used to
name this specific upstream
upstream Backend {
# hello is the internal DNS name used by the backend
Service inside Kubernetes
server hello;
}
server {
listen 80;
location / {
# The following statement will proxy traffic to the
upstream named Backend
proxy_pass http://Backend;
}
},
Similar to the backend, the frontend has a Deployment and a Service. An important
difference to notice between the backend and frontend services, is that the configuration for
the frontend Service has type: LoadBalancer, which means that the Service uses a load
balancer provisioned by your cloud provider and will be accessible from outside the cluster.
kubectl apply -f
https://k8s.io/examples/service/access/frontend-
deployment.yaml
kubectl apply -f
https://k8s.io/examples/service/access/frontend-service.yaml
deployment.apps/frontend created
service/frontend created
Interact with the frontend Service
Once you've created a Service of type LoadBalancer, you can use this command to find the
external IP:
This displays the configuration for the frontend Service and watches for changes. Initially,
the external IP is listed as <pending>:
That IP can now be used to interact with the frontend service from outside the cluster.
The frontend and backend are now connected. You can hit the endpoint by using the curl
command on the external IP of your frontend Service.
curl http://${EXTERNAL_IP} # replace this with the EXTERNAL-IP you saw earlier
{"message":"Hello"}