> ## Documentation Index
> Fetch the complete documentation index at: https://notes.kodekloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Platform Engineering 101

> High-level refresher on platform engineering fundamentals covering containers, Kubernetes, Git, GitOps, and supporting tools for building reliable self-service developer platforms.

Welcome back. This short, optional refresher covers core concepts you’ll rely on in platform engineering: containerization, Kubernetes basics, Git fundamentals, and how GitOps ties them together. If you already use these technologies daily, feel free to mark this complete. Otherwise, this article will quickly rebuild your confidence and point you to further reading.

<Callout icon="lightbulb" color="#1CB2FE">
  This is a high-level refresher intended to rebuild confidence. It is not a complete deep dive — take the dedicated [Kubernetes for the Absolute Beginners - Hands-on Tutorial](https://learn.kodekloud.com/user/courses/kubernetes-for-the-absolute-beginners-hands-on-tutorial) or [GIT for Beginners](https://learn.kodekloud.com/user/courses/git-for-beginners) courses if you need more detail.
</Callout>

***

## Containerization basics: containers vs virtual machines

Virtual machines use hypervisor-based OS virtualization: each VM boots a full operating system with its own kernel and userland. That provides strong isolation but increases resource overhead and startup time.

<Frame>
  <img src="https://mintcdn.com/kodekloud-c4ac6d9a/EMWUWtbmMntWGHdB/images/Prep-Course-Certified-Cloud-Native-Platform-Engineering-Associate-CNPA/Pre-requisites/Platform-Engineering-101/containerization-hypervisor-vms-windows-linux-macos.jpg?fit=max&auto=format&n=EMWUWtbmMntWGHdB&q=85&s=4b18c3c5d7efad3c6dc641c3f6f3945c" alt="A presentation slide titled &#x22;Understanding Containerization&#x22; showing a diagram of a Hypervisor above three virtual machine blocks labeled Windows, Linux, and macOS with OS layers beneath them." width="1920" height="1080" data-path="images/Prep-Course-Certified-Cloud-Native-Platform-Engineering-Associate-CNPA/Pre-requisites/Platform-Engineering-101/containerization-hypervisor-vms-windows-linux-macos.jpg" />
</Frame>

Containers, by contrast, are process-level virtualization. They package an application and its user-space dependencies while sharing the host kernel. This makes container images smaller, faster to start, and more portable across environments that share the same OS kernel and CPU architecture.

Key constraints to remember:

* Containers share the host kernel: Linux containers need a Linux kernel; Windows containers need a Windows kernel.
* CPU architecture matters: images built for `x86_64` won’t run on ARM hosts without cross-building or emulation.

<Callout icon="warning" color="#FF6B6B">
  Containers are portable across similar OS and architecture families but are not OS-agnostic. Always match your container image OS/architecture to the target host.
</Callout>

<Frame>
  <img src="https://mintcdn.com/kodekloud-c4ac6d9a/EMWUWtbmMntWGHdB/images/Prep-Course-Certified-Cloud-Native-Platform-Engineering-Associate-CNPA/Pre-requisites/Platform-Engineering-101/containerization-shared-host-kernel-portable-apps.jpg?fit=max&auto=format&n=EMWUWtbmMntWGHdB&q=85&s=de42c3554353be2335e977ea1121fc8a" alt="A presentation slide titled &#x22;Understanding Containerization&#x22; showing several &#x22;Container&#x22; blocks surrounding a highlighted &#x22;Host OS Kernel&#x22; block. Accompanying text explains that containers share the host OS kernel, package apps with their dependencies into portable units, and are faster and more efficient." width="1920" height="1080" data-path="images/Prep-Course-Certified-Cloud-Native-Platform-Engineering-Associate-CNPA/Pre-requisites/Platform-Engineering-101/containerization-shared-host-kernel-portable-apps.jpg" />
</Frame>

Because containers include the runtime and dependencies, they greatly reduce the “it works on my machine” problem: the same image a developer builds locally can run in testing, staging, or production—so long as the target environment supports the same kernel and architecture.

<Frame>
  <img src="https://mintcdn.com/kodekloud-c4ac6d9a/EMWUWtbmMntWGHdB/images/Prep-Course-Certified-Cloud-Native-Platform-Engineering-Associate-CNPA/Pre-requisites/Platform-Engineering-101/understanding-containerization-developer-testing-staging-production.jpg?fit=max&auto=format&n=EMWUWtbmMntWGHdB&q=85&s=6a18d71bbbe552f9c3d14576a2766e6f" alt="A slide titled &#x22;Understanding Containerization&#x22; showing four colored monitor icons labeled Developer, Testing, Staging, and Production, each containing a small container symbol. The caption reads &#x22;Containers enable scalable, consistent applications&#x22; and mentions eliminating the &#x22;it works on my machine&#x22; problem." width="1920" height="1080" data-path="images/Prep-Course-Certified-Cloud-Native-Platform-Engineering-Associate-CNPA/Pre-requisites/Platform-Engineering-101/understanding-containerization-developer-testing-staging-production.jpg" />
</Frame>

At scale, platform engineers must manage:

* Autoscaling and capacity planning
* Safe rollouts and rollbacks
* Continuous health monitoring and observability

While Docker made containers easy for developers, production-grade reliability requires orchestration.

<Frame>
  <img src="https://mintcdn.com/kodekloud-c4ac6d9a/EMWUWtbmMntWGHdB/images/Prep-Course-Certified-Cloud-Native-Platform-Engineering-Associate-CNPA/Pre-requisites/Platform-Engineering-101/containerization-scale-rollout-health-slide.jpg?fit=max&auto=format&n=EMWUWtbmMntWGHdB&q=85&s=495e60d8a9cd2b6e820f0604080e8c17" alt="A presentation slide titled &#x22;Understanding Containerization.&#x22; It shows three colored icons with captions: &#x22;Scale during traffic spikes,&#x22; &#x22;Roll out updates safely,&#x22; and &#x22;Ensure they stay healthy.&#x22;" width="1920" height="1080" data-path="images/Prep-Course-Certified-Cloud-Native-Platform-Engineering-Associate-CNPA/Pre-requisites/Platform-Engineering-101/containerization-scale-rollout-health-slide.jpg" />
</Frame>

***

## What is Kubernetes? — orchestration for containerized apps

Kubernetes is the leading open-source system for automating deployment, scaling, and management of containerized applications. It orchestrates containers across a cluster, providing features such as self-healing, rolling updates, horizontal autoscaling, and resource scheduling. For platform engineering, Kubernetes is often the runtime layer that enables self-service and operational controls.

<Frame>
  <img src="https://mintcdn.com/kodekloud-c4ac6d9a/EMWUWtbmMntWGHdB/images/Prep-Course-Certified-Cloud-Native-Platform-Engineering-Associate-CNPA/Pre-requisites/Platform-Engineering-101/kubernetes-essential-components-infographic.jpg?fit=max&auto=format&n=EMWUWtbmMntWGHdB&q=85&s=75ebaf3818a436545195b5b0a1d14b5b" alt="An infographic titled &#x22;Essential Kubernetes Components&#x22; showing a central Kubernetes logo surrounded by labeled icons for Namespace, Cluster, Service, Pod, and Deployment with short descriptions of each. It visually summarizes key Kubernetes concepts like isolation (namespace), compute capacity (cluster), stable network access (service), pods, and deployments." width="1920" height="1080" data-path="images/Prep-Course-Certified-Cloud-Native-Platform-Engineering-Associate-CNPA/Pre-requisites/Platform-Engineering-101/kubernetes-essential-components-infographic.jpg" />
</Frame>

Core Kubernetes objects and their roles:

| Resource Type | Purpose | Example / Notes |
| -: | - | - |
| Cluster | Collection of nodes that run workloads | Managed by cloud providers or self-hosted |
| Pod | Smallest deployable unit; one or more containers share network/storage | Pods are ephemeral; address pods via Services |
| Deployment | Declarative controller for stateless replicas and rolling updates | `kubectl apply -f deployment.yaml` |
| StatefulSet | Manages stateful apps with stable IDs and persistent storage | Databases, stateful services |
| DaemonSet | Ensures a copy of a pod runs on every (or selected) node | Node-level agents (logging, monitoring) |
| Service | Stable network access to a set of pods (ClusterIP, NodePort, LoadBalancer) | Decouples clients from pod IPs |
| Namespace | Logical partitioning and access isolation within a cluster | Use for teams, environments, or tenants |
| Ingress / L7 proxies | Layer-7 routing, host/path rules, TLS termination | Often backed by controllers (NGINX, Traefik) |

Common operational commands used in platform engineering:

```bash theme={null}
# Apply a manifest (create/update resources)
kubectl apply -f deployment.yaml

# Inspect pods in a namespace
kubectl get pods -n my-namespace
```

For more details, see the official Kubernetes documentation: [https://kubernetes.io/docs/](https://kubernetes.io/docs/)

***

## Git fundamentals and Infrastructure as Code (IaC)

Git is a distributed version control system used to track changes, collaborate, and store history. Platform engineering relies on Git to version-control deployment manifests, configuration, and infrastructure-as-code templates so changes are auditable, reversible, and automatable.

Typical Git workflow (concise):

```bash theme={null}
# Clone a remote repository
git clone git@github.com:org/repo.git

# Create a feature branch and work
git checkout -b feature/my-change
git add .
git commit -m "Describe change"

# Push the branch to the remote
git push -u origin feature/my-change

# Update your local branch with the latest remote changes
git pull --rebase
```

<Frame>
  <img src="https://mintcdn.com/kodekloud-c4ac6d9a/EMWUWtbmMntWGHdB/images/Prep-Course-Certified-Cloud-Native-Platform-Engineering-Associate-CNPA/Pre-requisites/Platform-Engineering-101/git-foundation-iac-config-manifests.jpg?fit=max&auto=format&n=EMWUWtbmMntWGHdB&q=85&s=d6025337e357134b3a5c31365674dfcd" alt="A slide titled &#x22;Git – The Foundation of Modern Deployment&#x22; showing three colored icons labeled Infrastructure-as-Code, Configuration Files, and Deployment Manifests inside a box with a caption &#x22;Gets versioned in Git.&#x22; The KodeKloud copyright appears at the bottom." width="1920" height="1080" data-path="images/Prep-Course-Certified-Cloud-Native-Platform-Engineering-Associate-CNPA/Pre-requisites/Platform-Engineering-101/git-foundation-iac-config-manifests.jpg" />
</Frame>

Useful Git resources:

* Git documentation: [https://git-scm.com/doc](https://git-scm.com/doc)
* Guides on branching strategies and pull requests for collaboration

***

## GitOps: Git as the single source of truth

GitOps is an operational model where Git repositories hold the declarative desired state for infrastructure and applications. Automated controllers (GitOps agents) observe Git and reconcile the cluster’s actual state to match the desired state stored in Git. This makes deployments auditable, reproducible, and observable.

Key benefits:

* Declarative deployments and rollbacks
* Clear audit trail (who changed what and when)
* Faster recovery via reverting commits

Caveat: configuration drift can still happen if manual changes are made directly to clusters. GitOps lowers that risk by making Git the primary change channel.

<Frame>
  <img src="https://mintcdn.com/kodekloud-c4ac6d9a/EMWUWtbmMntWGHdB/images/Prep-Course-Certified-Cloud-Native-Platform-Engineering-Associate-CNPA/Pre-requisites/Platform-Engineering-101/platform-engineer-gitops-k8s-deploy.jpg?fit=max&auto=format&n=EMWUWtbmMntWGHdB&q=85&s=68ab7097b42573153af5377b49b5921e" alt="A slide titled &#x22;Git Commands in Platform Engineering&#x22; showing a flowchart where a platform engineer updates a Kubernetes deployment manifest, pushes it to Git, GitOps detects the changes, and the changes are applied to production." width="1920" height="1080" data-path="images/Prep-Course-Certified-Cloud-Native-Platform-Engineering-Associate-CNPA/Pre-requisites/Platform-Engineering-101/platform-engineer-gitops-k8s-deploy.jpg" />
</Frame>

Recommended GitOps controllers and resources:

* Argo CD: [https://argoproj.github.io/argo-cd/](https://argoproj.github.io/argo-cd/)
* Flux: [https://fluxcd.io/](https://fluxcd.io/)
* GitOps overview (Weaveworks): [https://www.weave.works/technologies/gitops/](https://www.weave.works/technologies/gitops/)

***

## Core tools that power platform engineering

Containers, Kubernetes, Git, and GitOps are the backbone of many platform engineering initiatives. Around them, platform teams integrate supporting capabilities to create a reliable, self-service developer platform:

* Service catalogs and platform APIs
* Observability (metrics, traces, logs)
* Security: vulnerability scanning, runtime protection
* Cost management and autoscaling controls
* CI/CD pipelines and image registries

<Frame>
  <img src="https://mintcdn.com/kodekloud-c4ac6d9a/EMWUWtbmMntWGHdB/images/Prep-Course-Certified-Cloud-Native-Platform-Engineering-Associate-CNPA/Pre-requisites/Platform-Engineering-101/platform-engineering-tools-containers-kubernetes-gitops.jpg?fit=max&auto=format&n=EMWUWtbmMntWGHdB&q=85&s=9a305769895ec2da153266b328338f2b" alt="A slide titled &#x22;Tools That Power Platform Engineering&#x22; showing five numbered items—Containers, Kubernetes, Git, GitOps, and Platform—each with a short description of its role." width="1920" height="1080" data-path="images/Prep-Course-Certified-Cloud-Native-Platform-Engineering-Associate-CNPA/Pre-requisites/Platform-Engineering-101/platform-engineering-tools-containers-kubernetes-gitops.jpg" />
</Frame>

This lesson establishes the foundations. From here, explore deeper topics in upcoming lessons: service catalogs, security and compliance, observability, autoscaling, and creating developer self-service. Thanks for reading.

<CardGroup>
  <Card title="Watch Video" icon="video" cta="Learn more" href="https://learn.kodekloud.com/user/courses/certified-cloud-native-platform-engineering-associate-cnpa/module/8110e623-d6f3-4066-9593-68e20f890dad/lesson/c889cb89-8090-419a-9c06-2dad92d25b1b" />
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.