mirror of
https://github.com/submariner-io/submariner-charts.git
synced 2026-09-20 22:40:34 +00:00
Add an operator Helm chart
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>
This commit is contained in:
committed by
Miguel Angel Ajo Pelayo
parent
c128fb42c5
commit
96ff45c2f8
+84
@@ -0,0 +1,84 @@
|
||||
# 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
|
||||
}
|
||||
Reference in New Issue
Block a user