<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Cheat sheets on Eriks training corner</title><link>https://training.caha.cloud/en/kubernetesintro/cheatsheets/index.html</link><description>Recent content in Cheat sheets on Eriks training corner</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="https://training.caha.cloud/en/kubernetesintro/cheatsheets/index.xml" rel="self" type="application/rss+xml"/><item><title>Docker cheat sheet</title><link>https://training.caha.cloud/en/kubernetesintro/cheatsheets/docker/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://training.caha.cloud/en/kubernetesintro/cheatsheets/docker/index.html</guid><description>&lt;h1 id="docker-cheat-sheet"&gt;Docker cheat sheet&lt;/h1&gt;
&lt;p&gt;On &lt;strong&gt;support01&lt;/strong&gt; run Docker with &lt;code&gt;sudo&lt;/code&gt; (drop it if your user is in the &lt;code&gt;docker&lt;/code&gt;
group).&lt;/p&gt;
&lt;h2 id="containers"&gt;Containers&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Run in background, publish a port&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo docker run -d --name web -p 8080:80 nginx:1.27&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Run interactively, remove on exit&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo docker run -it --rm busybox sh&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;List running / all&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo docker ps&lt;/code&gt; / &lt;code&gt;sudo docker ps -a&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Logs, follow&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo docker logs -f web&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shell into a running container&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo docker exec -it web sh&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stop / start / restart&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo docker stop web&lt;/code&gt; / &lt;code&gt;start web&lt;/code&gt; / &lt;code&gt;restart web&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Remove (force)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo docker rm -f web&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Processes, live stats&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo docker top web&lt;/code&gt; / &lt;code&gt;sudo docker stats&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Full detail as JSON&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo docker inspect web&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;One field from inspect&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo docker inspect -f '{{.NetworkSettings.IPAddress}}' web&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Limit resources&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo docker run -d --memory 128m --cpus 0.5 nginx:1.27&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="images"&gt;Images&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Search / pull&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo docker search nginx&lt;/code&gt; / &lt;code&gt;sudo docker pull nginx:1.27&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;List / remove&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo docker images&lt;/code&gt; / &lt;code&gt;sudo docker rmi nginx:1.27&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Layer history&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo docker history nginx:1.27&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Build from a Dockerfile&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo docker build -t myapp:1.0 .&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tag / push&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo docker tag myapp:1.0 registry/myapp:1.0&lt;/code&gt; / &lt;code&gt;push&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Save / load a tar&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo docker save -o myapp.tar myapp:1.0&lt;/code&gt; / &lt;code&gt;load -i myapp.tar&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="networking"&gt;Networking&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;List networks&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo docker network ls&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Create a user network&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo docker network create appnet&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Attach at run time&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo docker run -d --network appnet --name db mysql:8&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Attach / detach later&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sudo docker network connect appnet web&lt;/code&gt; / &lt;code&gt;disconnect&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Host / no network&lt;/td&gt;
&lt;td&gt;&lt;code&gt;--network host&lt;/code&gt; / &lt;code&gt;--network none&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Containers on the same user-defined network resolve each other &lt;strong&gt;by container
name&lt;/strong&gt;. On the default bridge they do not.&lt;/p&gt;</description></item><item><title>kubectl cheat sheet</title><link>https://training.caha.cloud/en/kubernetesintro/cheatsheets/kubectl/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://training.caha.cloud/en/kubernetesintro/cheatsheets/kubectl/index.html</guid><description>&lt;h1 id="kubectl-cheat-sheet"&gt;kubectl cheat sheet&lt;/h1&gt;
&lt;p&gt;Run from &lt;strong&gt;support01&lt;/strong&gt; with &lt;code&gt;~/.kube/config&lt;/code&gt; in place (Lab 01). No &lt;code&gt;sudo&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="setup-that-saves-hours"&gt;Setup that saves hours&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;alias&lt;/span&gt; &lt;span class="nv"&gt;k&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;kubectl
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;source&lt;/span&gt; &amp;lt;&lt;span class="o"&gt;(&lt;/span&gt;kubectl completion bash&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;complete&lt;/span&gt; -o default -F __start_kubectl k
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;--dry-run=client -o yaml&amp;#34;&lt;/span&gt; &lt;span class="c1"&gt;# then: kubectl run x --image=nginx $do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl config set-context --current --namespace&lt;span class="o"&gt;=&lt;/span&gt;dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="ask-the-cluster-instead-of-the-internet"&gt;Ask the cluster instead of the internet&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Question&lt;/th&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Which kinds exist? short names? namespaced?&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl api-resources&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Which kinds are cluster-scoped?&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl api-resources --namespaced=false&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Which fields does this kind have?&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl explain ingress.spec.rules&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;All fields at once&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl explain deploy.spec --recursive&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;What can this command do?&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl create --help&lt;/code&gt; (examples at the bottom)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Global flags&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl options&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Client / server version&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl version&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Can I do this?&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl auth can-i create deployments -n dev&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="look-around"&gt;Look around&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Cluster reachable?&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl cluster-info&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nodes with IPs and versions&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl get nodes -o wide&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Everything in a namespace&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl get all -n dev&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;All namespaces&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl get pods -A&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Watch changes live&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl get pods -w&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sorted events&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl get events --sort-by=.lastTimestamp&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Warnings only, everywhere&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl get events -A --field-selector type=Warning&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Resource usage&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl top nodes&lt;/code&gt; / &lt;code&gt;kubectl top pods&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;By label&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl get pods -l app=web&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Custom columns&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl get pods -o custom-columns=NAME:.metadata.name,NODE:.spec.nodeName&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="create-and-change"&gt;Create and change&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Apply a manifest (or a dir)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl apply -f pod.yaml&lt;/code&gt; / &lt;code&gt;-f ./manifests/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Generate YAML without creating&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl run web --image nginx --dry-run=client -o yaml &amp;gt; web.yaml&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deployment YAML&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl create deploy web --image nginx --dry-run=client -o yaml&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Service for a deployment&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl expose deploy web --port 80 --type NodePort&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ingress (legacy)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl create ingress web --rule=&amp;quot;web.k8s.lab/*=web-svc:80&amp;quot;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Edit a live object&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl edit deploy web&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Patch a field&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl patch svc web -p '{&amp;quot;spec&amp;quot;:{&amp;quot;type&amp;quot;:&amp;quot;NodePort&amp;quot;}}'&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scale&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl scale deploy web --replicas=3&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Change an image&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl set image deploy/web nginx=nginx:1.28&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Env from a ConfigMap&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl set env deploy/web --from=configmap/app-cfg&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Label / annotate&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl label pod web tier=frontend&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Delete&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl delete -f web.yaml&lt;/code&gt; / &lt;code&gt;kubectl delete pod web&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="inspect-and-debug"&gt;Inspect and debug&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Everything about an object + events&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl describe pod web&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Live object as YAML&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl get pod web -o yaml&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;One field&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl get pod web -o jsonpath='{.status.podIP}'&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Logs, follow, previous crash&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl logs -f web&lt;/code&gt; / &lt;code&gt;kubectl logs web --previous&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Logs of one container&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl logs web -c sidecar&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Logs by label / via controller&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl logs -l app=web --tail=50&lt;/code&gt; / &lt;code&gt;kubectl logs deploy/web&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shell inside&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl exec -it web -- sh&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Throwaway debug Pod&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl run tmp --image busybox --restart=Never -it --rm -- sh&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Port-forward&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl port-forward svc/web 8080:80&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Copy files&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl cp web:/etc/nginx/nginx.conf ./nginx.conf&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Service endpoints&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl get endpointslices -l kubernetes.io/service-name=web&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="workloads"&gt;Workloads&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl rollout status deploy/web
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl rollout &lt;span class="nb"&gt;history&lt;/span&gt; deploy/web
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl rollout undo deploy/web
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl rollout restart deploy/web
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl get rs -l &lt;span class="nv"&gt;app&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;web &lt;span class="c1"&gt;# which ReplicaSet is active&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl get ds -A &lt;span class="c1"&gt;# DaemonSets&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl get sts &lt;span class="c1"&gt;# StatefulSets&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="storage"&gt;Storage&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl get pv &lt;span class="c1"&gt;# cluster-scoped&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl get pvc -A
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl describe pvc data &lt;span class="c1"&gt;# why is it Pending?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl get sc &lt;span class="c1"&gt;# StorageClasses&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl get csidrivers &lt;span class="c1"&gt;# installed CSI drivers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl get pv -o custom-columns&lt;span class="o"&gt;=&lt;/span&gt;NAME:.metadata.name,STATUS:.status.phase,CLAIM:.spec.claimRef.name,POLICY:.spec.persistentVolumeReclaimPolicy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl patch pv &amp;lt;pv&amp;gt; -p &lt;span class="s1"&gt;&amp;#39;{&amp;#34;spec&amp;#34;:{&amp;#34;claimRef&amp;#34;:null}}&amp;#39;&lt;/span&gt; &lt;span class="c1"&gt;# reuse a Released PV&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="gateway-api"&gt;Gateway API&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl get gatewayclass
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl get gateway,httproute -A
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl describe gateway web-gw &lt;span class="c1"&gt;# PROGRAMMED + conditions&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl describe httproute shop &lt;span class="c1"&gt;# Accepted + ResolvedRefs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl explain httproute.spec.rules.backendRefs
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The CRDs must be installed first - Gateway API is not part of Kubernetes.&lt;/p&gt;</description></item><item><title>Helm cheat sheet</title><link>https://training.caha.cloud/en/kubernetesintro/cheatsheets/helm/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://training.caha.cloud/en/kubernetesintro/cheatsheets/helm/index.html</guid><description>&lt;h1 id="helm-cheat-sheet"&gt;Helm cheat sheet&lt;/h1&gt;
&lt;p&gt;Helm 3 uses your &lt;code&gt;~/.kube/config&lt;/code&gt;, so it targets the same cluster kubectl does.&lt;/p&gt;
&lt;h2 id="repositories"&gt;Repositories&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Add&lt;/td&gt;
&lt;td&gt;&lt;code&gt;helm repo add podinfo https://stefanprodan.github.io/podinfo&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;List / update / remove&lt;/td&gt;
&lt;td&gt;&lt;code&gt;helm repo list&lt;/code&gt; / &lt;code&gt;helm repo update&lt;/code&gt; / &lt;code&gt;helm repo remove podinfo&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Search a repo&lt;/td&gt;
&lt;td&gt;&lt;code&gt;helm search repo podinfo&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Search Artifact Hub&lt;/td&gt;
&lt;td&gt;&lt;code&gt;helm search hub postgres&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Show all versions&lt;/td&gt;
&lt;td&gt;&lt;code&gt;helm search repo podinfo --versions&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="look-before-you-install"&gt;Look before you install&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Chart metadata&lt;/td&gt;
&lt;td&gt;&lt;code&gt;helm show chart podinfo/podinfo&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Configurable values&lt;/td&gt;
&lt;td&gt;&lt;code&gt;helm show values podinfo/podinfo&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Readme&lt;/td&gt;
&lt;td&gt;&lt;code&gt;helm show readme podinfo/podinfo&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Render locally, no cluster&lt;/td&gt;
&lt;td&gt;&lt;code&gt;helm template ./myapp&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Render server-side, no install&lt;/td&gt;
&lt;td&gt;&lt;code&gt;helm install web ./myapp --dry-run --debug&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="releases"&gt;Releases&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Install&lt;/td&gt;
&lt;td&gt;&lt;code&gt;helm install web podinfo/podinfo&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Generated name&lt;/td&gt;
&lt;td&gt;&lt;code&gt;helm install podinfo/podinfo --generate-name&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Into a namespace, creating it&lt;/td&gt;
&lt;td&gt;&lt;code&gt;helm install web podinfo/podinfo -n dev --create-namespace&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Override on the command line&lt;/td&gt;
&lt;td&gt;&lt;code&gt;helm install web podinfo/podinfo --set replicaCount=3&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Override from a file&lt;/td&gt;
&lt;td&gt;&lt;code&gt;helm install web podinfo/podinfo -f my-values.yaml&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wait for readiness&lt;/td&gt;
&lt;td&gt;&lt;code&gt;helm install web podinfo/podinfo --wait --timeout 5m&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;List&lt;/td&gt;
&lt;td&gt;&lt;code&gt;helm list&lt;/code&gt; / &lt;code&gt;helm list -A&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;What is deployed&lt;/td&gt;
&lt;td&gt;&lt;code&gt;helm get manifest web&lt;/code&gt; / &lt;code&gt;helm get values web&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Upgrade&lt;/td&gt;
&lt;td&gt;&lt;code&gt;helm upgrade web podinfo/podinfo --set replicaCount=5&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Upgrade or install&lt;/td&gt;
&lt;td&gt;&lt;code&gt;helm upgrade --install web podinfo/podinfo&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;History&lt;/td&gt;
&lt;td&gt;&lt;code&gt;helm history web&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Roll back&lt;/td&gt;
&lt;td&gt;&lt;code&gt;helm rollback web 1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Uninstall&lt;/td&gt;
&lt;td&gt;&lt;code&gt;helm uninstall web&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Status&lt;/td&gt;
&lt;td&gt;&lt;code&gt;helm status web&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;code&gt;--set&lt;/code&gt; beats &lt;code&gt;-f&lt;/code&gt;, and a later &lt;code&gt;-f&lt;/code&gt; beats an earlier one.&lt;/p&gt;</description></item></channel></rss>