DevOps & Platform Engineering: Intermediate
Go beyond first deployments. Automate delivery, manage multiple environments, add observability and build repeatable workflows your whole team can trust.
Who this path is for
You can already deploy an application to Kubernetes and have used a CI tool. This path is for engineers who want their delivery process to be automated, consistent and easy for other people to use.
What you’ll learn
- Building deployment pipelines that promote changes across environments
- Managing configuration and secrets across multiple clusters
- Branch-based and preview environments for faster feedback
- Adding monitoring, logging and alerting so you know when things break
- Applying GitOps practices to keep clusters in the state you declared
How to use this path
Guides are grouped by technology. Pick the area that is your biggest bottleneck today (deployment, configuration or visibility) and start there. Most guides build on a working cluster, so keep one running as you progress.
Before you start
- Completed the Beginner path or equivalent hands-on experience
- Familiarity with Kubernetes objects such as Deployments and Services
- A Git repository you can experiment with
What comes next
Continue to the Advanced path to tackle scale, security and platform design.
What's in this path
Argo CD
4 guides-
Configure Multi-Cluster with Argo CD Manage deployments across multiple clusters. -
Using Helm with Argo CD Deploy complex applications packaged as Helm charts. -
Control Sync Behavior: Auto-Sync, Prune, Self-Heal, and Rollback Decide when Argo CD applies changes, what it deletes, and how to undo a bad deploy. -
Deploy Helm Charts and Kustomize Overlays per Environment Structure one repository for dev and prod, and avoid the ConfigMap rollout trap.
Flux CD
7 guides-
Control Sync Behavior: Intervals, Prune, Drift Correction, and Rollback Decide when Flux applies changes, what it deletes, how to pause it, and how to undo a bad deploy. -
Structure a Repository with Kustomize Overlays per Environment Organize one repository for dev and production, and avoid the ConfigMap rollout trap. -
Deploy Helm Charts with HelmRelease Install and upgrade Helm charts from Helm repositories and OCI registries, with automatic rollback. -
Automate Image Updates with Flux Image Automation Let Flux detect new container image tags and commit them back to Git. -
Manage Secrets in Git with SOPS and age Encrypt Kubernetes Secrets before committing them, and let Flux decrypt them in the cluster. -
Configure Multi-Cluster with Flux Manage several clusters from one repository, with shared infrastructure and per-cluster differences. -
Send Alerts and Receive Webhooks with Flux Notifications Get Slack alerts for reconciliation events and trigger instant syncs from Git pushes.
Kubernetes
4 guides-
Services: Stable Networking for Ephemeral Pods Give Pods a stable address, expose them inside and outside the cluster, and restrict who can talk to whom. -
Configuration: ConfigMaps and Secrets Keep settings and credentials out of your images, inject them into Pods, and avoid the common traps. -
Persistent Storage: Volumes, PersistentVolumes, and Claims Keep data alive across Pod restarts with PVCs, and understand how StorageClasses tie the pieces together. -
Keep Workloads Healthy: Namespaces, Resources, Quotas, and Probes Share a cluster fairly with requests, limits, and quotas, and let Kubernetes detect unhealthy containers.
containerd
1 guidesGrafana
7 guides-
Provision Dashboards from JSON Files Load dashboards from disk, map folders from directories, and author them without losing changes. -
Provision Alert Rules, Contact Points, and Notification Policies Define the whole alerting pipeline in YAML so it is reviewed and versioned like code. -
Manage Secrets in Grafana Configuration Keep passwords and tokens out of Git using environment variables, files, and encrypted manifests. -
Configure Authentication and Access Through Config Set up login, OAuth, and role mapping in grafana.ini, and handle users and teams as code. -
Deploy Grafana on Kubernetes with Helm and Provisioning Values Run Grafana from a Helm chart where data sources, dashboards, and settings all come from values files. -
Manage Grafana with Terraform Create folders, data sources, dashboards, alerts, teams, and service accounts from HCL. -
Reload, Verify, and Troubleshoot Provisioning from the Command Line Find out what Grafana loaded, reload without a restart, and fix the usual provisioning errors.
Helm
1 guidesOpenTelemetry
7 guides-
Configure SDKs with a Declarative YAML File Use one YAML file with OTEL_CONFIG_FILE instead of dozens of environment variables, where your SDK supports it. -
Make the Collector Production-Ready: Memory Limits, Batching, and Retries Configure processors, queues, and persistent storage so telemetry survives overload and outages. -
Collector Deployment Patterns: No Collector, Agent, and Gateway Choose a topology and configure the agent-to-gateway handoff, including Kubernetes metadata. -
Deploy the Collector on Kubernetes with Helm Install the official chart, use presets for logs and metrics, and override the config through values files. -
Collect Logs and Infrastructure Metrics with Receivers Use filelog, hostmetrics, kubeletstats, and prometheus receivers, and derive metrics from traces. -
Send Telemetry to Backends and Secure the Pipeline Configure OTLP exporters for Tempo, Loki, and Prometheus, plus TLS, authentication, and secrets. -
Troubleshoot the Collector and SDKs A systematic checklist for when telemetry doesn't arrive: debug exporter, health checks, internal metrics, and common mistakes.
Prometheus
1 guidesFluentd
3 guides-
Collect Logs from Files, HTTP, and Containers Configure the three most common input sources: a file on disk, an HTTP endpoint, and every container on a Docker host. -
Ship Logs Reliably: Output Plugins and Buffering Install an output plugin, route different sources to different destinations, and configure buffering so a downed backend doesn't lose data. -
Fluentd vs Fluent Bit: Choosing the Right Log Processor Same plugin model, same tagging system, very different resource footprint — when to use which, and when to use both.
Envoy
1 guidesIstio
3 guides-
Install and Customize Istio with Helm The officially recommended way to run Istio in production, and what replaced the now-removed Istio Operator. -
Verify and Debug an Istio Installation with istioctl Catch a misconfiguration before it bites you: analyze, validate, proxy-status, and the one label the mesh quietly depends on. -
Observe Your Mesh: Prometheus, Grafana, Tracing, and Kiali Every sidecar is already emitting metrics and traces — install the add-ons that turn that into something you can actually look at.
Cilium
2 guides-
Expose Services with Cilium's Gateway API Support GatewayClass, Gateway, and HTTPRoute — host-based routing, path matching, URL rewrites, and TLS, with no separate gateway Pods. -
Write Network Policies: From L3/L4 to L7 Rules Kubernetes starts with every Pod able to reach every other Pod — CiliumNetworkPolicy is how you narrow that down, down to the HTTP method if you need to.