DevOps Engineering study materials
DevOps Engineering study resources

DevOps Engineering: Cloud Platforms, Containers, and Orchestration

DevOps Engineering ยท Work through your exam, one topic at a time.

All guide sections

Cloud Platforms, Containers, and Orchestration

This domain covers running workloads: cloud identity and network boundaries, container image construction, and the Kubernetes controls that decide whether a rollout is safe.

Core rules

  • Shared responsibility: the provider secures physical and managed layers; you secure identity, configuration, data and network paths. Least-privilege IAM roles, no owner/root keys in workloads, workload identity or OIDC federation instead of static credentials.
  • Images: multi-stage builds, minimal base (distroless or slim), non-root USER, no build tools or secrets in final layers. Tag immutably by digest or git SHA and scan in CI.
  • Objects: Deployment โ†’ ReplicaSet โ†’ Pod; Services select pods by label; Ingress/Gateway routes from outside; ConfigMaps and Secrets inject configuration (Kubernetes Secrets are base64, not encrypted by default - enable etcd encryption and an external secret store).
  • Probes: readiness controls Service endpoints, liveness restarts the container, startup shields slow-booting apps from liveness. Set requests and limits so scheduling and QoS behave; HPA scales on metrics; PodDisruptionBudget limits voluntary disruption during drains and upgrades.
  • Rollouts: maxSurge/maxUnavailable, kubectl rollout status, kubectl rollout undo. NetworkPolicy default-deny, RBAC least privilege, ResourceQuota per namespace.

Worked example

A Java service needs 90 seconds to warm up. Its liveness probe uses initialDelaySeconds: 10, periodSeconds: 10, failureThreshold: 3. Reasoning: the kubelet kills the container at roughly 40 seconds, before startup finishes; the pod never becomes Ready, the old ReplicaSet keeps serving, and the rollout churns in CrashLoopBackOff while surge pods are created and killed. Fix: add a startupProbe with periodSeconds: 10 and failureThreshold: 18 (a 180-second budget), keep the readinessProbe for traffic decisions, and reserve liveness for genuine deadlocks. Readiness failing removes endpoints without restarting - the correct signal for a warming application.

Traps

  • Confusing liveness and readiness: aggressive liveness turns a slow dependency into a cluster-wide restart storm.
  • Setting CPU limits far below requests (throttling) or omitting requests entirely so the scheduler overpacks nodes.
  • Expecting a Deployment restart to pick up ConfigMap changes consumed as environment variables - the pod template must change (a checksum annotation does this).
  • Mounting cloud credentials as Kubernetes Secrets instead of using workload identity.