Platform Tools Basics
This page is a hands-on tour of the tools most platform teams install on a fresh Kubernetes cluster.
Search across all documentation pages
This page is a hands-on tour of the tools most platform teams install on a fresh Kubernetes cluster.
Each example is a minimal, real command or manifest you can adapt for your own environment.
Quick install on macOS with Homebrew:
brew install kubectl helm k9s stern
brew install derailed/k9s/k9s # if not in coreBefore installing anything, know which cluster you are pointed at.
kubectl config current-context
kubectl get nodes -o wide
kubectl get pods -A --field-selector=status.phase!=Runningcurrent-context prevents the classic mistake of installing into prod by accident.get nodes -o wide shows node versions and the container runtime (containerd).Most platform tools ship as Helm charts you install into a dedicated namespace.
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager --create-namespace \
--set crds.enabled=true --version v1.16.2--create-namespace keeps each tool isolated in its own namespace.--version so upgrades are deliberate, not accidental.crds.enabled=true installs the CRDs this chart needs.helm show values <chart> before installing.After any install, look at what actually landed in the cluster.
kubectl get all -n cert-manager
kubectl get crd | grep cert-managerget all shows Deployments, Pods, and Services for the tool.CrashLoopBackOff, jump to logs (example 5).k9s is a terminal UI that replaces dozens of kubectl get commands.
k9s -n cert-manager:pods or :deploy to switch resource views.l on a pod to stream logs, d to describe, s to shell in.:ctx to switch clusters without leaving the UI.When a Deployment has several replicas, stern tails them all at once.
stern -n cert-manager cert-manager --since 10m
stern -n prod 'checkout-.*' --container app--since limits noise to recent lines.--container narrows to one container in multi-container pods.With cert-manager installed, a ClusterIssuer plus an annotation gets you HTTPS.
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: platform@example.com
privateKeySecretRef:
name: letsencrypt-prod-account-key
solvers:
- http01:
ingress:
ingressClassName: nginxcert-manager.io/cluster-issuer: letsencrypt-prod to trigger issuance.external-dns turns Service and Ingress objects into DNS records.
apiVersion: v1
kind: Service
metadata:
name: web
annotations:
external-dns.alpha.kubernetes.io/hostname: web.example.com
spec:
type: LoadBalancer
selector:
app: web
ports:
- port: 443
targetPort: 8443Velero snapshots API objects and can trigger CSI volume snapshots.
velero backup create checkout-daily \
--include-namespaces checkout \
--snapshot-volumes
velero backup describe checkout-daily--include-namespaces scopes the backup to one app.--snapshot-volumes uses the CSI driver to snapshot PVs.describe shows phase, item counts, and any warnings.velero restore create --from-backup checkout-daily.Treat the platform as versioned software, not one-off installs.
helm list -A
kubectl get deploy -A -o custom-columns=\
'NS:.metadata.namespace,NAME:.metadata.name,IMAGE:.spec.template.spec.containers[0].image'helm list -A shows every release and its chart version.krew is the plugin manager for kubectl and installs handy diagnostics.
kubectl krew install ctx ns neat
kubectl ctx # switch contexts
kubectl ns platform # switch default namespace
kubectl get deploy web -o yaml | kubectl neatkrew install adds plugins that run as kubectl <plugin>.ctx and ns speed up context and namespace switching.neat strips managed fields and defaults for readable YAML.Stack versions: This page was written for Kubernetes 1.36.2, Docker Engine 29.6.1 (BuildKit default), containerd (CRI runtime on nodes), Helm 3, Compose v2, Argo CD (latest - verify at build), and Gateway API (GA - verify controller support at build).
Reviewed by Chris St. John·Last updated Jul 16, 2026