Errata

Certified Kubernetes Application Developer (CKAD) Study Guide

Errata for Certified Kubernetes Application Developer (CKAD) Study Guide, Second Edition

Submit your own errata for this product.

The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".

The following errata were submitted by our customers and approved as valid errors by the author or editor.

Color key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted By Date submitted Date corrected
Page Chapter 1 - summary
Last paragraph

"with" needs to be replaced with "will" in the following sentence.

You with find sample exercises at the end of each chapter.

Note from the Author or Editor:
Thanks for reporting. This will be correct in the final manuscript.

Maulik Pokiya  Mar 15, 2024 
O'Reilly learning platform
Page Chapter 17. Authentication, Authorization, and Admission Control
1st paragraph

The "Coverage of Curriculum Objectives" says that the objective "Understand SecurityContext" is covered in the chapter, however, that's not the case. This point should be removed.

"Understand SecurityContext" is a topic covered in Chapter 20. Security Contexts.

Benjamin Muschko
Benjamin Muschko
 
Mar 20, 2025 
O'Reilly learning platform
Page https://learning.oreilly.com/library/view/certified-kubernetes-application/9781098152857/ch20.html#i
Section "Defining a Security Context on the Container Level"

The section uses "fsGroup" as an example for a container-level security context attribute, however, the attribute only exists on the Pod-level. The section needs to be completely reworked.

Benjamin Muschko
Benjamin Muschko
 
May 05, 2025 
Page Chapter 4 Containers - Sample Exercises
First step in 'Sample Exercises' paragraph

In the first step, the specified directory is incorrect. It should be 'app-a/ch04/container' instead of 'app-a/ch04/containerized-java-app

Note from the Author or Editor:
Fixed in repo: https://github.com/bmuschko/ckad-study-guide/tree/master/app-a/ch04/containerized-java-app

Brice Flores  May 16, 2025 
Page Chapter 3, section "API Primitives and Objects", Explanation of Figure 3-2 "Kubernetes object struct
Explanation of "Status"

The second sentence of the description for "Status" reads as follows:
The Kubernetes controllers and their reconciliation loops constantly try to transition a Kubernetes object from the desired state into the actual state.
I'm wondering if this has to be the other way round:
The Kubernetes controllers and their reconciliation loops constantly try to transition a Kubernetes object from the actual state into the desired state.
This would be consistent to the explanation of the "Controller manager" in the chapter "Control Plane Node Components". There it reads:
[...] the controller manager will try to bring the object into the desired state.
I'm looking forward for a clarification.
Thanks in advance.
Kind regards,
Klaus Sperner

Note from the Author or Editor:
I think this sentence could be more clear. The source of truth is the desired state and that is what should be reflected in the live object.

Klaus Sperner  May 16, 2025 
Page section 5. Pods and namespaces --> Sample exercises
Exercise 2

The for loop: `for i in {1..10}; do echo "Welcome $i times"; done` cannot work in the busybox container because it is a `bash`-ism but busybox only contains `sh`. It should therefore be changed to: `for i in $(seq 1 10), do echo "Welcome $i times"; done`.

Whoever wrote the solution to this exercise in Appendix A has clearly noticed the problem but never corrected the exercise.

Note from the Author or Editor:
That was me, the author. ;-) The instructions of exercise 2 should be corrected.

Michal Kovac  Jul 16, 2025 
Page 197
1st code snippet, 3rd line

The example command is missing the container image name before the tag:
`$ kubectl create deployment myapp --image=:1.25.2 --port=80 --replicas=2`

The corrected command should follow the format:
`$ kubectl create deployment myapp --image=nginx:1.25.2 --port=80 --replicas=2`

Leszek Jasek  Oct 29, 2025 
Page 270
1st Table and the paragraph explaining it.

The description of the Prefix path type is incorrect.
According to the Kubernetes official Ingress path matching documentation, a pathType of Prefix matches all requests where the request path begins with the prefix specified.

This means /app/test should match /app when using Prefix. The book incorrectly says it does not.

Note from the Author or Editor:
You are right. Good catch!

Muhammad Zain Attiq  Sep 09, 2025 
Page 272
Center of the page

In the section Accessing an Ingress, the /etc/hosts example incorrectly maps the load balancer IP to next-app. Since the Ingress rule is defined for the host next.example.com, the /etc/hosts entry should instead be:

192.168.66.4 next.example.com

Mapping the IP to next-app will not match the Ingress host and will result in failed routing.

Muhammad Zain Attiq  Sep 20, 2025 
Page 272
Center of the page

In the section Accessing an Ingress, the /etc/hosts example incorrectly maps the load balancer IP to next-app. Since the Ingress rule is defined for the host next.example.com, the /etc/hosts entry should instead be:

192.168.66.4 next.example.com

Mapping the IP to next-app will not match the Ingress host and will result in failed routing.

Muhammad Zain Attiq  Sep 20, 2025