This repository has been archived on 2026-10-18. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
metallb-kubernetes/install.sh
T

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"