apiVersion: v1 kind: Service metadata: name: drupal labels: app: drupal spec: ports: - port: 80 selector: app: drupal tier: frontend type: LoadBalancer --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: dr-pv-claim labels: app: drupal spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi --- apiVersion: apps/v1 kind: Deployment metadata: name: drupal labels: app: drupal spec: selector: matchLabels: app: drupal tier: frontend strategy: type: Recreate template: metadata: labels: app: drupal tier: frontend spec: volumes: - name: drupal-persistent-storage persistentVolumeClaim: claimName: dr-pv-claim containers: - image: name: drupal imagePullPolicy: Always env: - name: DB_HOST value: drupal-mysql - name: DB_NAME value: drupal - name: DB_USER value: drupal - name: DB_PASSWORD value: ports: - containerPort: 80 name: drupal volumeMounts: - name: drupal-persistent-storage mountPath: /var/www/html/web/sites/default/files imagePullSecrets: - name: regcred --- apiVersion: batch/v1beta1 kind: CronJob metadata: name: drupal-cron spec: schedule: "*/2 * * * *" concurrencyPolicy: Forbid jobTemplate: spec: template: spec: containers: - name: drupal-cron image: juampynr/gcloud-cronjob:latest volumeMounts: - name: google-cloud-key mountPath: /var/secrets/google command: ["/bin/sh","-c"] args: - gcloud auth activate-service-account --key-file=/var/secrets/google/key.json; gcloud container clusters get-credentials `cat /var/secrets/google/cluster_id` --zone=`cat /var/secrets/google/cluster_zone` --project=`cat /var/secrets/google/project_id`; POD_NAME=$(kubectl get pods -l tier=frontend -o=jsonpath='{.items[0].metadata.name}'); kubectl exec $POD_NAME -c drupal -- vendor/bin/drush core:cron; volumes: - name: google-cloud-key secret: secretName: creds restartPolicy: OnFailure