Kubernetes operators which handle critical functions of Shepherd.
10K+
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:
site and environment labels allow Shepherd to query these objects for display in the UI.volumes holds a unique name and claimName for each PVC that is going to be backed up.mysql holds a unique name and secret for each database that is going to be backed up. The secret.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
TODO
Configure your namespace as required. Used for RBAC rules and defaults to 'myproject' (for local development).
export NAMESPACE=shepherd-dev
make kustomize
Install the CRD and RBAC.
make install
Configure RBAC rules for accounts which should have access to create Backup/Restore objects (i.e. shepherd service account)
oc create clusterrole shepherd-backups --verb=get,list,create,update,delete --resource=backups,restores
oc adm policy add-cluster-role-to-user shepherd-backups --serviceaccount=shepherd
The codebase is written in Go and uses the Kubebuilder framework.
The core logic of this operator is contained in:
Reconcile().Reconcile().To get started developing this operator, ensure you the following prerequisites:
$GOPATH/src/github.com/universityofadelaide/shepherd-operatoroc login -u system:adminmake install to set up the CRD in your local OpenShift.make run to compile the local workspace and run the operator. Keep it running for the next few steps.oc get jobs to check out the jobs that were created.Content type
Image
Digest
Size
41.5 MB
Last updated
almost 5 years ago
docker pull uofa/shepherd-operator