Skip to content
CKADApplication Environment, Configuration and SecuritySingle nodeMedium

Pod and container SecurityContext

Scenario ckad-env-002 · about 7 minutes · 11 points · 11 grader checks

Run a Pod as a non-root user with a read-only root filesystem, no privilege escalation and no capabilities.

  • securitycontext
  • runasnonroot
  • capabilities
  • readonlyrootfilesystem
  • pod

What you will practise

  • Set pod-level runAsUser, runAsGroup, fsGroup and runAsNonRoot
  • Set container-level allowPrivilegeEscalation and readOnlyRootFilesystem
  • Drop Linux capabilities

Start this lab

With the CLI installed and signed in, this command provisions a single node cluster on your Mac, applies the scenario setup and prints the task below.

goldenkube start ckad-env-002

Task

The task text exactly as the CLI shows it. Solve it on the cluster, then run goldenkube submit.

In namespace "secure-app" (create it if it does not exist) create a Pod named "hardened" with one container "app", image busybox:1.36, command "sleep 3600", that runs with these security settings: Pod level: - run as user ID 1000 and group ID 3000 - files of mounted volumes belong to group 2000 (fsGroup) - the Pod must refuse to run as root (runAsNonRoot) Container "app": - no privilege escalation - read-only root filesystem - drop ALL Linux capabilities The Pod must be Running.

Requirements and details

Certification
CKAD · Certified Kubernetes Application Developer
Domain
Application Environment, Configuration and Security
Difficulty
Medium
Cluster topology
Single node
Cluster features
None beyond the base cluster
Recommended time
7 minutes
Points
11
Grader checks
11
Kubernetes version
1.37
Minimum CLI version
0.1.0
Scenario version
1
Published

Grading runs locally: 11 state checks read your cluster when you submit; the scenario passes when every check passes. Hints, the reference solution and the check definitions are available only inside the CLI, not on this page.

CKADApplication Environment, Configuration and SecurityEasy

ConfigMap and Secret as env vars and a volume

Create a ConfigMap and a Secret and consume them in a Pod as single env vars, envFrom and a mounted volume.

Single node · ~7 min · 9 points

  • configmap
  • secret
  • env
  • envfrom
  • volumes

goldenkube start ckad-env-001

CKADApplication Environment, Configuration and SecurityMedium

Requests, limits, LimitRange and ResourceQuota

Constrain a namespace with a ResourceQuota and LimitRange defaults, then deploy a workload that fits inside them.

Single node · ~8 min · 10 points

  • resources
  • requests
  • limits
  • resourcequota
  • limitrange

goldenkube start ckad-env-003

CKADApplication Environment, Configuration and SecurityMedium

ServiceAccount with least-privilege RBAC for an app

Give an application its own ServiceAccount with a namespaced Role and switch a running Deployment to it.

Single node · ~8 min · 10 points

  • serviceaccount
  • rbac
  • role
  • rolebinding
  • deployment

goldenkube start ckad-env-004

CKADApplication Environment, Configuration and SecurityEasy

Use a CustomResourceDefinition

Discover the schema of a custom resource and create and update objects of that kind with kubectl.

Single node · ~6 min · 8 points

  • crd
  • custom-resource
  • api-resources
  • kubectl-explain

goldenkube start ckad-env-005

Independent community project, not affiliated with or endorsed by CNCF or The Linux Foundation. Lab results are practice feedback, not an exam score.