Archived
38 lines
1.3 KiB
Bash
Executable File
38 lines
1.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -eu
|
|
|
|
METALLB_VERSION=v0.16.0
|
|
METALLB_MANIFEST_URL="https://raw.githubusercontent.com/metallb/metallb/$METALLB_VERSION/config/manifests/metallb-native.yaml"
|
|
METALLB_MANIFEST_SHA256=b0b9be2802f10aa32d45308b4457d06cde0c70544712c8d0cf5511657ffd2b69
|
|
NAMESPACE=metallb-system
|
|
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
|
|
|
|
for command in curl kubectl sha256sum; do
|
|
if ! command -v "$command" >/dev/null 2>&1; then
|
|
echo "Required command not found: $command" >&2
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
UPSTREAM_MANIFEST=$(mktemp)
|
|
trap 'rm -f "$UPSTREAM_MANIFEST"' EXIT HUP INT TERM
|
|
|
|
curl --fail --silent --show-error --location \
|
|
--output "$UPSTREAM_MANIFEST" "$METALLB_MANIFEST_URL"
|
|
printf '%s %s\n' "$METALLB_MANIFEST_SHA256" "$UPSTREAM_MANIFEST" \
|
|
| sha256sum --check
|
|
|
|
kubectl apply --dry-run=server --validate=false \
|
|
--filename "$UPSTREAM_MANIFEST"
|
|
kubectl apply --validate=false --filename "$UPSTREAM_MANIFEST"
|
|
|
|
kubectl wait --for=condition=Available deployment/controller \
|
|
--namespace "$NAMESPACE" --timeout=5m
|
|
kubectl rollout status daemonset/speaker \
|
|
--namespace "$NAMESPACE" --timeout=5m
|
|
|
|
kubectl apply --dry-run=server --validate=false \
|
|
--filename "$SCRIPT_DIR/metallb.yaml"
|
|
kubectl apply --validate=false --filename "$SCRIPT_DIR/metallb.yaml"
|