From 9ee5e058a7369cf3cdd851942ce5b25e8ce95c4e Mon Sep 17 00:00:00 2001 From: Dimitra Chatzichrysou <dimitra.chatzichrysou@cern.ch> Date: Wed, 31 Mar 2021 14:05:54 +0200 Subject: [PATCH 01/12] Add rules for batch api group --- roles/role.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/roles/role.yaml b/roles/role.yaml index 40505eb..38d1423 100644 --- a/roles/role.yaml +++ b/roles/role.yaml @@ -38,4 +38,10 @@ rules: - limitranges - drupalsites verbs: + - '*' +- apiGroups: + - "batch" + resources: + - jobs + verbs: - '*' \ No newline at end of file -- GitLab From eaf39abd0d6caedf305f3336ffc0fcaf332d41f2 Mon Sep 17 00:00:00 2001 From: Dimitra Chatzichrysou <dimitra.chatzichrysou@cern.ch> Date: Wed, 31 Mar 2021 14:06:28 +0200 Subject: [PATCH 02/12] Use a job for running the clear-cache task --- tasks/clear-cache.yaml | 51 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/tasks/clear-cache.yaml b/tasks/clear-cache.yaml index 80df1fa..3f47d68 100644 --- a/tasks/clear-cache.yaml +++ b/tasks/clear-cache.yaml @@ -22,4 +22,53 @@ spec: echo "Drupal site name: $(params.drupalSite)" deploymentPod=$(oc get pods -n $(params.namespace) -l drupalSite=$(params.drupalSite) -l app=drupal -o custom-columns=POD:.metadata.name --no-headers) echo "Deployment pod: $deploymentPod" - oc exec $deploymentPod -c php-fpm drush cr + export TASK=clear-cache + echo " + apiVersion: batch/v1 + kind: Job + metadata: + name: $TASK-$(params.drupalSite) + namespace: $(params.namespace) + spec: + backoffLimit: 20 + completions: 1 + parallelism: 1 + template: + spec: + containers: + - command: + - sh + - /drupal-data/scripts/$TASK.sh + env: + - name: DRUPAL_SHARED_VOLUME + value: /drupal-data + envFrom: + - secretRef: + name: dbcredentials-dbod-$(params.drupalSite) + image: image-registry.openshift-image-registry.svc:5000/test-dimitra/drupal-php-$(params.drupalSite):8.9.13 + imagePullPolicy: Always + name: taskrun + volumeMounts: + - mountPath: /drupal-data + name: drupal-directory + dnsPolicy: ClusterFirst + restartPolicy: Never + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 + volumes: + - name: drupal-directory + persistentVolumeClaim: + claimName: drupal-pv-claim-$(params.drupalSite) + " >> /tmp/job.yaml + cat /tmp/job.yaml + oc create -n $(params.namespace) -f /tmp/job.yaml + oc wait --for=condition=complete job/$TASK-$(params.drupalSite) & completion_pid=$! + oc wait --for=condition=failed job/$TASK-$(params.drupalSite) & failure_pid=$! + wait -n $completion_pid $failure_pid + jobStatus=$(oc get job/$TASK-$(params.drupalSite) -o=jsonpath='{.status.conditions[*].type}' | grep -i -E 'failed|complete' || echo "Failed") + echo "Job status: $jobStatus" + jobPod=$(oc get pods -n $(params.namespace) -l job-name=$TASK-$(params.drupalSite) -o custom-columns=POD:.metadata.name --no-headers) + echo "Job pod: $jobPod" + echo "Job logs:" + oc logs pod/$jobPod -n $(params.namespace) \ No newline at end of file -- GitLab From 5810a6db10801735d78247e244bad70015a31d95 Mon Sep 17 00:00:00 2001 From: Dimitra Chatzichrysou <dimitra.chatzichrysou@cern.ch> Date: Wed, 7 Apr 2021 15:11:35 +0200 Subject: [PATCH 03/12] Mount job template configmap using a workspace --- examples/clear-cache-taskrun.yaml | 4 +++ job-configmap.yaml | 42 +++++++++++++++++++++++++++ tasks/clear-cache.yaml | 47 ++++--------------------------- 3 files changed, 52 insertions(+), 41 deletions(-) create mode 100644 job-configmap.yaml diff --git a/examples/clear-cache-taskrun.yaml b/examples/clear-cache-taskrun.yaml index 4ba9e0f..09832eb 100644 --- a/examples/clear-cache-taskrun.yaml +++ b/examples/clear-cache-taskrun.yaml @@ -11,4 +11,8 @@ spec: value: test-dimitra-drupalsite - name: namespace value: test-dimitra + workspaces: + - name: job + configmap: + name: job-operations-template-configmap serviceAccountName: tektoncd diff --git a/job-configmap.yaml b/job-configmap.yaml new file mode 100644 index 0000000..cbc081b --- /dev/null +++ b/job-configmap.yaml @@ -0,0 +1,42 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: job-operations-template-configmap +data: + job-operations-template.yaml: |- + apiVersion: batch/v1 + kind: Job + metadata: + name: $TASK-$DRUPALSITE + namespace: $NAMESPACE + spec: + backoffLimit: 20 + completions: 1 + parallelism: 1 + template: + spec: + containers: + - command: + - sh + - /drupal-data/scripts/$TASK.sh + env: + - name: DRUPAL_SHARED_VOLUME + value: /drupal-data + envFrom: + - secretRef: + name: dbcredentials-dbod-$DRUPALSITE + image: image-registry.openshift-image-registry.svc:5000/test-dimitra/drupal-php-$DRUPALSITE:8.9.13 + imagePullPolicy: Always + name: taskrun + volumeMounts: + - mountPath: /drupal-data + name: drupal-directory + dnsPolicy: ClusterFirst + restartPolicy: Never + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 + volumes: + - name: drupal-directory + persistentVolumeClaim: + claimName: drupal-pv-claim-$DRUPALSITE \ No newline at end of file diff --git a/tasks/clear-cache.yaml b/tasks/clear-cache.yaml index 3f47d68..49ac21b 100644 --- a/tasks/clear-cache.yaml +++ b/tasks/clear-cache.yaml @@ -10,9 +10,11 @@ spec: - name: namespace type: string description: The namespace of the drupal site + workspaces: + - name: job steps: - name: clear-cache - image: image-registry.openshift-image-registry.svc:5000/openshift/cli:latest + image: widerin/openshift-cli command: - /bin/sh - '-c' @@ -23,46 +25,9 @@ spec: deploymentPod=$(oc get pods -n $(params.namespace) -l drupalSite=$(params.drupalSite) -l app=drupal -o custom-columns=POD:.metadata.name --no-headers) echo "Deployment pod: $deploymentPod" export TASK=clear-cache - echo " - apiVersion: batch/v1 - kind: Job - metadata: - name: $TASK-$(params.drupalSite) - namespace: $(params.namespace) - spec: - backoffLimit: 20 - completions: 1 - parallelism: 1 - template: - spec: - containers: - - command: - - sh - - /drupal-data/scripts/$TASK.sh - env: - - name: DRUPAL_SHARED_VOLUME - value: /drupal-data - envFrom: - - secretRef: - name: dbcredentials-dbod-$(params.drupalSite) - image: image-registry.openshift-image-registry.svc:5000/test-dimitra/drupal-php-$(params.drupalSite):8.9.13 - imagePullPolicy: Always - name: taskrun - volumeMounts: - - mountPath: /drupal-data - name: drupal-directory - dnsPolicy: ClusterFirst - restartPolicy: Never - schedulerName: default-scheduler - securityContext: {} - terminationGracePeriodSeconds: 30 - volumes: - - name: drupal-directory - persistentVolumeClaim: - claimName: drupal-pv-claim-$(params.drupalSite) - " >> /tmp/job.yaml - cat /tmp/job.yaml - oc create -n $(params.namespace) -f /tmp/job.yaml + export DRUPALSITE=$(params.drupalSite) + export NAMESPACE=$(params.namespace) + envsubst < $(workspaces.job.path)/job-operations-template.yaml | oc create -n $(params.namespace) -f - oc wait --for=condition=complete job/$TASK-$(params.drupalSite) & completion_pid=$! oc wait --for=condition=failed job/$TASK-$(params.drupalSite) & failure_pid=$! wait -n $completion_pid $failure_pid -- GitLab From b724a44f6dc8aa28e49d4cd0a4ca6d799fe81525 Mon Sep 17 00:00:00 2001 From: Dimitra Chatzichrysou <dimitra.chatzichrysou@cern.ch> Date: Fri, 9 Apr 2021 13:22:20 +0200 Subject: [PATCH 04/12] Update configmap, role and image for clear-cache task --- job-configmap.yaml | 8 ++++---- roles/role.yaml | 44 ++++++++++-------------------------------- tasks/clear-cache.yaml | 8 ++------ 3 files changed, 16 insertions(+), 44 deletions(-) diff --git a/job-configmap.yaml b/job-configmap.yaml index cbc081b..621d9d8 100644 --- a/job-configmap.yaml +++ b/job-configmap.yaml @@ -18,14 +18,14 @@ data: containers: - command: - sh - - /drupal-data/scripts/$TASK.sh + - /operations/$TASK.sh env: - name: DRUPAL_SHARED_VOLUME value: /drupal-data envFrom: - secretRef: - name: dbcredentials-dbod-$DRUPALSITE - image: image-registry.openshift-image-registry.svc:5000/test-dimitra/drupal-php-$DRUPALSITE:8.9.13 + name: dbcredentials-$DRUPALSITE + image: gitlab-registry.cern.ch/drupal/paas/drupal-runtime/site-builder-base:8.9.x imagePullPolicy: Always name: taskrun volumeMounts: @@ -39,4 +39,4 @@ data: volumes: - name: drupal-directory persistentVolumeClaim: - claimName: drupal-pv-claim-$DRUPALSITE \ No newline at end of file + claimName: pv-claim-$DRUPALSITE \ No newline at end of file diff --git a/roles/role.yaml b/roles/role.yaml index 38d1423..b348f01 100644 --- a/roles/role.yaml +++ b/roles/role.yaml @@ -1,47 +1,23 @@ apiVersion: rbac.authorization.k8s.io/v1 -kind: Role +kind: ClusterRole metadata: name: tektoncd-role - namespace: test-dimitra - annotations: - tekton.cern.ch/requiredForTask: clear-cache rules: - apiGroups: - - "" + - "batch" resources: - - pods - - services - - endpoints - - persistentvolumeclaims - - events - - configmaps - - secrets - - pods/log - - pods/exec - - limitranges - - drupalsites + - jobs verbs: - - '*' + - 'create' + - 'watch' + - 'list' + - 'get' - apiGroups: - - "drupal.webservices.cern.ch" + - "" resources: - pods - - services - - endpoints - - persistentvolumeclaims - - events - - configmaps - - secrets - pods/log - - pods/exec - - limitranges - - drupalsites - verbs: - - '*' -- apiGroups: - - "batch" - resources: - - jobs verbs: - - '*' \ No newline at end of file + - 'list' + - 'get' \ No newline at end of file diff --git a/tasks/clear-cache.yaml b/tasks/clear-cache.yaml index 49ac21b..e53c609 100644 --- a/tasks/clear-cache.yaml +++ b/tasks/clear-cache.yaml @@ -14,7 +14,7 @@ spec: - name: job steps: - name: clear-cache - image: widerin/openshift-cli + image: gitlab-registry.cern.ch/drupal/paas/drupal-operations/openshift-cli:latest command: - /bin/sh - '-c' @@ -22,8 +22,6 @@ spec: - |- echo "--------------------------- Clear cache ---------------------------" echo "Drupal site name: $(params.drupalSite)" - deploymentPod=$(oc get pods -n $(params.namespace) -l drupalSite=$(params.drupalSite) -l app=drupal -o custom-columns=POD:.metadata.name --no-headers) - echo "Deployment pod: $deploymentPod" export TASK=clear-cache export DRUPALSITE=$(params.drupalSite) export NAMESPACE=$(params.namespace) @@ -33,7 +31,5 @@ spec: wait -n $completion_pid $failure_pid jobStatus=$(oc get job/$TASK-$(params.drupalSite) -o=jsonpath='{.status.conditions[*].type}' | grep -i -E 'failed|complete' || echo "Failed") echo "Job status: $jobStatus" - jobPod=$(oc get pods -n $(params.namespace) -l job-name=$TASK-$(params.drupalSite) -o custom-columns=POD:.metadata.name --no-headers) - echo "Job pod: $jobPod" echo "Job logs:" - oc logs pod/$jobPod -n $(params.namespace) \ No newline at end of file + oc logs job/$TASK-$DRUPALSITE -n $(params.namespace) \ No newline at end of file -- GitLab From 3274491aea85c0902824d5c30e69420bb9ecc050 Mon Sep 17 00:00:00 2001 From: Dimitra Chatzichrysou <dimitra.chatzichrysou@cern.ch> Date: Thu, 29 Apr 2021 14:37:28 +0200 Subject: [PATCH 05/12] Delete roles --- roles/role.yaml | 23 ----------------------- 1 file changed, 23 deletions(-) delete mode 100644 roles/role.yaml diff --git a/roles/role.yaml b/roles/role.yaml deleted file mode 100644 index b348f01..0000000 --- a/roles/role.yaml +++ /dev/null @@ -1,23 +0,0 @@ - -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: tektoncd-role -rules: -- apiGroups: - - "batch" - resources: - - jobs - verbs: - - 'create' - - 'watch' - - 'list' - - 'get' -- apiGroups: - - "" - resources: - - pods - - pods/log - verbs: - - 'list' - - 'get' \ No newline at end of file -- GitLab From 9de3acddad66c3db11850dd56e76a6ada7987504 Mon Sep 17 00:00:00 2001 From: Dimitra Chatzichrysou <dimitra.chatzichrysou@cern.ch> Date: Thu, 29 Apr 2021 15:08:14 +0200 Subject: [PATCH 06/12] Update script for clear-cache cluster task --- tasks/clear-cache.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tasks/clear-cache.yaml b/tasks/clear-cache.yaml index e53c609..ba638bf 100644 --- a/tasks/clear-cache.yaml +++ b/tasks/clear-cache.yaml @@ -26,9 +26,7 @@ spec: export DRUPALSITE=$(params.drupalSite) export NAMESPACE=$(params.namespace) envsubst < $(workspaces.job.path)/job-operations-template.yaml | oc create -n $(params.namespace) -f - - oc wait --for=condition=complete job/$TASK-$(params.drupalSite) & completion_pid=$! - oc wait --for=condition=failed job/$TASK-$(params.drupalSite) & failure_pid=$! - wait -n $completion_pid $failure_pid + oc wait --for=condition=complete job/$TASK-$(params.drupalSite) jobStatus=$(oc get job/$TASK-$(params.drupalSite) -o=jsonpath='{.status.conditions[*].type}' | grep -i -E 'failed|complete' || echo "Failed") echo "Job status: $jobStatus" echo "Job logs:" -- GitLab From 4488794007d1303d0f7d979a76ec1e5238ce7254 Mon Sep 17 00:00:00 2001 From: Dimitra Chatzichrysou <dimitra.chatzichrysou@cern.ch> Date: Mon, 17 May 2021 14:44:52 +0200 Subject: [PATCH 07/12] Update tasks and examples --- examples/database-backup-taskrun.yaml | 4 ++++ examples/database-restore-taskrun.yaml | 4 ++++ examples/publish-unpublish-taskrun.yaml | 16 --------------- job-configmap.yaml | 2 +- tasks/database-backup.yaml | 16 +++++++++++---- tasks/database-restore.yaml | 18 ++++++++++++----- tasks/publish-unpublish.yaml | 26 ------------------------- 7 files changed, 34 insertions(+), 52 deletions(-) delete mode 100644 examples/publish-unpublish-taskrun.yaml delete mode 100644 tasks/publish-unpublish.yaml diff --git a/examples/database-backup-taskrun.yaml b/examples/database-backup-taskrun.yaml index eff8764..2bf8734 100644 --- a/examples/database-backup-taskrun.yaml +++ b/examples/database-backup-taskrun.yaml @@ -11,4 +11,8 @@ spec: value: test-dimitra-drupalsite - name: namespace value: test-dimitra + workspaces: + - name: job + configmap: + name: job-operations-template-configmap serviceAccountName: tektoncd diff --git a/examples/database-restore-taskrun.yaml b/examples/database-restore-taskrun.yaml index 0fcc44a..b817ac9 100644 --- a/examples/database-restore-taskrun.yaml +++ b/examples/database-restore-taskrun.yaml @@ -11,4 +11,8 @@ spec: value: test-dimitra-drupalsite - name: namespace value: test-dimitra + workspaces: + - name: job + configmap: + name: job-operations-template-configmap serviceAccountName: tektoncd diff --git a/examples/publish-unpublish-taskrun.yaml b/examples/publish-unpublish-taskrun.yaml deleted file mode 100644 index ed775b6..0000000 --- a/examples/publish-unpublish-taskrun.yaml +++ /dev/null @@ -1,16 +0,0 @@ -apiVersion: tekton.dev/v1beta1 -kind: TaskRun -metadata: - name: publish-unpublish -spec: - taskRef: - name: publish-unpublish - kind: ClusterTask - params: - - name: drupalSite - value: test-dimitra-drupalsite - - name: namespace - value: test-dimitra - - name: publish - value: "true" - serviceAccountName: tektoncd diff --git a/job-configmap.yaml b/job-configmap.yaml index 621d9d8..e49bca2 100644 --- a/job-configmap.yaml +++ b/job-configmap.yaml @@ -25,7 +25,7 @@ data: envFrom: - secretRef: name: dbcredentials-$DRUPALSITE - image: gitlab-registry.cern.ch/drupal/paas/drupal-runtime/site-builder-base:8.9.x + image: gitlab-registry.cern.ch/drupal/paas/drupal-runtime/site-builder-base:8.9.14-stable imagePullPolicy: Always name: taskrun volumeMounts: diff --git a/tasks/database-backup.yaml b/tasks/database-backup.yaml index e289174..0e98042 100644 --- a/tasks/database-backup.yaml +++ b/tasks/database-backup.yaml @@ -10,9 +10,11 @@ spec: - name: namespace type: string description: The namespace of the drupal site + workspaces: + - name: job steps: - name: database-backup - image: image-registry.openshift-image-registry.svc:5000/openshift/cli:latest + image: gitlab-registry.cern.ch/drupal/paas/drupal-operations/openshift-cli:latest command: - /bin/sh - '-c' @@ -20,6 +22,12 @@ spec: - |- echo "--------------------------- Database backup ---------------------------" echo "Drupal site name: $(params.drupalSite)" - deploymentPod=$(oc get pods -n $(params.namespace) -l drupalSite=$(params.drupalSite) -l app=drupal -o custom-columns=POD:.metadata.name --no-headers) - echo "Deployment pod: $deploymentPod" - oc exec $deploymentPod -c php-fpm -- /bin/sh '-c' 'drush sql-dump > /drupal-data/dbdump.sql' + export TASK=database-backup + export DRUPALSITE=$(params.drupalSite) + export NAMESPACE=$(params.namespace) + envsubst < $(workspaces.job.path)/job-operations-template.yaml | oc create -n $(params.namespace) -f - + oc wait --for=condition=complete job/$TASK-$(params.drupalSite) + jobStatus=$(oc get job/$TASK-$(params.drupalSite) -o=jsonpath='{.status.conditions[*].type}' | grep -i -E 'failed|complete' || echo "Failed") + echo "Job status: $jobStatus" + echo "Job logs:" + oc logs job/$TASK-$DRUPALSITE -n $(params.namespace) \ No newline at end of file diff --git a/tasks/database-restore.yaml b/tasks/database-restore.yaml index 406a161..7a0b9fb 100644 --- a/tasks/database-restore.yaml +++ b/tasks/database-restore.yaml @@ -10,16 +10,24 @@ spec: - name: namespace type: string description: The namespace of the drupal site + workspaces: + - name: job steps: - name: database-restore - image: image-registry.openshift-image-registry.svc:5000/openshift/cli:latest + image: gitlab-registry.cern.ch/drupal/paas/drupal-operations/openshift-cli:latest command: - /bin/sh - '-c' args: - |- - echo "--------------------------- Database restore ---------------------------" + echo "--------------------------- Clear cache ---------------------------" echo "Drupal site name: $(params.drupalSite)" - deploymentPod=$(oc get pods -n $(params.namespace) -l drupalSite=$(params.drupalSite) -l app=drupal -o custom-columns=POD:.metadata.name --no-headers) - echo "Deployment pod: $deploymentPod" - oc exec drupal-test-dimitra-drupalsite-8f5478886-d79s6 -c php-fpm -- /bin/sh '-c' 'drush sql-drop -y; drush sql-connect < /drupal-data/dbdump.sql' + export TASK=database-restore + export DRUPALSITE=$(params.drupalSite) + export NAMESPACE=$(params.namespace) + envsubst < $(workspaces.job.path)/job-operations-template.yaml | oc create -n $(params.namespace) -f - + oc wait --for=condition=complete job/$TASK-$(params.drupalSite) + jobStatus=$(oc get job/$TASK-$(params.drupalSite) -o=jsonpath='{.status.conditions[*].type}' | grep -i -E 'failed|complete' || echo "Failed") + echo "Job status: $jobStatus" + echo "Job logs:" + oc logs job/$TASK-$DRUPALSITE -n $(params.namespace) \ No newline at end of file diff --git a/tasks/publish-unpublish.yaml b/tasks/publish-unpublish.yaml deleted file mode 100644 index 0edd041..0000000 --- a/tasks/publish-unpublish.yaml +++ /dev/null @@ -1,26 +0,0 @@ -apiVersion: tekton.dev/v1beta1 -kind: ClusterTask -metadata: - name: publish-unpublish -spec: - params: - - name: drupalSite - type: string - description: The name of the drupal site - - name: namespace - type: string - description: The namespace of the drupal site - - name: publish - type: string - description: Publish a drupal site or not - steps: - - name: publish-unpublish - image: image-registry.openshift-image-registry.svc:5000/openshift/cli:latest - command: - - /bin/sh - - '-c' - args: - - |- - echo "--------------------------- Publsih/Unpublish ---------------------------" - echo "Drupal site name: $(params.drupalSite)" - oc patch --type=merge drupalsites.drupal.webservices.cern.ch/$(params.drupalSite) -p '{"spec":{"publish":$(params.publish)}}' -n $(params.namespace) -- GitLab From b519f85f7eee5fbf56c17d48f9d7fa2775f3792a Mon Sep 17 00:00:00 2001 From: Dimitra Chatzichrysou <dimitra.chatzichrysou@cern.ch> Date: Mon, 17 May 2021 15:58:29 +0200 Subject: [PATCH 08/12] Pass arguments if needed to script --- job-configmap.yaml | 3 ++- tasks/clear-cache.yaml | 2 +- tasks/database-backup.yaml | 3 ++- tasks/database-restore.yaml | 5 +++-- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/job-configmap.yaml b/job-configmap.yaml index e49bca2..7a891e6 100644 --- a/job-configmap.yaml +++ b/job-configmap.yaml @@ -18,7 +18,8 @@ data: containers: - command: - sh - - /operations/$TASK.sh + - /operations/$TASK.sh + - $ARGS env: - name: DRUPAL_SHARED_VOLUME value: /drupal-data diff --git a/tasks/clear-cache.yaml b/tasks/clear-cache.yaml index ba638bf..39a7ff0 100644 --- a/tasks/clear-cache.yaml +++ b/tasks/clear-cache.yaml @@ -30,4 +30,4 @@ spec: jobStatus=$(oc get job/$TASK-$(params.drupalSite) -o=jsonpath='{.status.conditions[*].type}' | grep -i -E 'failed|complete' || echo "Failed") echo "Job status: $jobStatus" echo "Job logs:" - oc logs job/$TASK-$DRUPALSITE -n $(params.namespace) \ No newline at end of file + oc logs job/$TASK-$DRUPALSITE -n $(params.namespace) diff --git a/tasks/database-backup.yaml b/tasks/database-backup.yaml index 0e98042..5a9126d 100644 --- a/tasks/database-backup.yaml +++ b/tasks/database-backup.yaml @@ -25,9 +25,10 @@ spec: export TASK=database-backup export DRUPALSITE=$(params.drupalSite) export NAMESPACE=$(params.namespace) + export ARGS="-f dbBackUp.sql" envsubst < $(workspaces.job.path)/job-operations-template.yaml | oc create -n $(params.namespace) -f - oc wait --for=condition=complete job/$TASK-$(params.drupalSite) jobStatus=$(oc get job/$TASK-$(params.drupalSite) -o=jsonpath='{.status.conditions[*].type}' | grep -i -E 'failed|complete' || echo "Failed") echo "Job status: $jobStatus" echo "Job logs:" - oc logs job/$TASK-$DRUPALSITE -n $(params.namespace) \ No newline at end of file + oc logs job/$TASK-$DRUPALSITE -n $(params.namespace) diff --git a/tasks/database-restore.yaml b/tasks/database-restore.yaml index 7a0b9fb..0a1d349 100644 --- a/tasks/database-restore.yaml +++ b/tasks/database-restore.yaml @@ -20,14 +20,15 @@ spec: - '-c' args: - |- - echo "--------------------------- Clear cache ---------------------------" + echo "--------------------------- Database restore ---------------------------" echo "Drupal site name: $(params.drupalSite)" export TASK=database-restore export DRUPALSITE=$(params.drupalSite) export NAMESPACE=$(params.namespace) + export ARGS="-f dbBackUp.sql" envsubst < $(workspaces.job.path)/job-operations-template.yaml | oc create -n $(params.namespace) -f - oc wait --for=condition=complete job/$TASK-$(params.drupalSite) jobStatus=$(oc get job/$TASK-$(params.drupalSite) -o=jsonpath='{.status.conditions[*].type}' | grep -i -E 'failed|complete' || echo "Failed") echo "Job status: $jobStatus" echo "Job logs:" - oc logs job/$TASK-$DRUPALSITE -n $(params.namespace) \ No newline at end of file + oc logs job/$TASK-$DRUPALSITE -n $(params.namespace) -- GitLab From b02463d79545379a7df6b076e02c6a10faf334a1 Mon Sep 17 00:00:00 2001 From: Dimitra Chatzichrysou <dimitra.chatzichrysou@cern.ch> Date: Thu, 1 Jul 2021 11:13:35 +0200 Subject: [PATCH 09/12] Use generateName in TaskRuns --- examples/clear-cache-taskrun.yaml | 2 +- examples/database-backup-taskrun.yaml | 2 +- examples/database-restore-taskrun.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/clear-cache-taskrun.yaml b/examples/clear-cache-taskrun.yaml index 09832eb..3adb40c 100644 --- a/examples/clear-cache-taskrun.yaml +++ b/examples/clear-cache-taskrun.yaml @@ -1,7 +1,7 @@ apiVersion: tekton.dev/v1beta1 kind: TaskRun metadata: - name: clear-cache + generateName: clear-cache- spec: taskRef: name: clear-cache diff --git a/examples/database-backup-taskrun.yaml b/examples/database-backup-taskrun.yaml index 2bf8734..266e50e 100644 --- a/examples/database-backup-taskrun.yaml +++ b/examples/database-backup-taskrun.yaml @@ -1,7 +1,7 @@ apiVersion: tekton.dev/v1beta1 kind: TaskRun metadata: - name: database-backup + generateName: database-backup- spec: taskRef: name: database-backup diff --git a/examples/database-restore-taskrun.yaml b/examples/database-restore-taskrun.yaml index b817ac9..ab0b9ae 100644 --- a/examples/database-restore-taskrun.yaml +++ b/examples/database-restore-taskrun.yaml @@ -1,7 +1,7 @@ apiVersion: tekton.dev/v1beta1 kind: TaskRun metadata: - name: database-restore + generateName: database-restore- spec: taskRef: name: database-restore -- GitLab From 39408258dd530558fa3b30769cc03f1c1ada21b4 Mon Sep 17 00:00:00 2001 From: Dimitra Chatzichrysou <dimitra.chatzichrysou@cern.ch> Date: Thu, 1 Jul 2021 11:57:12 +0200 Subject: [PATCH 10/12] Move cluster tasks to helm chart --- chart/Chart.yaml | 14 ++++++ chart/charts/cluster-tasks/Chart.yaml | 13 ++++++ .../cluster-tasks/templates}/clear-cache.yaml | 6 ++- .../templates}/database-backup.yaml | 6 ++- .../templates}/database-restore.yaml | 6 ++- chart/charts/cluster-tasks/values.yaml | 4 ++ job-configmap.yaml | 43 ------------------- 7 files changed, 43 insertions(+), 49 deletions(-) create mode 100644 chart/Chart.yaml create mode 100644 chart/charts/cluster-tasks/Chart.yaml rename {tasks => chart/charts/cluster-tasks/templates}/clear-cache.yaml (71%) rename {tasks => chart/charts/cluster-tasks/templates}/database-backup.yaml (72%) rename {tasks => chart/charts/cluster-tasks/templates}/database-restore.yaml (72%) create mode 100644 chart/charts/cluster-tasks/values.yaml delete mode 100644 job-configmap.yaml diff --git a/chart/Chart.yaml b/chart/Chart.yaml new file mode 100644 index 0000000..e22ea97 --- /dev/null +++ b/chart/Chart.yaml @@ -0,0 +1,14 @@ +apiVersion: v2 +name: drupal-operations +home: https://gitlab.cern.ch/drupal/paas/drupal-operations +description: A Helm chart for Deployment of the Drupal Operations +version: 0.1.0 +icon: https://raw.githubusercontent.com/cdfoundation/artwork/main/tekton/horizontal/color/tekton-horizontal-color.png +keywords: +- drupal +- tekton +- tasks +- operations +maintainers: +- name: CERN IT-CDA-WF + email: drupal-admins@cern.ch \ No newline at end of file diff --git a/chart/charts/cluster-tasks/Chart.yaml b/chart/charts/cluster-tasks/Chart.yaml new file mode 100644 index 0000000..f9d8e2d --- /dev/null +++ b/chart/charts/cluster-tasks/Chart.yaml @@ -0,0 +1,13 @@ +apiVersion: v2 +name: drupal-operations +home: https://gitlab.cern.ch/drupal/paas/drupal-operations +description: A Helm chart for Deployment of Cluster Tasks +version: 0.1.0 +icon: https://raw.githubusercontent.com/cdfoundation/artwork/main/tekton/horizontal/color/tekton-horizontal-color.png +keywords: +- drupal +- tekton +- clustertasks +maintainers: +- name: CERN IT-CDA-WF + email: drupal-admins@cern.ch diff --git a/tasks/clear-cache.yaml b/chart/charts/cluster-tasks/templates/clear-cache.yaml similarity index 71% rename from tasks/clear-cache.yaml rename to chart/charts/cluster-tasks/templates/clear-cache.yaml index 39a7ff0..958eeca 100644 --- a/tasks/clear-cache.yaml +++ b/chart/charts/cluster-tasks/templates/clear-cache.yaml @@ -14,7 +14,7 @@ spec: - name: job steps: - name: clear-cache - image: gitlab-registry.cern.ch/drupal/paas/drupal-operations/openshift-cli:latest + image: {{ .Values.openshiftCli.image }} command: - /bin/sh - '-c' @@ -25,7 +25,9 @@ spec: export TASK=clear-cache export DRUPALSITE=$(params.drupalSite) export NAMESPACE=$(params.namespace) - envsubst < $(workspaces.job.path)/job-operations-template.yaml | oc create -n $(params.namespace) -f - + export VERSION=$(oc get -n $(params.namespace) drupalsite/$(params.drupalSite) -o=jsonpath='{.spec.version.name}') + export RELEASE=$(oc get -n $(params.namespace) drupalsite/$(params.drupalSite) -o=jsonpath='{.spec.version.releaseSpec}') + envsubst < $(workspaces.job.path)/{{ .Values.jobTemplateFile }} | oc create -n $(params.namespace) -f - oc wait --for=condition=complete job/$TASK-$(params.drupalSite) jobStatus=$(oc get job/$TASK-$(params.drupalSite) -o=jsonpath='{.status.conditions[*].type}' | grep -i -E 'failed|complete' || echo "Failed") echo "Job status: $jobStatus" diff --git a/tasks/database-backup.yaml b/chart/charts/cluster-tasks/templates/database-backup.yaml similarity index 72% rename from tasks/database-backup.yaml rename to chart/charts/cluster-tasks/templates/database-backup.yaml index 5a9126d..d9413a1 100644 --- a/tasks/database-backup.yaml +++ b/chart/charts/cluster-tasks/templates/database-backup.yaml @@ -14,7 +14,7 @@ spec: - name: job steps: - name: database-backup - image: gitlab-registry.cern.ch/drupal/paas/drupal-operations/openshift-cli:latest + image: {{ .Values.openshiftCli.image }} command: - /bin/sh - '-c' @@ -25,8 +25,10 @@ spec: export TASK=database-backup export DRUPALSITE=$(params.drupalSite) export NAMESPACE=$(params.namespace) + export VERSION=$(oc get -n $(params.namespace) drupalsite/$(params.drupalSite) -o=jsonpath='{.spec.version.name}') + export RELEASE=$(oc get -n $(params.namespace) drupalsite/$(params.drupalSite) -o=jsonpath='{.spec.version.releaseSpec}') export ARGS="-f dbBackUp.sql" - envsubst < $(workspaces.job.path)/job-operations-template.yaml | oc create -n $(params.namespace) -f - + envsubst < $(workspaces.job.path)/{{ .Values.jobTemplateFile }} | oc create -n $(params.namespace) -f - oc wait --for=condition=complete job/$TASK-$(params.drupalSite) jobStatus=$(oc get job/$TASK-$(params.drupalSite) -o=jsonpath='{.status.conditions[*].type}' | grep -i -E 'failed|complete' || echo "Failed") echo "Job status: $jobStatus" diff --git a/tasks/database-restore.yaml b/chart/charts/cluster-tasks/templates/database-restore.yaml similarity index 72% rename from tasks/database-restore.yaml rename to chart/charts/cluster-tasks/templates/database-restore.yaml index 0a1d349..60e1865 100644 --- a/tasks/database-restore.yaml +++ b/chart/charts/cluster-tasks/templates/database-restore.yaml @@ -14,7 +14,7 @@ spec: - name: job steps: - name: database-restore - image: gitlab-registry.cern.ch/drupal/paas/drupal-operations/openshift-cli:latest + image: {{ .Values.openshiftCli.image }} command: - /bin/sh - '-c' @@ -25,8 +25,10 @@ spec: export TASK=database-restore export DRUPALSITE=$(params.drupalSite) export NAMESPACE=$(params.namespace) + export VERSION=$(oc get -n $(params.namespace) drupalsite/$(params.drupalSite) -o=jsonpath='{.spec.version.name}') + export RELEASE=$(oc get -n $(params.namespace) drupalsite/$(params.drupalSite) -o=jsonpath='{.spec.version.releaseSpec}') export ARGS="-f dbBackUp.sql" - envsubst < $(workspaces.job.path)/job-operations-template.yaml | oc create -n $(params.namespace) -f - + envsubst < $(workspaces.job.path)/{{ .Values.jobTemplateFile }} | oc create -n $(params.namespace) -f - oc wait --for=condition=complete job/$TASK-$(params.drupalSite) jobStatus=$(oc get job/$TASK-$(params.drupalSite) -o=jsonpath='{.status.conditions[*].type}' | grep -i -E 'failed|complete' || echo "Failed") echo "Job status: $jobStatus" diff --git a/chart/charts/cluster-tasks/values.yaml b/chart/charts/cluster-tasks/values.yaml new file mode 100644 index 0000000..aa18145 --- /dev/null +++ b/chart/charts/cluster-tasks/values.yaml @@ -0,0 +1,4 @@ +openshiftCli: + image: gitlab-registry.cern.ch/drupal/paas/drupal-operations/openshift-cli:latest + +jobTemplateFile: job-operations-template.yaml diff --git a/job-configmap.yaml b/job-configmap.yaml deleted file mode 100644 index 7a891e6..0000000 --- a/job-configmap.yaml +++ /dev/null @@ -1,43 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: job-operations-template-configmap -data: - job-operations-template.yaml: |- - apiVersion: batch/v1 - kind: Job - metadata: - name: $TASK-$DRUPALSITE - namespace: $NAMESPACE - spec: - backoffLimit: 20 - completions: 1 - parallelism: 1 - template: - spec: - containers: - - command: - - sh - - /operations/$TASK.sh - - $ARGS - env: - - name: DRUPAL_SHARED_VOLUME - value: /drupal-data - envFrom: - - secretRef: - name: dbcredentials-$DRUPALSITE - image: gitlab-registry.cern.ch/drupal/paas/drupal-runtime/site-builder-base:8.9.14-stable - imagePullPolicy: Always - name: taskrun - volumeMounts: - - mountPath: /drupal-data - name: drupal-directory - dnsPolicy: ClusterFirst - restartPolicy: Never - schedulerName: default-scheduler - securityContext: {} - terminationGracePeriodSeconds: 30 - volumes: - - name: drupal-directory - persistentVolumeClaim: - claimName: pv-claim-$DRUPALSITE \ No newline at end of file -- GitLab From 702ace39934ed74ea64ede4689dcd0f63c4466b4 Mon Sep 17 00:00:00 2001 From: Dimitra Chatzichrysou <dimitra.chatzichrysou@cern.ch> Date: Thu, 1 Jul 2021 15:17:50 +0200 Subject: [PATCH 11/12] Get serving pod image from status --- chart/charts/cluster-tasks/templates/clear-cache.yaml | 3 +-- chart/charts/cluster-tasks/templates/database-backup.yaml | 3 +-- chart/charts/cluster-tasks/templates/database-restore.yaml | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/chart/charts/cluster-tasks/templates/clear-cache.yaml b/chart/charts/cluster-tasks/templates/clear-cache.yaml index 958eeca..73ad510 100644 --- a/chart/charts/cluster-tasks/templates/clear-cache.yaml +++ b/chart/charts/cluster-tasks/templates/clear-cache.yaml @@ -25,8 +25,7 @@ spec: export TASK=clear-cache export DRUPALSITE=$(params.drupalSite) export NAMESPACE=$(params.namespace) - export VERSION=$(oc get -n $(params.namespace) drupalsite/$(params.drupalSite) -o=jsonpath='{.spec.version.name}') - export RELEASE=$(oc get -n $(params.namespace) drupalsite/$(params.drupalSite) -o=jsonpath='{.spec.version.releaseSpec}') + export SERVING_POD_IMAGE=$(oc get -n $(params.namespace) drupalsite/$(params.drupalSite) -o=jsonpath='{.status.servingPodImage}') envsubst < $(workspaces.job.path)/{{ .Values.jobTemplateFile }} | oc create -n $(params.namespace) -f - oc wait --for=condition=complete job/$TASK-$(params.drupalSite) jobStatus=$(oc get job/$TASK-$(params.drupalSite) -o=jsonpath='{.status.conditions[*].type}' | grep -i -E 'failed|complete' || echo "Failed") diff --git a/chart/charts/cluster-tasks/templates/database-backup.yaml b/chart/charts/cluster-tasks/templates/database-backup.yaml index d9413a1..b6003d4 100644 --- a/chart/charts/cluster-tasks/templates/database-backup.yaml +++ b/chart/charts/cluster-tasks/templates/database-backup.yaml @@ -25,8 +25,7 @@ spec: export TASK=database-backup export DRUPALSITE=$(params.drupalSite) export NAMESPACE=$(params.namespace) - export VERSION=$(oc get -n $(params.namespace) drupalsite/$(params.drupalSite) -o=jsonpath='{.spec.version.name}') - export RELEASE=$(oc get -n $(params.namespace) drupalsite/$(params.drupalSite) -o=jsonpath='{.spec.version.releaseSpec}') + export SERVING_POD_IMAGE=$(oc get -n $(params.namespace) drupalsite/$(params.drupalSite) -o=jsonpath='{.status.servingPodImage}') export ARGS="-f dbBackUp.sql" envsubst < $(workspaces.job.path)/{{ .Values.jobTemplateFile }} | oc create -n $(params.namespace) -f - oc wait --for=condition=complete job/$TASK-$(params.drupalSite) diff --git a/chart/charts/cluster-tasks/templates/database-restore.yaml b/chart/charts/cluster-tasks/templates/database-restore.yaml index 60e1865..45c44ba 100644 --- a/chart/charts/cluster-tasks/templates/database-restore.yaml +++ b/chart/charts/cluster-tasks/templates/database-restore.yaml @@ -25,8 +25,7 @@ spec: export TASK=database-restore export DRUPALSITE=$(params.drupalSite) export NAMESPACE=$(params.namespace) - export VERSION=$(oc get -n $(params.namespace) drupalsite/$(params.drupalSite) -o=jsonpath='{.spec.version.name}') - export RELEASE=$(oc get -n $(params.namespace) drupalsite/$(params.drupalSite) -o=jsonpath='{.spec.version.releaseSpec}') + export SERVING_POD_IMAGE=$(oc get -n $(params.namespace) drupalsite/$(params.drupalSite) -o=jsonpath='{.status.servingPodImage}') export ARGS="-f dbBackUp.sql" envsubst < $(workspaces.job.path)/{{ .Values.jobTemplateFile }} | oc create -n $(params.namespace) -f - oc wait --for=condition=complete job/$TASK-$(params.drupalSite) -- GitLab From 6a082a0667de91c111f33cc0fdd00692ebc51672 Mon Sep 17 00:00:00 2001 From: Dimitra Chatzichrysou <dimitra.chatzichrysou@cern.ch> Date: Fri, 2 Jul 2021 08:23:26 +0200 Subject: [PATCH 12/12] Remove charts dir --- chart/Chart.yaml | 14 -------------- chart/{charts => }/cluster-tasks/Chart.yaml | 0 .../cluster-tasks/templates/clear-cache.yaml | 0 .../cluster-tasks/templates/database-backup.yaml | 0 .../cluster-tasks/templates/database-restore.yaml | 0 chart/{charts => }/cluster-tasks/values.yaml | 0 6 files changed, 14 deletions(-) delete mode 100644 chart/Chart.yaml rename chart/{charts => }/cluster-tasks/Chart.yaml (100%) rename chart/{charts => }/cluster-tasks/templates/clear-cache.yaml (100%) rename chart/{charts => }/cluster-tasks/templates/database-backup.yaml (100%) rename chart/{charts => }/cluster-tasks/templates/database-restore.yaml (100%) rename chart/{charts => }/cluster-tasks/values.yaml (100%) diff --git a/chart/Chart.yaml b/chart/Chart.yaml deleted file mode 100644 index e22ea97..0000000 --- a/chart/Chart.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v2 -name: drupal-operations -home: https://gitlab.cern.ch/drupal/paas/drupal-operations -description: A Helm chart for Deployment of the Drupal Operations -version: 0.1.0 -icon: https://raw.githubusercontent.com/cdfoundation/artwork/main/tekton/horizontal/color/tekton-horizontal-color.png -keywords: -- drupal -- tekton -- tasks -- operations -maintainers: -- name: CERN IT-CDA-WF - email: drupal-admins@cern.ch \ No newline at end of file diff --git a/chart/charts/cluster-tasks/Chart.yaml b/chart/cluster-tasks/Chart.yaml similarity index 100% rename from chart/charts/cluster-tasks/Chart.yaml rename to chart/cluster-tasks/Chart.yaml diff --git a/chart/charts/cluster-tasks/templates/clear-cache.yaml b/chart/cluster-tasks/templates/clear-cache.yaml similarity index 100% rename from chart/charts/cluster-tasks/templates/clear-cache.yaml rename to chart/cluster-tasks/templates/clear-cache.yaml diff --git a/chart/charts/cluster-tasks/templates/database-backup.yaml b/chart/cluster-tasks/templates/database-backup.yaml similarity index 100% rename from chart/charts/cluster-tasks/templates/database-backup.yaml rename to chart/cluster-tasks/templates/database-backup.yaml diff --git a/chart/charts/cluster-tasks/templates/database-restore.yaml b/chart/cluster-tasks/templates/database-restore.yaml similarity index 100% rename from chart/charts/cluster-tasks/templates/database-restore.yaml rename to chart/cluster-tasks/templates/database-restore.yaml diff --git a/chart/charts/cluster-tasks/values.yaml b/chart/cluster-tasks/values.yaml similarity index 100% rename from chart/charts/cluster-tasks/values.yaml rename to chart/cluster-tasks/values.yaml -- GitLab