Demonstration of a set of NGINX and PHP-FPM containers running Drupal deployed to Kubernetes on the IBM Container Service. This is a work in progress.
Switch branches/tags
Nothing to show
Clone or download
Latest commit f968258 Jan 22, 2018

README.md

Drupal 8 on the IBM Cloud (based on NGINX, PHP-FPM)

This project shows how to deploy a Drupal 8 environment on a cluster of NGINX and PHP containers using the IBM Container Service and several IBM Cloud catalog data services.

These containers mount a persistent volume for sites (which change after build and deployment time with user generated content) and connect to MySQL, Redis, and Memcached services from the IBM Cloud catalog (not self-hosted containers inside the same cluster).

After deployment, Drupal developers (who are the end users of the cluster) can manage site lifecycle by delivering configuration or code changes to specific folders (config, code) in this repository. Commits trigger fresh rebuild and deploys in an IBM Continuous Delivery pipeline. Production data can also be synchronized back to the staging environment using file and data migration scripts.

What makes the IBM Cloud different from other Kubernetes providers

Logical overview diagram

There are two separate Drupal installations that are deployed onto the container cluster. One to represent a "staging" environment and one to represent a "production" environment. Each has its own dedicated services and volume mounts. A CLI container can run drush or scripts such as transfer-files.sh and transfer-data.sh on those environments to synchronize them.

Landscape diagram of the services used

When custom code is checked into this repository, it triggers a Docker image build which stores the images into a private container registry that analyzes the security of the images. These images are then rolled out across the Kubernetes cluster through staging and production gates. Data from production can be synchronized back to staging to ensure the environments are as close as possible.

Setup the environment and deploy the cluster

One time Container Service and Cloud data services setup

See the Container Service Kubernetes and IBM Cloud services (MySQL, Redis, Memcached) configuration instructions.

Building and deploying the first set of containers

See the Docker container build and Kubernetes deployment instructions.

Ongoing development and operations with GitHub commits

See the ongoing development instructions. And the work in progress DevOps pipeline docs. This shows how container images are rebuilt and how to address security issues detected by the IBM Vulnerability Advisor.

Synchronizing data from production back to staging

There are two synchronization scripts that can be invoked to bring user generated changes to files or data from production back into the staging environment. You can also execute other scripts inside the containers as well.

License

Apache 2.0