73 lines
2.9 KiB
Bash
73 lines
2.9 KiB
Bash
#!/usr/bin/env bash
|
|
set -Eeuo pipefail
|
|
|
|
KUBECTL_VERSION="v1.34.0"
|
|
KIND_VERSION="v0.32.0"
|
|
KUBE_BENCH_VERSION="0.16.0"
|
|
|
|
if [[ "${EUID}" -ne 0 ]]; then
|
|
echo "Run this script as root inside the lab WSL distribution." >&2
|
|
exit 1
|
|
fi
|
|
|
|
cat >/etc/wsl.conf <<'EOF'
|
|
[boot]
|
|
systemd=true
|
|
|
|
[user]
|
|
default=root
|
|
EOF
|
|
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
apt-get update
|
|
apt-get install -y \
|
|
bash-completion ca-certificates conntrack curl dnsutils git gnupg iproute2 \
|
|
iptables iputils-ping jq less lsof man-db nano netcat-openbsd procps psmisc \
|
|
socat strace tcpdump tree vim wget yq
|
|
|
|
cat >/etc/profile.d/cks-lab.sh <<'EOF'
|
|
alias k=kubectl
|
|
complete -o default -F __start_kubectl k 2>/dev/null || true
|
|
EOF
|
|
|
|
install -m 0755 -d /etc/apt/keyrings
|
|
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
|
|
chmod a+r /etc/apt/keyrings/docker.asc
|
|
. /etc/os-release
|
|
cat >/etc/apt/sources.list.d/docker.sources <<EOF
|
|
Types: deb
|
|
URIs: https://download.docker.com/linux/ubuntu
|
|
Suites: ${UBUNTU_CODENAME:-$VERSION_CODENAME}
|
|
Components: stable
|
|
Architectures: $(dpkg --print-architecture)
|
|
Signed-By: /etc/apt/keyrings/docker.asc
|
|
EOF
|
|
apt-get update
|
|
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
|
|
|
tmp_dir="$(mktemp -d)"
|
|
trap 'rm -rf "$tmp_dir"' EXIT
|
|
|
|
curl -fsSLo "$tmp_dir/kubectl" "https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl"
|
|
curl -fsSLo "$tmp_dir/kubectl.sha256" "https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl.sha256"
|
|
printf '%s %s\n' "$(cat "$tmp_dir/kubectl.sha256")" "$tmp_dir/kubectl" | sha256sum --check --status
|
|
install -m 0755 "$tmp_dir/kubectl" /usr/local/bin/kubectl
|
|
|
|
curl -fsSLo "$tmp_dir/kind-linux-amd64" "https://kind.sigs.k8s.io/dl/${KIND_VERSION}/kind-linux-amd64"
|
|
curl -fsSLo "$tmp_dir/kind.sha256sum" "https://kind.sigs.k8s.io/dl/${KIND_VERSION}/kind-linux-amd64.sha256sum"
|
|
(cd "$tmp_dir" && sha256sum --check --status kind.sha256sum)
|
|
install -m 0755 "$tmp_dir/kind-linux-amd64" /usr/local/bin/kind
|
|
|
|
curl -fsSLo "$tmp_dir/kube-bench_${KUBE_BENCH_VERSION}_linux_amd64.tar.gz" \
|
|
"https://github.com/aquasecurity/kube-bench/releases/download/v${KUBE_BENCH_VERSION}/kube-bench_${KUBE_BENCH_VERSION}_linux_amd64.tar.gz"
|
|
curl -fsSLo "$tmp_dir/checksums.txt" \
|
|
"https://github.com/aquasecurity/kube-bench/releases/download/v${KUBE_BENCH_VERSION}/kube-bench_${KUBE_BENCH_VERSION}_checksums.txt"
|
|
(cd "$tmp_dir" && grep " kube-bench_${KUBE_BENCH_VERSION}_linux_amd64.tar.gz$" checksums.txt | sha256sum --check --status)
|
|
rm -rf /opt/cks-lab/tools/kube-bench
|
|
install -d /opt/cks-lab/tools/kube-bench
|
|
tar -xzf "$tmp_dir/kube-bench_${KUBE_BENCH_VERSION}_linux_amd64.tar.gz" -C /opt/cks-lab/tools/kube-bench
|
|
ln -sfn /opt/cks-lab/tools/kube-bench/kube-bench /usr/local/bin/kube-bench
|
|
|
|
printf 'Installed CKS command-line tools plus kubectl %s, Kind %s, and kube-bench %s.\n' \
|
|
"$KUBECTL_VERSION" "$KIND_VERSION" "$KUBE_BENCH_VERSION"
|