1010
1111set -euo pipefail
1212
13+ NAMESPACE=" "
14+
1315instance=" "
1416username=" "
1517password=" "
1618service=" "
1719
1820usage () {
19- usage=$( cat << -END
21+ usage=$(
22+ cat << -END
2023USAGE:
2124 Install (latest released) RabbitMQ Cluster Operator
2225 kubectl rabbitmq install-cluster-operator
2326
2427 Create a RabbitMQ custom resource - INSTANCE name required, all other flags optional
25- kubectl rabbitmq create INSTANCE --replicas 1 --service ClusterIP --image rabbitmq:3.8.10-management --image-pull-secret mysecret
28+ kubectl rabbitmq [-n NAMESPACE] create INSTANCE --replicas 1 --service ClusterIP --image rabbitmq:3.8.10-management --image-pull-secret mysecret
2629 --tls-secret secret-name --storage-class mystorageclass
2730
2831 Get a RabbitMQ custom resource and dependant objects
29- kubectl rabbitmq get INSTANCE
32+ kubectl rabbitmq [-n NAMESPACE | -A] get INSTANCE
3033
3134 List all RabbitMQ clusters
32- kubectl rabbitmq list
35+ kubectl rabbitmq [-n NAMESPACE | -A] list
3336
3437 Delete a RabbitMQ cluster (or multiple clusters)
35- kubectl rabbitmq delete INSTANCE ...
38+ kubectl rabbitmq [-n NAMESPACE] delete INSTANCE ...
3639
3740 Print default-user secrets for an instance
38- kubectl rabbitmq secrets INSTANCE
41+ kubectl rabbitmq [-n NAMESPACE] secrets INSTANCE
3942
4043 Open Management UI for an instance
41- kubectl rabbitmq manage INSTANCE
44+ kubectl rabbitmq [-n NAMESPACE] manage INSTANCE
4245
4346 Set log level to 'debug' on all nodes
44- kubectl rabbitmq debug INSTANCE
47+ kubectl rabbitmq [-n NAMESPACE] debug INSTANCE
4548
4649 Tail logs from all nodes
47- kubectl rabbitmq tail INSTANCE
50+ kubectl rabbitmq [-n NAMESPACE] tail INSTANCE
4851 'tail' subcommand requires the 'tail' plugin. You can install it with 'kubectl krew install tail'
4952
5053 Run 'rabbitmq-diagnostics observer' on a specific INSTANCE NODE
51- kubectl rabbitmq observe INSTANCE 0
54+ kubectl rabbitmq [-n NAMESPACE] observe INSTANCE 0
5255
5356 Enable all feature flags on an INSTANCE
54- kubectl rabbitmq enable-all-feature-flags INSTANCE
57+ kubectl rabbitmq [-n NAMESPACE] enable-all-feature-flags INSTANCE
5558
5659 Pause reconciliation for an instance
57- kubectl rabbitmq pause-reconciliation INSTANCE
60+ kubectl rabbitmq [-n NAMESPACE] pause-reconciliation INSTANCE
5861
5962 Resume reconciliation for an instance
60- kubectl rabbitmq resume-reconciliation INSTANCE
63+ kubectl rabbitmq [-n NAMESPACE] resume-reconciliation INSTANCE
6164
6265 List all instances that has the pause reconciliation label
63- kubectl rabbitmq list-pause-reconciliation-instances
66+ kubectl rabbitmq [-n NAMESPACE | -A] list-pause-reconciliation-instances
6467
6568 Run perf-test against an instance - you can pass as many perf test parameters as you want
66- kubectl rabbitmq perf-test INSTANCE --rate 100
69+ kubectl rabbitmq [-n NAMESPACE] perf-test INSTANCE --rate 100
6770 If you want to monitor perf-test, create the following ServiceMonitor:
6871 apiVersion: monitoring.coreos.com/v1
6972 kind: ServiceMonitor
8386 Print kubectl-rabbitmq plugin version
8487 kubectl rabbitmq version
8588END
86- )
87- echo " $usage "
89+ )
90+ echo " $usage "
8891}
8992
9093version () {
@@ -113,8 +116,8 @@ version() {
113116
114117get_instance_details () {
115118 instance=${1}
116- username=$( kubectl get secret " ${instance} -default-user" -o jsonpath=" {.data.username}" | base64 --decode)
117- password=$( kubectl get secret " ${instance} -default-user" -o jsonpath=" {.data.password}" | base64 --decode)
119+ username=$( kubectl get ${NAMESPACE} secret " ${instance} -default-user" -o jsonpath=" {.data.username}" | base64 --decode)
120+ password=$( kubectl get ${NAMESPACE} secret " ${instance} -default-user" -o jsonpath=" {.data.password}" | base64 --decode)
118121 service=" $instance "
119122}
120123
@@ -123,7 +126,7 @@ perf_test() {
123126 shift 1
124127 perftestopts=$*
125128
126- kubectl run perf-test \
129+ kubectl ${NAMESPACE} run perf-test \
127130 --expose=true \
128131 --port=8080 \
129132 --labels=" app=perf-test,run=perf-test" \
@@ -139,11 +142,11 @@ manage() {
139142 sleep 2
140143 open " http://localhost:15672/"
141144 ) &
142- kubectl port-forward " service/${service} " 15672
145+ kubectl ${NAMESPACE} port-forward " service/${service} " 15672
143146}
144147
145148list_rabbitmq_clusters () {
146- kubectl get rabbitmqclusters
149+ kubectl get ${NAMESPACE} rabbitmqclusters
147150}
148151
149152create () {
@@ -211,48 +214,48 @@ create() {
211214 ;;
212215 esac
213216 done
214- kubectl apply -f " $rabbitmq_manifest_file "
217+ kubectl ${NAMESPACE} apply -f " $rabbitmq_manifest_file "
215218}
216219
217220delete () {
218221 for cluster in " $@ " ; do
219- kubectl delete rabbitmqcluster " ${cluster} "
222+ kubectl ${NAMESPACE} delete rabbitmqcluster " ${cluster} "
220223 done
221224}
222225
223226observe () {
224- kubectl exec -it " ${1} -server-${2} " -- rabbitmq-diagnostics observer
227+ kubectl ${NAMESPACE} exec -it " ${1} -server-${2} " -- rabbitmq-diagnostics observer
225228}
226229
227230get () {
228- kubectl get pods,cm,sts,svc,secrets,rs -l " app.kubernetes.io/name=$1 "
231+ kubectl get ${NAMESPACE} pods,cm,sts,svc,secrets,rs -l " app.kubernetes.io/name=$1 "
229232}
230233
231234debug () {
232- for node in $( kubectl get pods -l " app.kubernetes.io/name=${1} " -ocustom-columns=name:.metadata.name --no-headers) ; do
235+ for node in $( kubectl ${NAMESPACE} get pods -l " app.kubernetes.io/name=${1} " -ocustom-columns=name:.metadata.name --no-headers) ; do
233236 echo -n " ${node} : "
234- kubectl exec " ${node} " -- rabbitmqctl set_log_level debug
237+ kubectl ${NAMESPACE} exec " ${node} " -- rabbitmqctl set_log_level debug
235238 done
236239}
237240
238241tail () {
239- kubectl tail --svc " ${1} "
242+ kubectl ${NAMESPACE} tail --svc " ${1} "
240243}
241244
242245enable_all_feature_flags () {
243- kubectl exec " ${1} -server-0" -- bash -c " rabbitmqctl list_feature_flags | grep disabled | cut -f 1 | xargs -r -L1 rabbitmqctl enable_feature_flag"
246+ kubectl ${NAMESPACE} exec " ${1} -server-0" -- bash -c " rabbitmqctl list_feature_flags | grep disabled | cut -f 1 | xargs -r -L1 rabbitmqctl enable_feature_flag"
244247}
245248
246249pause-reconciliation () {
247- kubectl label rabbitmqclusters " ${1} " rabbitmq.com/pauseReconciliation=true
250+ kubectl ${NAMESPACE} label rabbitmqclusters " ${1} " rabbitmq.com/pauseReconciliation=true
248251}
249252
250253resume-reconciliation () {
251- kubectl label rabbitmqclusters " ${1} " rabbitmq.com/pauseReconciliation-
254+ kubectl ${NAMESPACE} label rabbitmqclusters " ${1} " rabbitmq.com/pauseReconciliation-
252255}
253256
254257list-pause-reconciliation-instances () {
255- kubectl get rabbitmqclusters -l rabbitmq.com/pauseReconciliation=true --show-labels
258+ kubectl get ${NAMESPACE} rabbitmqclusters -l rabbitmq.com/pauseReconciliation=true --show-labels
256259}
257260
258261secrets () {
@@ -262,10 +265,35 @@ secrets() {
262265}
263266
264267install_cluster_operator () {
265- kubectl apply -f https://github.com/rabbitmq/cluster-operator/releases/latest/download/cluster-operator.yml
268+ kubectl ${NAMESPACE} apply -f https://github.com/rabbitmq/cluster-operator/releases/latest/download/cluster-operator.yml
266269}
267270
268271main () {
272+ if [[ " $1 " == " --help" ]]; then
273+ usage
274+ exit 0
275+ fi
276+
277+ while getopts ' :n:Ah' opt; do
278+ case " ${opt} " in
279+ h)
280+ usage
281+ exit 0
282+ ;;
283+ A)
284+ NAMESPACE=" --all-namespaces"
285+ shift 1
286+ ;;
287+ n)
288+ NAMESPACE=" -n ${OPTARG} "
289+ shift 2
290+ ;;
291+ * )
292+ usage
293+ ;;
294+ esac
295+ done
296+
269297 case " $1 " in
270298 " perf-test" )
271299 shift 1
@@ -382,12 +410,6 @@ main() {
382410 " help" )
383411 usage
384412 ;;
385- " --help" )
386- usage
387- ;;
388- " -h" )
389- usage
390- ;;
391413 " version" )
392414 version
393415 ;;
0 commit comments