# shellcheck shell=bash # shellcheck source=scripts/shared/lib/source_only . "${BASH_SOURCE%/*}"/source_only ### Constants ### readonly SUBMARINER_BROKER_NS=submariner-k8s-broker readonly SUBMARINER_PSK=$(LC_CTYPE=C tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w 64 | head -n 1) ### Functions ### function deploytool_prereqs() { helm version } function setup_broker() { if kubectl get crd clusters.submariner.io > /dev/null 2>&1; then echo "Submariner CRDs already exist, skipping broker creation..." else echo "Installing submariner broker..." # shellcheck disable=SC2086 # Split on purpose helm install "${SUBMARINER_BROKER_NS}" ./submariner-k8s-broker \ --create-namespace \ --kube-context "${cluster}" \ --namespace "${SUBMARINER_BROKER_NS}" \ ${deploytool_broker_args} fi submariner_broker_url=$(kubectl -n default get endpoints kubernetes -o jsonpath="{.subsets[0].addresses[0].ip}:{.subsets[0].ports[?(@.name=='https')].port}") submariner_broker_ca=$(kubectl -n "${SUBMARINER_BROKER_NS}" get secrets "${SUBMARINER_BROKER_NS}-client-token" -o jsonpath="{.data['ca\.crt']}") submariner_broker_token=$(kubectl -n "${SUBMARINER_BROKER_NS}" get secrets "${SUBMARINER_BROKER_NS}-client-token" -o jsonpath="{.data.token}"|base64 --decode) } function helm_install_subm() { local crd_create=false [[ "${cluster}" = "${broker}" ]] || crd_create=true if kubectl wait --for=condition=Ready pods -l app=submariner-operator -n "${SUBM_NS}" --timeout=60s > /dev/null 2>&1; then echo "Submariner already installed, skipping installation..." return fi echo "Installing Submariner..." # shellcheck disable=SC2086 # Split on purpose helm --kube-context "${cluster}" install submariner-operator \ ./submariner-operator \ --create-namespace \ --namespace "${SUBM_NS}" \ --set ipsec.psk="${SUBMARINER_PSK}" \ --set broker.server="${submariner_broker_url}" \ --set broker.token="${submariner_broker_token}" \ --set broker.namespace="${SUBMARINER_BROKER_NS}" \ --set broker.ca="${submariner_broker_ca}" \ --set broker.globalnet="${globalnet}" \ --set submariner.serviceDiscovery="${service_discovery}" \ --set submariner.cableDriver="${cable_driver}" \ --set submariner.clusterId="${cluster}" \ --set submariner.clusterCidr="${cluster_CIDRs[$cluster]}" \ --set submariner.serviceCidr="${service_CIDRs[$cluster]}" \ --set submariner.globalCidr="${global_CIDRs[$cluster]}" \ --set serviceAccounts.globalnet.create="${globalnet}" \ --set serviceAccounts.lighthouseAgent.create="${service_discovery}" \ --set serviceAccounts.lighthouseCoreDns.create="${service_discovery}" \ --set submariner.natEnabled="false" \ --set operator.image.repository="localhost:5000/submariner-operator" \ --set operator.image.tag="local" \ --set operator.image.pullPolicy="IfNotPresent" \ --set submariner.images.repository="localhost:5000" \ --set submariner.images.tag="local" \ --set brokercrds.create="${crd_create}" \ ${deploytool_submariner_args} } function install_subm_all_clusters() { run_subm_clusters helm_install_subm }