mirror of
https://github.com/submariner-io/submariner-charts.git
synced 2026-09-20 20:20:35 +00:00
The submariner-operator Helm chart deploys Submariner using the Submariner operator: it deploys the CRDs, roles, and SAs required to run the operator and Submariner, then pushes a Submariner CR to instruct the operator to deploy Submariner. This patch also adds a Makefile to validate the deployments; run make deploy to test the Helm charts (this will bring up two clusters, install the broker on one of them and the operator on both, and end with a connectivity test). Fixes: #17 Signed-off-by: Stephen Kitt <skitt@redhat.com>
85 lines
3.7 KiB
Plaintext
85 lines
3.7 KiB
Plaintext
# 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 install_helm() {
|
|
if kubectl -n kube-system rollout status deploy/tiller-deploy --timeout=3s > /dev/null 2>&1; then
|
|
echo "Helm already installed, skipping helm installation..."
|
|
return
|
|
fi
|
|
|
|
echo "Installing helm..."
|
|
kubectl -n kube-system create serviceaccount tiller
|
|
kubectl create clusterrolebinding tiller --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
|
|
helm --kube-context "${cluster}" init --service-account tiller
|
|
kubectl -n kube-system rollout status deploy/tiller-deploy --timeout=30s
|
|
}
|
|
|
|
function deploytool_prereqs() {
|
|
helm init --client-only
|
|
run_all_clusters install_helm
|
|
}
|
|
|
|
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-k8s-broker \
|
|
--kube-context "${cluster}" \
|
|
--name "${SUBMARINER_BROKER_NS}" \
|
|
--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 -o jsonpath="{.items[?(@.metadata.annotations['kubernetes\.io/service-account\.name']=='${SUBMARINER_BROKER_NS}-client')].data['ca\.crt']}")
|
|
submariner_broker_token=$(kubectl -n "${SUBMARINER_BROKER_NS}" get secrets -o jsonpath="{.items[?(@.metadata.annotations['kubernetes\.io/service-account\.name']=='${SUBMARINER_BROKER_NS}-client')].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 \
|
|
--name submariner-operator \
|
|
--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 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 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
|
|
}
|