Add lessons: untimed guided labs, one per curriculum objective, on a host of their own, in the browser and in the terminal. Each step has a check, a hint and its commands; a lesson writes no history or scores, only a done mark on its objective. CKAD 2.1-2.4 (24 steps) and all 27 CKA objectives (135 steps) have one, and `./ksim lesson audit` proves that every step fails, is done by its own commands, then passes. Add CKA tasks 132-147 (cka/bank_course.py) on what a full CKA course teaches beyond the bank: a real upgrade from v1.36, a drain under a PodDisruptionBudget, QoS and eviction, in-place resize, kube-proxy's chains, encryption at rest, an operator, and CSI expansion, snapshots and clones (ensure_csi_hostpath). Move CKA and CKS to Kubernetes v1.37 and rebuild the hosts on Ubuntu 24.04, with kubelet, kubeadm and kubectl as held packages from pkgs.k8s.io; the desktop runs Ubuntu too. Hosts gain man pages, hexdump and xxd. Fix CKS Q4, which gave 3 of 12 points untouched, and CKA Q4 and Q49, whose solutions raced their new CRD. Audited on v1.37: CKA 147/147, CKAD 105/105, CKS 109/110 (Q103, a Falco task, failed to seed once and awaits a re-audit); lessons: 135 of 135 CKA steps and 24 of 24 CKAD steps. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
37 lines
2.1 KiB
Docker
37 lines
2.1 KiB
Docker
# The exam's remote desktop: XFCE on Ubuntu 24.04 with a terminal and Firefox, served to the
|
|
# browser over noVNC. It is the "base" machine of a session - no kubeconfig here; every task says
|
|
# which host to ssh to.
|
|
FROM docker.io/library/ubuntu:24.04
|
|
ENV DEBIAN_FRONTEND=noninteractive LANG=C.UTF-8
|
|
# Ubuntu's own firefox package only installs the snap, which cannot run in a container: Firefox ESR
|
|
# comes from Mozilla's APT repository instead, pinned above Ubuntu's. Ubuntu's image has a user
|
|
# `ubuntu` on uid 1000, which is the candidate's.
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends ca-certificates curl \
|
|
&& install -d -m 0755 /etc/apt/keyrings \
|
|
&& curl -fsSL -o /etc/apt/keyrings/packages.mozilla.org.asc https://packages.mozilla.org/apt/repo-signing-key.gpg \
|
|
&& echo 'deb [signed-by=/etc/apt/keyrings/packages.mozilla.org.asc] https://packages.mozilla.org/apt mozilla main' \
|
|
> /etc/apt/sources.list.d/mozilla.list \
|
|
&& printf 'Package: *\nPin: origin packages.mozilla.org\nPin-Priority: 1000\n' > /etc/apt/preferences.d/mozilla \
|
|
&& userdel -r ubuntu \
|
|
&& apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
xfce4 xfce4-terminal dbus-x11 elementary-xfce-icon-theme greybird-gtk-theme \
|
|
fonts-dejavu fonts-liberation \
|
|
tigervnc-standalone-server novnc websockify \
|
|
firefox-esr mousepad xclip \
|
|
openssh-client sudo vim nano less jq tmux curl wget bash-completion ca-certificates \
|
|
procps iputils-ping dnsutils \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
COPY rootfs/ /
|
|
RUN useradd -m -s /bin/bash -u 1000 candidate \
|
|
&& echo 'candidate ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/candidate && chmod 440 /etc/sudoers.d/candidate \
|
|
&& install -d -o candidate -g candidate /home/candidate/.config/xfce4/xfconf/xfce-perchannel-xml \
|
|
&& install -m644 -o candidate -g candidate /etc/xdg/xfce4/panel/default.xml \
|
|
/home/candidate/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml \
|
|
&& chmod +x /usr/local/bin/start-desktop
|
|
USER candidate
|
|
WORKDIR /home/candidate
|
|
EXPOSE 6080
|
|
ENTRYPOINT ["/usr/local/bin/start-desktop"]
|