This project provides kubernetes operators which control backing up and restoring an environment.
It is written in Go using the Kubebuilder framework.
Note: Kubebuilder version 2 is not compatible with the version of OpenShift that Shepherd runs on
Shepherd has integration with this operator. It allows administrators to create new Backup
and Restore
objects via the Drupal UI.
Backup/Restores can be created by creating a new object with a manifest similar to the example below. In this example:
- The
site
andenvironment
labels allow Shepherd to query these objects for display in the UI. volumes
holds a unique name andclaimName
for each PVC that is going to be backed up.mysql
holds a unique name andsecret
for each database that is going to be backed up. Thesecret.keys
property is used by the operator to mount environment variables into the containers running the sql dump/restores in order to connect to the database.
apiVersion: extension.shepherd/v1
kind: Backup
metadata:
name: node-123-backup-xyz
labels:
site: 456
environment: 123
spec:
volumes:
shared:
claimName: node-123-shared
mysql:
default:
secret:
name: node-123
keys:
username: DATABASE_USER
password: DATABASE_PASSWORD
database: DATABASE_NAME
hostname: DATABASE_HOST
port: DATABASE_PORT
status:
startTime: '2018-11-21T00:16:23Z'
completionTime: '2018-11-21T00:16:43Z'
resticId: abcd969xcz
phase: New|InProgress|Failed|Completed
$ docker pull ghcr.io/universityofadelaide/shepherd-operator:latest
This approach can be used for both production deployments and local develop on Shepherd
- Generate Github Token
Create new Github Personal Access Token with read:packages
scope.
https://github.com/settings/tokens/new
Update the secret manifest to contain a base64 string using the following command:
echo -n <your-github-username>:<TOKEN> | base64
- Create Namespace
oc apply -f config/manager/namespace.yml
- Apply CustomerResourceDefinitions
oc apply -f config/crd/bases/
- Apply RBAC Policies
oc apply -f config/rbac/
- Apply Deployment Manifests
oc apply -f config/manager/deployment.yml
- Setup Permissions
oc apply -f config/manager/namespace.yml
oc apply -f config/crd/bases/
oc apply -f config/rbac/
- Run the Operator
make run
The codebase is written in Go and uses the Kubebuilder framework.
The core logic of this operator is contained in:
- pkg/controller/backup/backup_controller.go in the function
Reconcile()
. - pkg/controller/restore/restore_controller.go in the function
Reconcile()
.