83 lines
2.7 KiB
Shell
Executable file
83 lines
2.7 KiB
Shell
Executable file
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
|
source "$ROOT/tests/kind/lib.sh"
|
|
|
|
mkdir -p "$RUNTIME"
|
|
rm -rf "$RUNTIME/image-archives"
|
|
mkdir -p "$RUNTIME/image-archives"
|
|
USER_KUBECONFIG_BEFORE="$(user_kubeconfig_digest)"
|
|
SUCCEEDED=false
|
|
|
|
cleanup() {
|
|
local status=$?
|
|
trap - EXIT INT TERM
|
|
if [[ "${REMORA_TESTBED_RETAIN:-0}" = 1 ]] && [[ "$SUCCEEDED" != true ]]; then
|
|
printf 'retained kubeconfig: %s\n' "$KUBECONFIG_PATH"
|
|
printf 'retained context: %s\n' "$CONTEXT"
|
|
exit "$status"
|
|
fi
|
|
if [[ -n "${REMORA_REAL_NERDCTL:-}" ]]; then
|
|
delete_cluster || status=1
|
|
remove_runtime_namespace || status=1
|
|
fi
|
|
rm -rf "$RUNTIME/image-archives" || status=1
|
|
rm -f "$KUBECONFIG_PATH" "$RUNTIME/dependencies.yaml" "$RUNTIME/probe.yaml" || status=1
|
|
if [[ "$(user_kubeconfig_digest)" != "$USER_KUBECONFIG_BEFORE" ]]; then
|
|
printf 'user kubeconfig changed unexpectedly\n' >&2
|
|
status=1
|
|
fi
|
|
if [[ "$status" = 0 ]] && [[ "$SUCCEEDED" = true ]]; then
|
|
printf 'WP-02 hermetic dependency testbed passed\n'
|
|
fi
|
|
exit "$status"
|
|
}
|
|
|
|
trap cleanup EXIT INT TERM
|
|
|
|
prepare_tools
|
|
prepare_provider
|
|
|
|
"$BIN/kind" create cluster \
|
|
--name "$CLUSTER" \
|
|
--image "$NODE_IMAGE" \
|
|
--config "$TESTBED/cluster.yaml" \
|
|
--kubeconfig "$KUBECONFIG_PATH" \
|
|
--wait 180s
|
|
|
|
POSTGRES_LOCAL_IMAGE="$(load_external_image postgres "$POSTGRES_IMAGE")"
|
|
REDIS_LOCAL_IMAGE="$(load_external_image redis "$REDIS_IMAGE")"
|
|
DRAGONFLY_LOCAL_IMAGE="$(load_external_image dragonfly "$DRAGONFLY_IMAGE")"
|
|
VAULT_LOCAL_IMAGE="$(load_external_image vault "$VAULT_IMAGE")"
|
|
KEYCLOAK_LOCAL_IMAGE="$(load_external_image keycloak "$KEYCLOAK_IMAGE")"
|
|
ZITADEL_LOCAL_IMAGE="$(load_external_image zitadel "$ZITADEL_IMAGE")"
|
|
GARAGE_LOCAL_IMAGE="$(load_external_image garage "$GARAGE_IMAGE")"
|
|
VERSITYGW_LOCAL_IMAGE="$(load_external_image versitygw "$VERSITYGW_IMAGE")"
|
|
COREDNS_LOCAL_IMAGE="$(load_external_image coredns "$COREDNS_IMAGE")"
|
|
CURL_LOCAL_IMAGE="$(load_external_image curl "$CURL_IMAGE")"
|
|
AWS_CLI_LOCAL_IMAGE="$(load_external_image aws-cli "$AWS_CLI_IMAGE")"
|
|
render_manifests \
|
|
"$POSTGRES_LOCAL_IMAGE" \
|
|
"$REDIS_LOCAL_IMAGE" \
|
|
"$DRAGONFLY_LOCAL_IMAGE" \
|
|
"$VAULT_LOCAL_IMAGE" \
|
|
"$KEYCLOAK_LOCAL_IMAGE" \
|
|
"$ZITADEL_LOCAL_IMAGE" \
|
|
"$GARAGE_LOCAL_IMAGE" \
|
|
"$VERSITYGW_LOCAL_IMAGE" \
|
|
"$COREDNS_LOCAL_IMAGE" \
|
|
"$CURL_LOCAL_IMAGE" \
|
|
"$AWS_CLI_LOCAL_IMAGE"
|
|
|
|
kube apply --filename "$RUNTIME/dependencies.yaml"
|
|
for deployment in postgres redis dragonfly vault keycloak zitadel garage versitygw controlled-dns; do
|
|
kube --namespace remora-testbed rollout status "deployment/$deployment" --timeout 240s
|
|
done
|
|
|
|
kube apply --filename "$RUNTIME/probe.yaml"
|
|
for job in state-probe oidc-probe garage-probe versitygw-probe; do
|
|
wait_for_job "$job"
|
|
done
|
|
|
|
SUCCEEDED=true
|