Skip to content

Instantly share code, notes, and snippets.

View Oats87's full-sized avatar

Chris Kim Oats87

View GitHub Profile
@Oats87
Oats87 / setup-rancher-run-env.sh
Last active January 29, 2024 22:57
Create a run.env file that can be used for running Rancher in an IDE
set -x;
if ! command -v rancher-machine &> /dev/null; then
echo "rancher-machine must be in your PATH";
exit 1;
fi;
RDIR=$(pwd)/local-run-data;
mkdir -p $RDIR;
: > run.env;
echo "CATTLE_DEV_MODE=30" >> run.env;
eval "$(grep '^ENV CATTLE_SYSTEM_AGENT' package/Dockerfile | awk '{print "export " $2 "=" $3}')";
@Oats87
Oats87 / gist:10b93fc13d57b14660a7bc3cc1d1acea
Created June 22, 2023 19:00
Patch for conditions on infrastructuremachine
kubectl -n fleet-default patch vmwarevspheremachine <INFRAMACHINE> --subresource=status --type=json -p='[{"op": "replace", "path": "/status/conditions", "value":[{"type":"CreateJob","status":"True"},{"type":"Ready","status":"True"}]}]'
@Oats87
Oats87 / parse-provisioning-tests-debug-data.sh
Last active May 10, 2023 20:46
This is a WIP attempt to write a parsing file that can take the drone logs download of a provisioning-tests failure and spit out the information in an easy-to-digest format.
#!/bin/sh
FILE=$1
if [ -z "${FILE}" ]; then
echo "A file must be specified"
exit 1
fi
BLOB=$(cat ${FILE} | grep -A 1 "wait failed on" | grep -v "wait failed on")
@Oats87
Oats87 / debug.yaml
Created May 9, 2023 19:23
drop-in-debug.yaml
kube-apiserver-arg+: "v=6"
kube-controller-manager-arg+: "v=6"
kube-scheduler-arg+: "v=6"
kubelet-arg+: "v=6"
debug: "true"
package systemtemplate
import (
"bytes"
"crypto/sha256"
"encoding/hex"
"encoding/json"
"fmt"
"strings"
"testing"
@Oats87
Oats87 / diff-yaml.sh
Created April 18, 2023 20:03
This requires `yq`, `diff`, and `bash`
#!/bin/bash
FILE=${1:-0}
if [ "${FILE}" = "0" ]; then
echo "need to specify a file"
exit 1
fi
fileNo=$(ls $FILE-split | wc -l | awk '{print $1}')
@Oats87
Oats87 / get-init-machine-for-cluster.sh
Created April 11, 2023 15:53
Get the init machine for a managed K3s/RKE2 cluster in Rancher. Requires jq
CLUSTER_NAME="CLUSTER-NAME"; kubectl get rkebootstrap -n fleet-default $(kubectl get secrets -n fleet-default --field-selector=type=rke.cattle.io/machine-plan -l cluster.x-k8s.io/cluster-name="$CLUSTER_NAME",rke.cattle.io/init-node=true -o json | jq -r '.items[0].metadata.ownerReferences[0].name') -o json | jq -r '.metadata.ownerReferences[0].name'
@Oats87
Oats87 / collect.sh
Created July 7, 2022 16:18
Collect pprof for Rancher in K8s
#!/bin/sh
for pod in $(kubectl get pods --no-headers -l app=rancher -n cattle-system | cut -d ' ' -f1); do
echo Collecting pprof information for $pod - this will take some time.
kubectl -n cattle-system exec $pod -c rancher -- curl -s http://localhost:6060/debug/pprof/profile -o profile;
kubectl -n cattle-system cp $pod:profile pprof-$pod-profile -c rancher;
kubectl -n cattle-system exec $pod -c rancher -- curl -s http://localhost:6060/debug/pprof/goroutine -o goroutine;
kubectl -n cattle-system cp $pod:goroutine pprof-$pod-goroutine -c rancher;
kubectl -n cattle-system exec $pod -c rancher -- curl -s http://localhost:6060/debug/pprof/heap -o heap;
kubectl -n cattle-system cp $pod:heap pprof-$pod-heap -c rancher;
kubectl -n cattle-system exec $pod -c rancher -- curl -s http://localhost:6060/debug/pprof/threadcreate -o threadcreate;
crictl -r /var/run/k3s/containerd/containerd.sock exec -it $(crictl -r /var/run/k3s/containerd/containerd.sock ps | grep etcd | awk '{print $1}') /bin/bash
export KUBECONFIG=/etc/rancher/rke2/rke2.yaml; export PATH=$PATH:/var/lib/rancher/rke2/bin