Certified Kubernetes Application Developer (CKAD) Practice Exam - Part 11

30 minutes
  • 3 Learning Objectives

About this Hands-on Lab

This lab provides practice scenarios to help prepare you for the Certified Kubernetes Application Developer (CKAD) exam. You will be presented with tasks to complete, as well as server(s) and/or an existing Kubernetes cluster to complete them in. You will need to use your knowledge of Kubernetes to successfully complete the provided tasks, much like you would on the real CKAD exam. Good luck!

Learning Objectives

Successfully complete this lab by achieving the following learning objectives:

Create a ConfigMap to Store an `haproxy` Config File

Create a ConfigMap called haproxy-config in the default Namespace to store the haproxy configuration for an haproxy ambassador container.

In the ConfigMap, store the following config file in a key called haproxy.cfg:

frontend ambassador
  bind *:7171
  default_backend api_svc
backend api_svc
  server svc api-svc:8181
Update a Service to Serve on a New Port.

In the default Namespace, there is a Service called api-svc. This Service serves an API that is accessed by the client Pod.

Change the Service’s exposed port to 8181. This will temporarily break the client Pod’s communication with the Service since the client Pod is still using the old port.

Re-configure a Pod to use an haproxy ambassador container.

In the default Namespace, there is a Pod called client. This Pod should be unable to reach the api-svc Service since the Service’s port was changed. Fix this issue by adding an ambassador container to the client Pod that uses haproxy to forward traffic to the Service’s new port.

You can find manifest file for this Pod at /home/cloud_user/client.yml. Note that you may need to delete and re-create the Pod in order to make certain changes.

First, modify the command of the client Pod’s main container so that it reaches out to localhost instead of api-svc. Do not change the port number that is used within this command.

Add an haproxy ambassador container to the client Pod using the haproxy:2.4 image. Mount the haproxy-config ConfigMap to the ambassador container at /usr/local/etc/haproxy/. This will cause the ConfigMap’s haproxy configuration data to configure haproxy in the ambassador container.

Once this is done, the client Pod’s main container should be able to contact the api-svc successfully again. You can check the container’s logs with kubectl logs client -c main.

Additional Resources

Use the provided environment to complete the tasks detailed in the learning objectives.

You can access all components of the cluster from the CLI server. The control plane server is k8s-control, and the worker is k8s-worker1. If you need to log in to the control plane server, for example, just use ssh k8s-control from the CLI server.

You can also use kubectl from the CLI server, control plane node, or worker to interact with the cluster. In order to use kubectl from the CLI server, you will need to select the acgk8s cluster to interact with, like so: kubectl config use-context acgk8s.

kubectl is aliased to k, and Kubernetes autocompletion is enabled. You can use the k alias like so: k get pods.

This lab includes a verification script to help you determine whether you have completed the objectives successfully. You can run the verification script with /home/cloud_user/verify.sh.

What are Hands-on Labs

Hands-on Labs are real environments created by industry experts to help you learn. These environments help you gain knowledge and experience, practice without compromising your system, test without risk, destroy without fear, and let you learn from your mistakes. Hands-on Labs: practice your skills before delivering in the real world.

Sign In
Welcome Back!

Psst…this one if you’ve been moved to ACG!

Get Started
Who’s going to be learning?