Skip to content

Commit ac832c9

Browse files
committed
cca-operator: add support for global kubectl arguments
1 parent ce38eb2 commit ac832c9

9 files changed

Lines changed: 33 additions & 33 deletions

cca-operator/cca-operator.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ source functions.sh
55
if [ "${1}" == "initialize-ckan-env-vars" ]; then
66
ENV_VARS_SECRET="${2}"
77
[ -z "${ENV_VARS_SECRET}" ] && echo usage: cca-operator initialize-ckan-env-vars '<ENV_VARS_SECRET_NAME>' && exit 1
8-
if ! kubectl get secret $ENV_VARS_SECRET; then
8+
if ! kubectl $KUBECTL_GLOBAL_ARGS get secret $ENV_VARS_SECRET; then
99
echo "Creating ckan env vars secret ${ENV_VARS_SECRET}"
10-
! kubectl create secret generic $ENV_VARS_SECRET \
10+
! kubectl $KUBECTL_GLOBAL_ARGS create secret generic $ENV_VARS_SECRET \
1111
--from-literal=CKAN_APP_INSTANCE_UUID=`python -c "import uuid;print(uuid.uuid1())"` \
1212
--from-literal=CKAN_BEAKER_SESSION_SECRET=`python -c "import binascii,os;print(binascii.hexlify(os.urandom(25)))"` \
1313
--from-literal=POSTGRES_PASSWORD=`python -c "import binascii,os;print(binascii.hexlify(os.urandom(12)))"` \
@@ -28,7 +28,7 @@ elif [ "${1}" == "initialize-ckan-secrets" ]; then
2828
( [ -z "${ENV_VARS_SECRET}" ] || [ -z "${CKAN_SECRETS_SECRET}" ] ) \
2929
&& echo usage: cca-operator initialize-ckan-secrets '<ENV_VARS_SECRET_NAME>' '<CKAN_SECRETS_SECRET_NAME>' \
3030
&& exit 1
31-
if ! kubectl get secret "${CKAN_SECRETS_SECRET}"; then
31+
if ! kubectl $KUBECTL_GLOBAL_ARGS get secret "${CKAN_SECRETS_SECRET}"; then
3232
echo Creating ckan secrets secret $CKAN_SECRETES_SECRET from env vars secret $ENV_VARS_SECRET
3333
! export_ckan_env_vars $ENV_VARS_SECRET && exit 1
3434
TEMPFILE=`mktemp`
@@ -45,7 +45,7 @@ elif [ "${1}" == "initialize-ckan-secrets" ]; then
4545
export SMTP_USER=
4646
export SMTP_PASSWORD=
4747
export SMTP_MAIL_FROM=" > $TEMPFILE
48-
kubectl create secret generic "${CKAN_SECRETS_SECRET}" --from-file=secrets.sh=$TEMPFILE
48+
kubectl $KUBECTL_GLOBAL_ARGS create secret generic "${CKAN_SECRETS_SECRET}" --from-file=secrets.sh=$TEMPFILE
4949
CKAN_SECRET_RES="$?"
5050
rm $TEMPFILE
5151
[ "$CKAN_SECRET_RES" != "0" ] && echo failed to create ckan secrets secret && exit 1

cca-operator/create-instance.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ INSTANCE_ID="${1}"
1010
INSTANCE_NAMESPACE="${INSTANCE_ID}"
1111
CKAN_HELM_RELEASE_NAME="ckan-cloud-${INSTANCE_NAMESPACE}"
1212

13-
kubectl get ns "${INSTANCE_NAMESPACE}" && echo namespace ${INSTANCE_NAMESPACE} already exists && exit 1
13+
kubectl $KUBECTL_GLOBAL_ARGS get ns "${INSTANCE_NAMESPACE}" && echo namespace ${INSTANCE_NAMESPACE} already exists && exit 1
1414
helm status $CKAN_HELM_RELEASE_NAME && echo Helm release ${CKAN_HELM_RELEASE_NAME} already exists && exit 1
1515

1616
exec ./update-instance.sh "$@"

cca-operator/delete-instance.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
source functions.sh
66
! cluster_management_init "${1}" && exit 1
77

8-
if kubectl get ns "${INSTANCE_NAMESPACE}"; then
8+
if kubectl $KUBECTL_GLOBAL_ARGS get ns "${INSTANCE_NAMESPACE}"; then
99
echo Deleting instance namespace: ${INSTANCE_NAMESPACE}
1010

11-
! kubectl -n ${INSTANCE_NAMESPACE} delete deployment ckan jobs && echo WARNING: failed to delete ckan pods
12-
! kubectl delete ns "${INSTANCE_NAMESPACE}" && echo WARNING: failed to delete instance namespace
11+
! kubectl $KUBECTL_GLOBAL_ARGS -n ${INSTANCE_NAMESPACE} delete deployment ckan jobs && echo WARNING: failed to delete ckan pods
12+
! kubectl $KUBECTL_GLOBAL_ARGS delete ns "${INSTANCE_NAMESPACE}" && echo WARNING: failed to delete instance namespace
1313

1414
echo WARNING! instance was not removed from the load balancer
1515

cca-operator/functions.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ CF_ZONE_UPDATE_DATA_TEMPLATE='{"type":"CNAME","name":"{{CF_SUBDOMAIN}}","content
22
CF_RECORD_NAME_SUFFIX=".ckan.io"
33

44
get_secrets_json() {
5-
kubectl get secret $1 -o json
5+
kubectl $KUBECTL_GLOBAL_ARGS get secret $1 -o json
66
}
77

88
get_secret_from_json() {
@@ -104,7 +104,7 @@ cluster_register_sub_domain() {
104104

105105
kubectl_init() {
106106
if ! [ -z "${KUBE_CONTEXT}" ]; then
107-
! kubectl config use-context "${KUBE_CONTEXT}" > /dev/stderr && echo failed to switch context > /dev/stderr && return 1
107+
! kubectl $KUBECTL_GLOBAL_ARGS config use-context "${KUBE_CONTEXT}" > /dev/stderr && echo failed to switch context > /dev/stderr && return 1
108108
fi
109109
return 0
110110
}
@@ -126,7 +126,7 @@ instance_connection_info() {
126126
CKAN_ADMIN_PASSWORD="${4}"
127127
if [ -z "${INSTANCE_DOMAIN}" ]; then
128128
echo Start port forwarding to access the instance:
129-
echo kubectl -n ${INSTANCE_NAMESPACE} port-forward deployment/nginx 8080
129+
echo kubectl $KUBECTL_GLOBAL_ARGS -n ${INSTANCE_NAMESPACE} port-forward deployment/nginx 8080
130130
echo Add a hosts entry: "'127.0.0.1 nginx'"
131131
echo Access the instance at http://nginx:8080
132132
else

cca-operator/instance-connection-info.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ source functions.sh
66
! cluster_management_init "${1}" && exit 1
77

88
CKAN_ADMIN_PASSWORD=$( \
9-
get_secret_from_json "$(kubectl -n "${INSTANCE_NAMESPACE}" get secret ckan-admin-password -o json)" \
9+
get_secret_from_json "$(kubectl $KUBECTL_GLOBAL_ARGS -n "${INSTANCE_NAMESPACE}" get secret ckan-admin-password -o json)" \
1010
"CKAN_ADMIN_PASSWORD" \
1111
)
1212

cca-operator/kubectl.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@
55
source functions.sh
66
! kubectl_init >/dev/null 2>&1 && exit 1
77

8-
exec kubectl "$@"
8+
exec kubectl $KUBECTL_GLOBAL_ARGS "$@"

cca-operator/list-instances.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
source functions.sh
66
! kubectl_init && exit 1
77

8-
kubectl get pods -l app=ckan --all-namespaces -o yaml \
8+
kubectl $KUBECTL_GLOBAL_ARGS get pods -l app=ckan --all-namespaces -o yaml \
99
| python3 -c '
1010
1111
import yaml, sys, glob

cca-operator/recreate-instance.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ INSTANCE_ID="${1}"
1010
INSTANCE_NAMESPACE="${INSTANCE_ID}"
1111

1212
./delete-instance.sh "${INSTANCE_ID}" &&\
13-
while kubectl get ns "${INSTANCE_NAMESPACE}"; do
13+
while kubectl $KUBECTL_GLOBAL_ARGS get ns "${INSTANCE_NAMESPACE}"; do
1414
echo .
1515
sleep 2
1616
done &&\

cca-operator/update-instance.sh

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ import yaml;
3434
print(yaml.load(open("'${CKAN_VALUES_FILE}'")).get("ckanHelmChartVersion", ""))
3535
'`
3636

37-
LOAD_BALANCER_HOSTNAME=$(kubectl -n default get service traefik -o yaml \
37+
LOAD_BALANCER_HOSTNAME=$(kubectl $KUBECTL_GLOBAL_ARGS -n default get service traefik -o yaml \
3838
| python3 -c 'import sys, yaml; print(yaml.load(sys.stdin)["status"]["loadBalancer"]["ingress"][0]["hostname"])' 2>/dev/null)
3939

4040
if [ "${REGISTER_SUBDOMAIN}" != "" ]; then
@@ -97,7 +97,7 @@ if ! [ -z "${INSTANCE_DOMAIN}" ]; then
9797

9898
mv $TRAEFIK_VALUES_MODIFIED_FILE $TRAEFIK_VALUES_FILE
9999

100-
echo Deploying to kube context `kubectl config current-context`, load balancer hostname: ${LOAD_BALANCER_HOSTNAME}
100+
echo Deploying to kube context `kubectl $KUBECTL_GLOBAL_ARGS config current-context`, load balancer hostname: ${LOAD_BALANCER_HOSTNAME}
101101

102102
helm upgrade "${TRAEFIK_HELM_RELEASE_NAME}" "${TRAEFIK_HELM_CHART_PATH}" \
103103
--namespace "${TRAEFIK_NAMESPACE}" -if "${TRAEFIK_VALUES_FILE}" --dry-run --debug > /dev/stderr &&\
@@ -107,22 +107,22 @@ if ! [ -z "${INSTANCE_DOMAIN}" ]; then
107107
fi
108108
fi
109109

110-
if kubectl get ns "${INSTANCE_NAMESPACE}"; then
110+
if kubectl $KUBECTL_GLOBAL_ARGS get ns "${INSTANCE_NAMESPACE}"; then
111111
IS_NEW_NAMESPACE=0
112112
echo Namespace exists: ${INSTANCE_NAMESPACE}
113113
echo skipping RBAC creation
114114
else
115115
IS_NEW_NAMESPACE=1
116116
echo Creating namespace: ${INSTANCE_NAMESPACE}
117117

118-
kubectl create ns "${INSTANCE_NAMESPACE}" &&\
119-
kubectl --namespace "${INSTANCE_NAMESPACE}" \
118+
kubectl $KUBECTL_GLOBAL_ARGS create ns "${INSTANCE_NAMESPACE}" &&\
119+
kubectl $KUBECTL_GLOBAL_ARGS --namespace "${INSTANCE_NAMESPACE}" \
120120
create serviceaccount "ckan-${INSTANCE_NAMESPACE}-operator" &&\
121-
kubectl --namespace "${INSTANCE_NAMESPACE}" \
121+
kubectl $KUBECTL_GLOBAL_ARGS --namespace "${INSTANCE_NAMESPACE}" \
122122
create role "ckan-${INSTANCE_NAMESPACE}-operator-role" \
123123
--verb list,get,create \
124124
--resource secrets,pods,pods/exec,pods/portforward &&\
125-
kubectl --namespace "${INSTANCE_NAMESPACE}" \
125+
kubectl $KUBECTL_GLOBAL_ARGS --namespace "${INSTANCE_NAMESPACE}" \
126126
create rolebinding "ckan-${INSTANCE_NAMESPACE}-operator-rolebinding" \
127127
--role "ckan-${INSTANCE_NAMESPACE}-operator-role" \
128128
--serviceaccount "${INSTANCE_NAMESPACE}:ckan-${INSTANCE_NAMESPACE}-operator"
@@ -153,7 +153,7 @@ helm_upgrade() {
153153
wait_for_pods() {
154154
DELAY_SECONDS=10
155155
TOTAL_SECONDS=0
156-
while ! kubectl --namespace "${INSTANCE_NAMESPACE}" get pods -o yaml | python3 -c '
156+
while ! kubectl $KUBECTL_GLOBAL_ARGS --namespace "${INSTANCE_NAMESPACE}" get pods -o yaml | python3 -c '
157157
import yaml, sys;
158158
for pod in yaml.load(sys.stdin)["items"]:
159159
if pod["status"]["phase"] != "Running":
@@ -164,17 +164,17 @@ for pod in yaml.load(sys.stdin)["items"]:
164164
exit(1)
165165
exit(0)
166166
'; do
167-
kubectl --namespace "${INSTANCE_NAMESPACE}" get pods
167+
kubectl $KUBECTL_GLOBAL_ARGS --namespace "${INSTANCE_NAMESPACE}" get pods
168168
sleep $DELAY_SECONDS
169169
TOTAL_SECONDS=$(expr $TOTAL_SECONDS + $DELAY_SECONDS)
170170
echo "...${TOTAL_SECONDS}s"
171171
# if [ "$(expr $TOTAL_SECONDS > 180)" == "1" ]; then
172172
# echo "Waiting too long, deleting and redeploying ckan and jobs deployments"
173-
# kubectl delete deployment ckan jobs
173+
# kubectl $KUBECTL_GLOBAL_ARGS delete deployment ckan jobs
174174
# ! helm_upgrade && return 1
175175
# fi
176176
done &&\
177-
kubectl --namespace "${INSTANCE_NAMESPACE}" get pods
177+
kubectl $KUBECTL_GLOBAL_ARGS --namespace "${INSTANCE_NAMESPACE}" get pods
178178
}
179179

180180
if [ "${IS_NEW_NAMESPACE}" == "1" ]; then
@@ -189,23 +189,23 @@ sleep 1 &&\
189189
wait_for_pods
190190
[ "$?" != "0" ] && exit 1
191191

192-
CKAN_POD_NAME=$(kubectl -n ${INSTANCE_NAMESPACE} get pods -l "app=ckan" -o 'jsonpath={.items[0].metadata.name}')
192+
CKAN_POD_NAME=$(kubectl $KUBECTL_GLOBAL_ARGS -n ${INSTANCE_NAMESPACE} get pods -l "app=ckan" -o 'jsonpath={.items[0].metadata.name}')
193193
echo CKAN_POD_NAME = "${CKAN_POD_NAME}" > /dev/stderr
194194

195-
if kubectl -n ${INSTANCE_NAMESPACE} exec -it ${CKAN_POD_NAME} -- bash -c \
195+
if kubectl $KUBECTL_GLOBAL_ARGS -n ${INSTANCE_NAMESPACE} exec -it ${CKAN_POD_NAME} -- bash -c \
196196
"ckan-paster --plugin=ckan sysadmin -c /etc/ckan/production.ini list" \
197197
| grep "name=admin"
198198
then
199199
CKAN_ADMIN_PASSWORD=$( \
200-
get_secret_from_json "$(kubectl -n "${INSTANCE_NAMESPACE}" get secret ckan-admin-password -o json)" \
200+
get_secret_from_json "$(kubectl $KUBECTL_GLOBAL_ARGS -n "${INSTANCE_NAMESPACE}" get secret ckan-admin-password -o json)" \
201201
"CKAN_ADMIN_PASSWORD" \
202202
)
203203
echo admin user already exists
204204
else
205205
CKAN_ADMIN_PASSWORD=$(python3 -c "import binascii,os;print(binascii.hexlify(os.urandom(12)).decode())")
206-
! kubectl -n "${INSTANCE_NAMESPACE}" create secret generic ckan-admin-password "--from-literal=CKAN_ADMIN_PASSWORD=${CKAN_ADMIN_PASSWORD}" && exit 1
206+
! kubectl $KUBECTL_GLOBAL_ARGS -n "${INSTANCE_NAMESPACE}" create secret generic ckan-admin-password "--from-literal=CKAN_ADMIN_PASSWORD=${CKAN_ADMIN_PASSWORD}" && exit 1
207207
echo y \
208-
| kubectl -n ${INSTANCE_NAMESPACE} exec -it ${CKAN_POD_NAME} -- bash -c \
208+
| kubectl $KUBECTL_GLOBAL_ARGS -n ${INSTANCE_NAMESPACE} exec -it ${CKAN_POD_NAME} -- bash -c \
209209
"ckan-paster --plugin=ckan sysadmin -c /etc/ckan/production.ini add admin password=${CKAN_ADMIN_PASSWORD} email=admin@${INSTANCE_ID}" \
210210
> /dev/stderr
211211
[ "$?" != "0" ] && exit 1
@@ -214,9 +214,9 @@ fi
214214
if ! [ -z "${INSTANCE_DOMAIN}" ]; then
215215
echo Running sanity tests for CKAN instance ${INSTSANCE_ID} on domain ${INSTANCE_DOMAIN}
216216
if [ "$(curl https://${INSTANCE_DOMAIN}/api/3)" != '{"version": 3}' ]; then
217-
kubectl -n default patch deployment traefik \
217+
kubectl $KUBECTL_GLOBAL_ARGS -n default patch deployment traefik \
218218
-p "{\"spec\":{\"template\":{\"metadata\":{\"labels\":{\"date\":\"`date +'%s'`\"}}}}}" &&\
219-
kubectl -n default rollout status deployment traefik &&\
219+
kubectl $KUBECTL_GLOBAL_ARGS -n default rollout status deployment traefik &&\
220220
sleep 10 &&\
221221
[ "$(curl https://${INSTANCE_DOMAIN}/api/3)" != '{"version": 3}' ]
222222
[ "$?" != "0" ] && exit 1

0 commit comments

Comments
 (0)