1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/env bash
# Installs knotless-run, its scoped-kubeconfig helper and the systemd units.
# Usage: sudo deploy/install.sh /path/to/knotless-run
set -euo pipefail
BINARY=${1:-/usr/local/bin/knotless-run}
HERE=$(cd "$(dirname "$0")" && pwd)
ROOT=$(cd "$HERE/.." && pwd)
if [ "$(id -u)" != 0 ]; then
echo "install.sh: run as root" >&2
exit 2
fi
if [ ! -x "$BINARY" ]; then
echo "install.sh: $BINARY is not executable" >&2
exit 2
fi
id knotless >/dev/null 2>&1 || useradd --system --home /var/lib/knotless --shell /usr/sbin/nologin knotless
install -d -m 0755 /etc/knotless
install -d -m 0750 -o knotless -g knotless /var/lib/knotless
install -m 0755 "$BINARY" /usr/local/bin/knotless-run
install -m 0755 "$ROOT/scripts/scoped-kubeconfig.sh" /usr/local/bin/knotless-scoped-kubeconfig
install -m 0755 "$ROOT/scripts/refresh-kubeconfig.sh" /usr/local/bin/knotless-refresh-kubeconfig
install -m 0644 "$HERE/knotless-run.service" /etc/systemd/system/
install -m 0644 "$HERE/knotless-refresh-kubeconfig.service" /etc/systemd/system/
install -m 0644 "$HERE/knotless-refresh-kubeconfig.timer" /etc/systemd/system/
if [ ! -e /etc/knotless/env ]; then
install -m 0640 -o root -g knotless "$HERE/knotless-run.env.example" /etc/knotless/env
echo "edit /etc/knotless/env, put the scoped kubeconfig at /etc/knotless/tenant.kubeconfig, and the admin one at /etc/knotless/admin.kubeconfig"
fi
systemctl daemon-reload
systemctl enable knotless-run.service knotless-refresh-kubeconfig.timer
echo "installed; start with: systemctl start knotless-run.service && systemctl start knotless-refresh-kubeconfig.timer"