#!/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"