@@ -3,14 +3,24 @@ set -e -u -o pipefail
3
3
4
4
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
5
5
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] "
8
8
exit 1
9
9
fi
10
10
11
11
CLUSTER=$1
12
12
VERSION=$2
13
13
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
14
24
15
25
# load remote images
16
26
if [[ " ${VERSION} " == " 3.7.8" ]] ; then
66
76
exit 1
67
77
fi
68
78
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
73
88
74
89
# 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
96
106
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 \
98
130
--set postgresql.enabled=" false" \
99
131
--set externalDatabase.host=" netbox-db.${NAMESPACE} .svc.cluster.local" \
100
132
--set externalDatabase.existingSecretName=" netbox.netbox-db.credentials.postgresql.acid.zalan.do" \
@@ -106,12 +138,12 @@ helm upgrade --install --namespace="${NAMESPACE}" netbox \
106
138
--set resources.limits.memory=" 2Gi" \
107
139
${NETBOX_HELM_CHART}
108
140
109
- kubectl rollout status --namespace=" ${NAMESPACE} " deployment netbox
141
+ ${KUBECTL} rollout status --namespace=" ${NAMESPACE} " deployment netbox
110
142
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
115
147
116
148
# clean up
117
149
rm $( dirname " $0 " ) /load-data-job/load-data.sh
0 commit comments