...
This grid has been designed to help recommend how our images will need to evolve to support multiple deployment options.
Deployment Resources
Potential DSpace code changes required for implementation
- INGEST: Move docker ingest tools from docker-compose mount directories into the docker image file system.
- VARIABLES: Simplify variable overrides by not using dashes and docs in variable names.
- CFG: Create a mechanism to pass in a config file when starting an image
- CLI: Migrate all CLI functionality to REST API calls. Create a queue system to allow some tasks to run in an isolated memory space.
- VOLS: Implement volumes as cloud storage. Cloud storage could be accessed from multiple nodes.
- REPL: Allow the database to be replicated to multiple nodes.
Deployment Options | Uptime | DSpace Nodes: Tomcat, SOLR, Angular | DB Nodes | Persistence | CLI Access and cron tasks | Notes | Changes needed to DSpace code |
---|---|---|---|---|---|---|---|
Local workstation/test server deployment with Docker Compose | Limited Duration for Testing | 1 | 1 | Docker Compose Volumes | docker exec | https://github.com/DSpace-Labs/DSpace-Docker-Images |
Dockerfiles
Consider moving some of the ingest tooling from docker-compose mounted files to a tools directory within the image.
Docker Compose
Remove test tools and scripts from the docker compose files.
INGEST | |||||
Server deployment with Docker Compose (shell access to server and network drives) | Extended Availability | 1 | 1 | Docker Compose Volumes bound to file system storage | SSH + docker exec |
Dockerfiles
Use dockerfiles without test access
INGEST, CFG | |||||||
Docker swarm options | Extended Availability | ? | ? | ? | ? | https://docs.docker.com/v17.09/get-started/part6/ | |
Local workstation/test server deployment with Kubernetes | Limited Duration for Testing | 1 | 1 | Use "local" volume. https://kubernetes.io/docs/concepts/storage/volumes/#types-of-volumes | ? | Some experimentation here: https://github.com/DSpace-Labs/DSpace-Docker-Images/pull/140 | |
Server deployment with Kubernetes (shell access to server and network drives) | Extended Availability | 1 | 1 | ? | ? | ||
Server deployment with Portainer management | Extended Availability | ? | ? | ? | ? | https://www.portainer.io | |
Public cloud deployment using vendor-specific deployment option (such as Amazon ECS or Fargate) | Extended Availability | 1 | 1 | Assetstore in cloud storage | No access |
DSpace
Enable all CLI functionality through the REST API. Some CLI functionality might need to be queued to a separate worker thread.
CLI, VOLS | |||||
Public cloud deployment using Kubernetes | Extended Availability | 1 | 1 | Assetstore in cloud storage | ? |
Enable all CLI functionality through the REST API. Some CLI functionality might need to be queued to a separate worker thread.
ImplementCLI, VOLS | |||||
Public cloud deployment using vendor-specific deployment option (such as Amazon ECS or Fargate) | Extended Availability | N | 1 or N | Assetstore in cloud storage | No access |
DSpace
Enable all CLI functionality through the REST API. Some CLI functionality might need to be queued to a separate worker thread.
Implement the asset store as cloud storage.
Dockerfiles
Enable replication of the database content to allow multiple database nodes?
CLI, VOLS, REPL | |||||
Public cloud deployment using Kubernetes | Extended Availability | N | 1 or N | 1 or N | ? |
Enable all CLI functionality through the REST API. Some CLI functionality might need to be queued to a separate worker thread.
Implement the asset store as cloud storage.
Dockerfiles
CLI, VOLS, REPL | |||||||
Deploying to Production / to the Cloud with Docker
...