rig major updates
This commit is contained in:
@@ -16,7 +16,7 @@ endif
|
||||
help: ## list targets
|
||||
@grep -hE '^[a-z][a-z-]*:.*?##' $(MAKEFILE_LIST) | sed 's/:.*##/\t/' | expand -t16
|
||||
|
||||
deps: ## rigdeps.sh [detect|list|verify|fetch|install] (default detect)
|
||||
deps: ## rigdeps.sh [detect|list|verify|fetch|install|manifest|manifests] (default detect)
|
||||
bash $(HERE)rigdeps.sh $(or $(ARGS),detect)
|
||||
|
||||
mem: ## rigmini.sh [status|push|all|backup|restore] (default status)
|
||||
|
||||
@@ -8,7 +8,12 @@
|
||||
# `make selftest` fails while this file differs from what rig generates.
|
||||
|
||||
# ── from the libraries ──
|
||||
declare -- CONFIG_OVERRIDABLE=$'PROFILE CLUSTER K8S_VERSION KIND_CONFIG ADDONS\n REGISTRY_MODE INGRESS_MODE DNS_MODE TILT_PORT\n SOURCE ARCH DEPS_SOURCE HTTP_PORT HTTPS_PORT\n REGISTRY_PORT MANIFESTS_DIR'
|
||||
declare -- CONFIG_OVERRIDABLE=$'PROFILE OVERLAY CLUSTER K8S_VERSION KIND_CONFIG ADDONS\n REGISTRY_MODE INGRESS_MODE DNS_MODE TILT_PORT\n SOURCE ARCH DEPS_SOURCE HTTP_PORT HTTPS_PORT\n REGISTRY_PORT MANIFESTS_DIR'
|
||||
declare -- DEFAULT_OVERLAY="examples/starter"
|
||||
_abs_from_ctrl ()
|
||||
{
|
||||
( cd "$(_from_ctrl "$1")" 2> /dev/null && pwd )
|
||||
}
|
||||
_config_restore ()
|
||||
{
|
||||
local line;
|
||||
@@ -19,10 +24,25 @@ _config_restore ()
|
||||
done <<< "$1";
|
||||
return 0
|
||||
}
|
||||
_from_ctrl ()
|
||||
{
|
||||
case "$1" in
|
||||
/*)
|
||||
echo "$1"
|
||||
;;
|
||||
*)
|
||||
echo "../$1"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
default_cluster_name ()
|
||||
{
|
||||
local n;
|
||||
n=$(basename "$(cd .. && pwd)");
|
||||
if [ -n "${OVERLAY:-}" ]; then
|
||||
n=$(basename "$(_abs_from_ctrl "$OVERLAY_DIR")");
|
||||
else
|
||||
n=$(basename "$(cd .. && pwd)");
|
||||
fi;
|
||||
n=$(echo "$n" | tr '[:upper:]' '[:lower:]' | tr -c 'a-z0-9-' '-');
|
||||
n=$(echo "$n" | sed 's/^-*//; s/-*$//');
|
||||
echo "${n:-rig}"
|
||||
@@ -35,8 +55,11 @@ derive_port_base ()
|
||||
}
|
||||
render_kind_config ()
|
||||
{
|
||||
local host_workdir="${HOST_WORKDIR:-$(cd .. && pwd)}";
|
||||
sed -e "s|\${CLUSTER}|${CLUSTER}|g" -e "s|\${NODE_IMAGE}|${NODE_IMAGE}|g" -e "s|\${HTTP_PORT}|${HTTP_PORT}|g" -e "s|\${HOST_WORKDIR}|${host_workdir}|g" "$KIND_CONFIG"
|
||||
local host_workdir="${HOST_WORKDIR:-$(cd .. && pwd)}" overlay_dir="";
|
||||
if [ -n "$OVERLAY_DIR" ]; then
|
||||
overlay_dir=$(_abs_from_ctrl "$OVERLAY_DIR");
|
||||
fi;
|
||||
sed -e "s|\${CLUSTER}|${CLUSTER}|g" -e "s|\${NODE_IMAGE}|${NODE_IMAGE}|g" -e "s|\${HTTP_PORT}|${HTTP_PORT}|g" -e "s|\${HOST_WORKDIR}|${host_workdir}|g" -e "s|\${OVERLAY_DIR}|${overlay_dir}|g" "$KIND_CONFIG"
|
||||
}
|
||||
|
||||
# ── configuration, frozen for profile 'default' ──
|
||||
@@ -46,7 +69,8 @@ load_config() {
|
||||
if [ -n "${!k+x}" ]; then saved+="$k=$(printf '%q' "${!k}")"$'\n'; fi
|
||||
done
|
||||
declare -g ADDONS=""
|
||||
declare -gx AIRFLOW_IMAGE="apache/airflow:2.10.4"
|
||||
declare -gx CERT_MANAGER_MANIFEST_SHA256="5f6a499b8c1857d57f560f536e0dcc830914b45c420899fe7ad0692c8624e408"
|
||||
declare -gx CERT_MANAGER_MANIFEST_URL="https://github.com/cert-manager/cert-manager/releases/download/v1.21.1/cert-manager.yaml"
|
||||
declare -gx CERT_MANAGER_VERSION="v1.21.1"
|
||||
declare -g CLUSTER="rig"
|
||||
declare -gx COMPOSE_SHA256="db1889184726840f75c4f9c001048430d4f25b3be3cb084d3ddd762bc0aed576"
|
||||
@@ -71,8 +95,13 @@ load_config() {
|
||||
declare -gx KUBECTL_SHA256="ebbd080e7c2e275093b55915722043257eb24004363e20acb3c4d71919f88336"
|
||||
declare -gx KUBECTL_URL="https://dl.k8s.io/release/v1.36.3/bin/linux/amd64/kubectl"
|
||||
declare -gx KUBECTL_VERSION="v1.36.3"
|
||||
declare -g MANIFESTS_DIR="ctrl/k8s/overlays/dev"
|
||||
declare -g MANIFESTS_DIR="examples/starter/k8s/overlays/dev"
|
||||
declare -gx METALLB_MANIFEST_GIT_BLOB="7fbda334cc3ac0aaabdcb081af4f543feb3c2f9f"
|
||||
declare -gx METALLB_MANIFEST_SHA256="b0b9be2802f10aa32d45308b4457d06cde0c70544712c8d0cf5511657ffd2b69"
|
||||
declare -gx METALLB_MANIFEST_URL="https://raw.githubusercontent.com/metallb/metallb/v0.16.0/config/manifests/metallb-native.yaml"
|
||||
declare -gx METALLB_VERSION="v0.16.0"
|
||||
declare -gx METRICS_SERVER_MANIFEST_SHA256="1cec29a5267809306a2c6ec74a3e449abbb705b4a8beed0c8a1963910f72c79b"
|
||||
declare -gx METRICS_SERVER_MANIFEST_URL="https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.9.0/components.yaml"
|
||||
declare -gx METRICS_SERVER_VERSION="v0.9.0"
|
||||
declare -g NODES="1"
|
||||
declare -g NODE_IMAGE="kindest/node:v1.36.1@sha256:3489c7674813ba5d8b1a9977baea8a6e553784dab7b84759d1014dbd78f7ebd5"
|
||||
@@ -81,14 +110,12 @@ load_config() {
|
||||
declare -gx NODE_IMAGE_v1_35="kindest/node:v1.35.5@sha256:ce977ae6d65918d0b58a5f8b5e940429c2ce42fa3a5619ec2bbc60b949c0ac95"
|
||||
declare -gx NODE_IMAGE_v1_36="kindest/node:v1.36.1@sha256:3489c7674813ba5d8b1a9977baea8a6e553784dab7b84759d1014dbd78f7ebd5"
|
||||
declare -g NODE_MB="800"
|
||||
declare -gx POSTGRES_IMAGE="postgres:16-alpine"
|
||||
declare -g OVERLAY_DIR="examples/starter"
|
||||
declare -gx PROFILE="default"
|
||||
declare -g PROFILE_NAME="default"
|
||||
declare -gx REDIS_IMAGE="redis:7-alpine"
|
||||
declare -gx REGISTRY_IMAGE="registry:2"
|
||||
declare -g REGISTRY_MODE="local"
|
||||
declare -g REGISTRY_PORT="20313"
|
||||
declare -gx STUB_IMAGE="python:3.12-slim"
|
||||
declare -g TILT_PORT="20312"
|
||||
declare -gx TILT_SHA256="e9672b8a18d43501f35dcfe98465969a7db0e436b36cf0c50c7e6f8d40de5fe6"
|
||||
declare -gx TILT_URL="https://github.com/tilt-dev/tilt/releases/download/v0.37.6/tilt.0.37.6.linux.x86_64.tar.gz"
|
||||
@@ -100,7 +127,8 @@ load_config() {
|
||||
# ── ctrl/deps.sh ──
|
||||
# Toolchain installer: detect the host, install pinned tools into $OUT_BIN, report
|
||||
# host actions it will not perform (no sudo, no apt). Usually via `make deps`.
|
||||
# Usage: deps.sh [detect [all] | list | verify [core|dev] | fetch [core|dev] [--to DIR] | install [core|dev]]
|
||||
# Usage: deps.sh [detect [all] | list | verify [core|dev] | fetch [core|dev] [--to DIR] | install [core|dev]
|
||||
# | manifest NAME | manifests [--to DIR]]
|
||||
# Notes: docs/notes/deps.md
|
||||
|
||||
set -euo pipefail
|
||||
@@ -817,6 +845,51 @@ require_linux
|
||||
cmd="${1:-install}"
|
||||
[ $# -gt 0 ] && shift
|
||||
|
||||
# ── manifests rig's own addons apply ───────────────────────────────────────
|
||||
# Pinned (URL + SHA256), fetched through the same DEPS_SOURCE resolver as the
|
||||
# binaries and verified, then applied from disk: an offline machine needs no
|
||||
# network for them. Default home: vendor/manifests/ in rig's folder (gitignored).
|
||||
MANIFESTS_HOME="${MANIFESTS_HOME:-$(cd .. && pwd)/vendor/manifests}"
|
||||
BAKED_MANIFESTS="${BAKED_MANIFESTS:-/opt/rig/manifests}"
|
||||
MANIFEST_NAMES="METALLB CERT_MANAGER METRICS_SERVER"
|
||||
|
||||
manifest_path() { # NAME dir
|
||||
local v="${1}_VERSION"
|
||||
echo "$2/$(echo "$1" | tr 'A-Z_' 'a-z-')-${!v}.yaml"
|
||||
}
|
||||
|
||||
# Make one pinned manifest present and verified in dir; print only its path.
|
||||
fetch_manifest() { # NAME dir
|
||||
local name="$1" dir="$2" url_var="${1}_MANIFEST_URL" sha_var="${1}_MANIFEST_SHA256" file
|
||||
if [ -z "${!url_var:-}" ] || [ -z "${!sha_var:-}" ]; then
|
||||
echo "no pinned manifest for $name (${url_var} / ${sha_var} unset)" >&2
|
||||
exit 1
|
||||
fi
|
||||
file=$(manifest_path "$name" "$dir")
|
||||
if [ -f "$file" ] && [ "$($SHA "$file" | awk '{print $1}')" = "${!sha_var}" ]; then
|
||||
echo "$file"
|
||||
return
|
||||
fi
|
||||
mkdir -p "$dir"
|
||||
if [ "$DEPS_SOURCE" = baked ]; then
|
||||
cp "$(manifest_path "$name" "$BAKED_MANIFESTS")" "$file.tmp"
|
||||
else
|
||||
download "$(resolve_url "${!url_var}")" "$file.tmp"
|
||||
fi
|
||||
verify "$file.tmp" "${!sha_var}" "$name manifest"
|
||||
mv "$file.tmp" "$file"
|
||||
echo "$file"
|
||||
}
|
||||
|
||||
fetch_manifests() { # [--to DIR]
|
||||
local dest="$MANIFESTS_HOME" n
|
||||
if [ "${1:-}" = --to ]; then dest="$(abspath "${2:?--to needs a directory}")"; fi
|
||||
echo "fetching the addons' manifests into $dest (source: $DEPS_SOURCE)"
|
||||
for n in $MANIFEST_NAMES; do
|
||||
echo " $n $(fetch_manifest "$n" "$dest")"
|
||||
done
|
||||
}
|
||||
|
||||
# Baked mode copies binaries already in the image, so it needs no downloader.
|
||||
need_downloads() {
|
||||
require_amd64
|
||||
@@ -830,9 +903,13 @@ case "$cmd" in
|
||||
verify) verify_tools "${1:-dev}" ;;
|
||||
fetch) need_downloads; fetch "$@" ;;
|
||||
install) need_downloads; install "${1:-dev}" ;;
|
||||
*) echo "usage: $0 [detect [all]|list|verify|fetch|install]" >&2
|
||||
manifest) need_downloads
|
||||
fetch_manifest "${1:?usage: $0 manifest <METALLB|CERT_MANAGER|METRICS_SERVER>}" "$MANIFESTS_HOME" ;;
|
||||
manifests) need_downloads; fetch_manifests "$@" ;;
|
||||
*) echo "usage: $0 [detect [all]|list|verify|fetch|install|manifest NAME|manifests]" >&2
|
||||
echo " install [core|dev] (default dev)" >&2
|
||||
echo " fetch [core|dev] [--to DIR]" >&2
|
||||
echo " manifests [--to DIR] the addons' pinned manifests, verified" >&2
|
||||
echo " OUT_BIN=<dir> overrides the install directory" >&2
|
||||
exit 1 ;;
|
||||
esac
|
||||
|
||||
@@ -8,7 +8,12 @@
|
||||
# `make selftest` fails while this file differs from what rig generates.
|
||||
|
||||
# ── from the libraries ──
|
||||
declare -- CONFIG_OVERRIDABLE=$'PROFILE CLUSTER K8S_VERSION KIND_CONFIG ADDONS\n REGISTRY_MODE INGRESS_MODE DNS_MODE TILT_PORT\n SOURCE ARCH DEPS_SOURCE HTTP_PORT HTTPS_PORT\n REGISTRY_PORT MANIFESTS_DIR'
|
||||
declare -- CONFIG_OVERRIDABLE=$'PROFILE OVERLAY CLUSTER K8S_VERSION KIND_CONFIG ADDONS\n REGISTRY_MODE INGRESS_MODE DNS_MODE TILT_PORT\n SOURCE ARCH DEPS_SOURCE HTTP_PORT HTTPS_PORT\n REGISTRY_PORT MANIFESTS_DIR'
|
||||
declare -- DEFAULT_OVERLAY="examples/starter"
|
||||
_abs_from_ctrl ()
|
||||
{
|
||||
( cd "$(_from_ctrl "$1")" 2> /dev/null && pwd )
|
||||
}
|
||||
_config_restore ()
|
||||
{
|
||||
local line;
|
||||
@@ -19,10 +24,25 @@ _config_restore ()
|
||||
done <<< "$1";
|
||||
return 0
|
||||
}
|
||||
_from_ctrl ()
|
||||
{
|
||||
case "$1" in
|
||||
/*)
|
||||
echo "$1"
|
||||
;;
|
||||
*)
|
||||
echo "../$1"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
default_cluster_name ()
|
||||
{
|
||||
local n;
|
||||
n=$(basename "$(cd .. && pwd)");
|
||||
if [ -n "${OVERLAY:-}" ]; then
|
||||
n=$(basename "$(_abs_from_ctrl "$OVERLAY_DIR")");
|
||||
else
|
||||
n=$(basename "$(cd .. && pwd)");
|
||||
fi;
|
||||
n=$(echo "$n" | tr '[:upper:]' '[:lower:]' | tr -c 'a-z0-9-' '-');
|
||||
n=$(echo "$n" | sed 's/^-*//; s/-*$//');
|
||||
echo "${n:-rig}"
|
||||
@@ -35,8 +55,11 @@ derive_port_base ()
|
||||
}
|
||||
render_kind_config ()
|
||||
{
|
||||
local host_workdir="${HOST_WORKDIR:-$(cd .. && pwd)}";
|
||||
sed -e "s|\${CLUSTER}|${CLUSTER}|g" -e "s|\${NODE_IMAGE}|${NODE_IMAGE}|g" -e "s|\${HTTP_PORT}|${HTTP_PORT}|g" -e "s|\${HOST_WORKDIR}|${host_workdir}|g" "$KIND_CONFIG"
|
||||
local host_workdir="${HOST_WORKDIR:-$(cd .. && pwd)}" overlay_dir="";
|
||||
if [ -n "$OVERLAY_DIR" ]; then
|
||||
overlay_dir=$(_abs_from_ctrl "$OVERLAY_DIR");
|
||||
fi;
|
||||
sed -e "s|\${CLUSTER}|${CLUSTER}|g" -e "s|\${NODE_IMAGE}|${NODE_IMAGE}|g" -e "s|\${HTTP_PORT}|${HTTP_PORT}|g" -e "s|\${HOST_WORKDIR}|${host_workdir}|g" -e "s|\${OVERLAY_DIR}|${overlay_dir}|g" "$KIND_CONFIG"
|
||||
}
|
||||
|
||||
# ── configuration, frozen for profile 'default' ──
|
||||
@@ -46,7 +69,8 @@ load_config() {
|
||||
if [ -n "${!k+x}" ]; then saved+="$k=$(printf '%q' "${!k}")"$'\n'; fi
|
||||
done
|
||||
declare -g ADDONS=""
|
||||
declare -gx AIRFLOW_IMAGE="apache/airflow:2.10.4"
|
||||
declare -gx CERT_MANAGER_MANIFEST_SHA256="5f6a499b8c1857d57f560f536e0dcc830914b45c420899fe7ad0692c8624e408"
|
||||
declare -gx CERT_MANAGER_MANIFEST_URL="https://github.com/cert-manager/cert-manager/releases/download/v1.21.1/cert-manager.yaml"
|
||||
declare -gx CERT_MANAGER_VERSION="v1.21.1"
|
||||
declare -g CLUSTER="rig"
|
||||
declare -gx COMPOSE_SHA256="db1889184726840f75c4f9c001048430d4f25b3be3cb084d3ddd762bc0aed576"
|
||||
@@ -71,8 +95,13 @@ load_config() {
|
||||
declare -gx KUBECTL_SHA256="ebbd080e7c2e275093b55915722043257eb24004363e20acb3c4d71919f88336"
|
||||
declare -gx KUBECTL_URL="https://dl.k8s.io/release/v1.36.3/bin/linux/amd64/kubectl"
|
||||
declare -gx KUBECTL_VERSION="v1.36.3"
|
||||
declare -g MANIFESTS_DIR="ctrl/k8s/overlays/dev"
|
||||
declare -g MANIFESTS_DIR="examples/starter/k8s/overlays/dev"
|
||||
declare -gx METALLB_MANIFEST_GIT_BLOB="7fbda334cc3ac0aaabdcb081af4f543feb3c2f9f"
|
||||
declare -gx METALLB_MANIFEST_SHA256="b0b9be2802f10aa32d45308b4457d06cde0c70544712c8d0cf5511657ffd2b69"
|
||||
declare -gx METALLB_MANIFEST_URL="https://raw.githubusercontent.com/metallb/metallb/v0.16.0/config/manifests/metallb-native.yaml"
|
||||
declare -gx METALLB_VERSION="v0.16.0"
|
||||
declare -gx METRICS_SERVER_MANIFEST_SHA256="1cec29a5267809306a2c6ec74a3e449abbb705b4a8beed0c8a1963910f72c79b"
|
||||
declare -gx METRICS_SERVER_MANIFEST_URL="https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.9.0/components.yaml"
|
||||
declare -gx METRICS_SERVER_VERSION="v0.9.0"
|
||||
declare -g NODES="1"
|
||||
declare -g NODE_IMAGE="kindest/node:v1.36.1@sha256:3489c7674813ba5d8b1a9977baea8a6e553784dab7b84759d1014dbd78f7ebd5"
|
||||
@@ -81,14 +110,12 @@ load_config() {
|
||||
declare -gx NODE_IMAGE_v1_35="kindest/node:v1.35.5@sha256:ce977ae6d65918d0b58a5f8b5e940429c2ce42fa3a5619ec2bbc60b949c0ac95"
|
||||
declare -gx NODE_IMAGE_v1_36="kindest/node:v1.36.1@sha256:3489c7674813ba5d8b1a9977baea8a6e553784dab7b84759d1014dbd78f7ebd5"
|
||||
declare -g NODE_MB="800"
|
||||
declare -gx POSTGRES_IMAGE="postgres:16-alpine"
|
||||
declare -g OVERLAY_DIR="examples/starter"
|
||||
declare -gx PROFILE="default"
|
||||
declare -g PROFILE_NAME="default"
|
||||
declare -gx REDIS_IMAGE="redis:7-alpine"
|
||||
declare -gx REGISTRY_IMAGE="registry:2"
|
||||
declare -g REGISTRY_MODE="local"
|
||||
declare -g REGISTRY_PORT="20313"
|
||||
declare -gx STUB_IMAGE="python:3.12-slim"
|
||||
declare -g TILT_PORT="20312"
|
||||
declare -gx TILT_SHA256="e9672b8a18d43501f35dcfe98465969a7db0e436b36cf0c50c7e6f8d40de5fe6"
|
||||
declare -gx TILT_URL="https://github.com/tilt-dev/tilt/releases/download/v0.37.6/tilt.0.37.6.linux.x86_64.tar.gz"
|
||||
|
||||
Reference in New Issue
Block a user