35 lines
1.1 KiB
Bash
Executable File
35 lines
1.1 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"
|
|
NAMESPACE=metallb-system
|
|
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
|
|
|
|
for command in curl kubectl; 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"
|
|
|
|
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"
|