diff --git a/SUMMARY.md b/SUMMARY.md index c281e2fae..10d997a32 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -28,6 +28,7 @@ * [HTTPS](deployment/digital-ocean/https/README.md) * [Human Connection](deployment/human-connection/README.md) * [Mailserver](deployment/human-connection/mailserver/README.md) + * [Maintenance](deployment/human-connection/maintenance/README.md) * [Volumes](deployment/volumes/README.md) * [Neo4J Offline-Backups](deployment/volumes/neo4j-offline-backup/README.md) * [Volume Snapshots](deployment/volumes/volume-snapshots/README.md) diff --git a/deployment/human-connection/maintenance/README.md b/deployment/human-connection/maintenance/README.md new file mode 100644 index 000000000..02bcb44e2 --- /dev/null +++ b/deployment/human-connection/maintenance/README.md @@ -0,0 +1,43 @@ +# Maintenance mode + +> Despite our best efforts, systems sometimes require downtime for a variety of reasons. + +Quote from [here](https://www.nrmitchi.com/2017/11/easy-maintenance-mode-in-kubernetes/) + +We use our maintenance mode for manual database backup and restore. Also we +bring the database into maintenance mode for manual database migrations. + +## Deploy the service + +We prepared sample configuration, so you can simply run: +```sh +# in folder deployment/ +kubectl apply -f human-connection/maintenance +``` + +This will fire up a maintenance service. + +## Bring application into maintenance mode + +Now if you want to have a controlled downtime and you want to bring your +application into maintenance mode, you can edit your global ingress server. + +E.g. in file `deployment/digital-ocean/https/ingress.yaml` change the following: +```yaml +... + + - host: nitro-staging.human-connection.org + http: + paths: + - path: / + backend: + # serviceName: nitro-web + serviceName: maintenance + # servicePort: 3000 + servicePort: 80 +``` + +Then run ` kubectl apply -f deployment/digital-ocean/https/ingress.yaml`. If you +want to deactivate the maintenance server, just undo the edit and apply the +configuration again. + diff --git a/deployment/volumes/neo4j-offline-backup/README.md b/deployment/volumes/neo4j-offline-backup/README.md index 3638ebc89..5d773714b 100644 --- a/deployment/volumes/neo4j-offline-backup/README.md +++ b/deployment/volumes/neo4j-offline-backup/README.md @@ -23,11 +23,7 @@ So, all we have to do is edit the kubernetes deployment of our Neo4J database and set a custom `command` every time we have to carry out tasks like backup, restore, seed etc. -{% hint style="info" %} -TODO: implement maintenance mode -{% endhint %} - -First bring the application into maintenance mode to ensure there are no +First bring the application into [maintenance mode](https://github.com/Human-Connection/Human-Connection/blob/master/deployment/human-connection/maintenance/README.md) to ensure there are no database connections left and nobody can access the application. Run the following: