Skip to content

Commit ddc233f

Browse files
author
Pablo Garcia Miranda
committed
Adapting deploy-netbox.sh to a vCluster deployment
1 parent d15dc18 commit ddc233f

File tree

1 file changed

+65
-33
lines changed

1 file changed

+65
-33
lines changed

kind/deploy-netbox.sh

+65-33
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,24 @@ set -e -u -o pipefail
33

44
NETBOX_HELM_CHART="https://github.com/netbox-community/netbox-chart/releases/download/netbox-5.0.0-beta.169/netbox-5.0.0-beta.169.tgz" # default value
55

6-
if [[ $# -ne 3 ]]; then
7-
echo "Usage: $0 <CLUSTER> <VERSION> <NAMESPACE>"
6+
if [[ $# -lt 3 || $# -gt 4 ]]; then
7+
echo "Usage: $0 <CLUSTER> <VERSION> <NAMESPACE> [--vcluster]"
88
exit 1
99
fi
1010

1111
CLUSTER=$1
1212
VERSION=$2
1313
NAMESPACE=$3
14+
VCLUSTER_MODE=${4:-}
15+
16+
# Choose kubectl and helm commands depending if we run on vCluster
17+
if [[ "$VCLUSTER_MODE" == "--vcluster" ]]; then
18+
KUBECTL="vcluster connect ${CLUSTER} -n ${NAMESPACE} -- kubectl"
19+
HELM="vcluster connect ${CLUSTER} -n ${NAMESPACE} -- helm"
20+
else
21+
KUBECTL="kubectl"
22+
HELM="helm"
23+
fi
1424

1525
# load remote images
1626
if [[ "${VERSION}" == "3.7.8" ]] ;then
@@ -66,35 +76,57 @@ else
6676
exit 1
6777
fi
6878

69-
for img in "${Remote_Images[@]}"; do
70-
docker pull "$img"
71-
kind load docker-image "$img" --name "${CLUSTER}"
72-
done
79+
if [[ "$VCLUSTER_MODE" == "--vcluster" ]]; then
80+
echo "[Running in vCluster mode] skipping docker pull and kind load for remote images."
81+
else
82+
echo "[Running in Kind mode] pulling and loading remote images into kind cluster..."
83+
for img in "${Remote_Images[@]}"; do
84+
docker pull "$img"
85+
kind load docker-image "$img" --name "${CLUSTER}"
86+
done
87+
fi
7388

7489
# build image for loading local data via NetBox API
75-
cd ./kind/load-data-job && docker build -t netbox-load-local-data:1.0 --load --no-cache --progress=plain -f ./dockerfile . && cd -
76-
77-
# load local images
78-
declare -a Local_Images=( \
79-
"netbox-load-local-data:1.0" \
80-
)
81-
for img in "${Local_Images[@]}"; do
82-
kind load docker-image "$img" --name "${CLUSTER}"
83-
done
84-
85-
# install helm charts
86-
helm upgrade --install --namespace="${NAMESPACE}" postgres-operator \
87-
https://opensource.zalando.com/postgres-operator/charts/postgres-operator/postgres-operator-1.12.2.tgz
88-
89-
kubectl apply --namespace="${NAMESPACE}" -f "$(dirname "$0")/netbox-db.yaml"
90-
kubectl wait --namespace="${NAMESPACE}" --timeout=600s --for=jsonpath='{.status.PostgresClusterStatus}'=Running postgresql/netbox-db
91-
92-
kubectl create configmap --namespace="${NAMESPACE}" netbox-demo-data-load-job-scripts --from-file="$(dirname "$0")/load-data-job" -o yaml --dry-run=client | kubectl apply -f -
93-
kubectl apply --namespace="${NAMESPACE}" -f "$(dirname "$0")/load-data-job.yaml"
94-
kubectl wait --namespace="${NAMESPACE}" --timeout=600s --for=condition=complete job/netbox-demo-data-load-job
95-
kubectl delete configmap --namespace="${NAMESPACE}" netbox-demo-data-load-job-scripts
90+
cd ./kind/load-data-job
91+
docker build -t netbox-load-local-data:1.0 --load --no-cache --progress=plain -f ./dockerfile .
92+
cd -
93+
94+
# Load local images into Kind only if not vCluster
95+
if [[ "$VCLUSTER_MODE" != "--vcluster" ]]; then
96+
echo "Loading local images into kind cluster..."
97+
declare -a Local_Images=( \
98+
"netbox-load-local-data:1.0" \
99+
)
100+
for img in "${Local_Images[@]}"; do
101+
kind load docker-image "$img" --name "${CLUSTER}"
102+
done
103+
else
104+
echo "Skipping local image loading into Kind (vCluster mode)."
105+
fi
96106

97-
helm upgrade --install --namespace="${NAMESPACE}" netbox \
107+
# Install Postgres Operator
108+
${HELM} upgrade --install postgres-operator \
109+
--namespace="${NAMESPACE}" \
110+
--create-namespace \
111+
--set podPriorityClassName.create=false \
112+
--set podServiceAccount.name="postgres-pod-${NAMESPACE}" \
113+
--set serviceAccount.name="postgres-operator-${NAMESPACE}" \
114+
https://opensource.zalando.com/postgres-operator/charts/postgres-operator/postgres-operator-1.12.2.tgz
115+
116+
# Deploy the database
117+
${KUBECTL} apply --namespace="${NAMESPACE}" -f "$(dirname "$0")/netbox-db.yaml"
118+
${KUBECTL} wait --namespace="${NAMESPACE}" --timeout=600s --for=jsonpath='{.status.PostgresClusterStatus}'=Running postgresql/netbox-db
119+
120+
# Load demo data
121+
${KUBECTL} create configmap --namespace="${NAMESPACE}" netbox-demo-data-load-job-scripts --from-file="$(dirname "$0")/load-data-job" -o yaml --dry-run=client | ${KUBECTL} apply -f -
122+
${KUBECTL} apply --namespace="${NAMESPACE}" -f "$(dirname "$0")/load-data-job.yaml"
123+
${KUBECTL} wait --namespace="${NAMESPACE}" --timeout=600s --for=condition=complete job/netbox-demo-data-load-job
124+
${KUBECTL} delete configmap --namespace="${NAMESPACE}" netbox-demo-data-load-job-scripts
125+
126+
# Install NetBox
127+
${HELM} upgrade --install netbox \
128+
--namespace="${NAMESPACE}" \
129+
--create-namespace \
98130
--set postgresql.enabled="false" \
99131
--set externalDatabase.host="netbox-db.${NAMESPACE}.svc.cluster.local" \
100132
--set externalDatabase.existingSecretName="netbox.netbox-db.credentials.postgresql.acid.zalan.do" \
@@ -106,12 +138,12 @@ helm upgrade --install --namespace="${NAMESPACE}" netbox \
106138
--set resources.limits.memory="2Gi" \
107139
${NETBOX_HELM_CHART}
108140

109-
kubectl rollout status --namespace="${NAMESPACE}" deployment netbox
141+
${KUBECTL} rollout status --namespace="${NAMESPACE}" deployment netbox
110142

111-
# load local data
112-
kubectl create job netbox-load-local-data --image=netbox-load-local-data:1.0
113-
kubectl wait --namespace="${NAMESPACE}" --timeout=600s --for=condition=complete job/netbox-load-local-data
114-
docker rmi netbox-load-local-data:1.0
143+
# Load local data
144+
${KUBECTL} delete job netbox-load-local-data --namespace="${NAMESPACE}" --ignore-not-found
145+
${KUBECTL} create job netbox-load-local-data --namespace="${NAMESPACE}" --image=netbox-load-local-data:1.0
146+
${KUBECTL} wait --namespace="${NAMESPACE}" --timeout=600s --for=condition=complete job/netbox-load-local-data
115147

116148
# clean up
117149
rm $(dirname "$0")/load-data-job/load-data.sh

0 commit comments

Comments
 (0)