diff --git a/hack/common.sh b/hack/common.sh index 7d4046a..14b6fdb 100644 --- a/hack/common.sh +++ b/hack/common.sh @@ -1,34 +1,18 @@ #!/bin/bash -function docker_bridge_cidr() { - docker network inspect -f json kind | jq -r '.[0].IPAM.Config[] | select(.Subnet | contains(":") | not) | .Subnet' +function docker_bridge_base_cidr() { + local DOCKER_CIDR=$(docker network inspect -f json kind | jq -r '.[0].IPAM.Config[] | select(.Subnet | contains(":") | not) | .Subnet') + echo $DOCKER_CIDR | cut -d'.' -f1-2 } -function metallb_cidr() { - CLUSTER_ID="${1}" - NET_NUM=$((1024 - $CLUSTER_ID)) - BRIDGE_CIDR=$(docker_bridge_cidr "${CLUSTER_ID}") - echo "cidrsubnet(\"$BRIDGE_CIDR\", 10, $NET_NUM)" | terraform console | sed 's/"//g' +function metallb_address_cidr() { + local CLUSTER_ID=$1 + local DOCKER_BASE_CIDR=$(docker_bridge_base_cidr) + echo "$DOCKER_BASE_CIDR.$((250+$CLUSTER_ID)).250/28" } -function host_min() { - CIDR="${1}" - echo "cidrhost(\"$CIDR\", 1)" | terraform console | sed 's/"//g' -} - -function host_max() { - CIDR="${1}" - echo "cidrhost(\"$CIDR\", -2)" | terraform console | sed 's/"//g' -} - -function metallb_host_min() { - CLUSTER_ID="${1}" - METALLB_CIDR=$(metallb_cidr "${CLUSTER_ID}") - host_min "$METALLB_CIDR" -} - -function metallb_host_max() { - CLUSTER_ID="${1}" - METALLB_CIDR=$(metallb_cidr "${CLUSTER_ID}") - host_max "$METALLB_CIDR" +function x_pdb_address() { + local CLUSTER_ID=$1 + local DOCKER_BASE_CIDR=$(docker_bridge_base_cidr) + echo "$DOCKER_BASE_CIDR.$((250+$CLUSTER_ID)).251" } diff --git a/hack/env/metallb.yaml b/hack/env/metallb.yaml index 2b3dd4c..fef9aab 100644 --- a/hack/env/metallb.yaml +++ b/hack/env/metallb.yaml @@ -5,10 +5,10 @@ metadata: namespace: metallb-system spec: addresses: - - ${METALLB_HOST_MIN}-${METALLB_HOST_MAX} + - ${METALLB_ADDRESS_CIDR} --- apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name: empty - namespace: metallb-system \ No newline at end of file + namespace: metallb-system diff --git a/hack/install-metallb.sh b/hack/install-metallb.sh index 97a0023..012b2b7 100755 --- a/hack/install-metallb.sh +++ b/hack/install-metallb.sh @@ -2,21 +2,13 @@ set -e set -o pipefail -CONTEXT="${1}" -CLUSTER="${2}" +CONTEXT=$1 +CLUSTER=$2 source ./hack/common.sh -# We expect a x.x.x.x/16 on the docker network bridge, -# and we need to have a /26 of that and assign it to metallb. -# Because we need non-overlapping ip ranges on metallb we use the cluster number (1, 2, 3) -# to calculate the last /26 subnets of that /16 range. -# cluster=1 gets the last /26 -# cluster=2 gets the second to last /26 -# etc. etc. -export METALLB_HOST_MIN=$(metallb_host_min "$CLUSTER") -export METALLB_HOST_MAX=$(metallb_host_max "$CLUSTER") -echo "using metallb range $METALLB_HOST_MIN-$METALLB_HOST_MAX" +export METALLB_ADDRESS_CIDR=$(metallb_address_cidr $CLUSTER) +echo "Using MetalLB Address ${METALLB_ADDRESS_CIDR}" kubectl apply --wait=true -f ./hack/env/metallb-native.yaml --context "${CONTEXT}" kubectl wait deployment -n metallb-system controller --for condition=Available=True --timeout=90s --context "${CONTEXT}" diff --git a/hack/install-xpdb.sh b/hack/install-xpdb.sh index 04a0156..0c1b265 100755 --- a/hack/install-xpdb.sh +++ b/hack/install-xpdb.sh @@ -13,7 +13,7 @@ source ./hack/common.sh this_address="" remote_endpoints="" for i in 1 2 3; do - METALLB_HOST_MIN=$(metallb_host_min $i) + METALLB_HOST_MIN=$(x_pdb_address $i) if [[ "$i" -eq "$CLUSTER" ]]; then this_address="$METALLB_HOST_MIN" continue