QIE Container Guide¶
QIE has been designed to run inside of clustered environment with all nodes using the same back-end database. This allows the QIE service to run in a Docker environment such as Kubernetes or docker-compose. New nodes can be added to a cluster or nodes can be removed from a cluster without any worry of causing problems to the QIE environment.
This guide is a general overview of how to control QIE in docker environments. It is not a specific how-to on running in any specific environment or using any specific container orchestrator. Some references are made to Kubernetes since it is the most common docker orchestrator in use.
Repositories¶
Qvera maintains official docker images of the QIE application on both Docker Hub and AWS Elastic Container Registry.
Docker Hub: https://hub.docker.com/u/qvera/qie
AWS ECR: https://public.ecr.aws/qvera/qie
As new versions of QIE are released, the updated images are published on both repositories.
Standing up a cluster¶
Work through these in order:
- Sizing QIE HA Node Instances covers deciding CPU and memory per node instance first. An instance has to be large enough to process your largest single message or batch file on its own, so this constrains everything after it.
- Cluster Database Configuration covers the back-end database, which needs its in-memory tables configured before a cluster can come online.
- Java Options and Environment Variables covers how a containerized node instance is configured, and the environment variables that replace the usual Java options.
- Example Kubernetes YAML is a complete Deployment manifest to adapt once you know the values from the previous steps.
Operating a cluster¶
Read these as you need them:
- Monitoring QIE HA Node Instances covers health and readiness checks for an orchestrator.
- Scaling QIE HA Node Instances covers adding and removing node instances on a running cluster.
- Upgrading QIE HA Node Instances covers moving every node instance to a new QIE image version, including the Kubernetes Recreate-vs-RollingUpdate trap.
- Log Management covers where a containerized node instance writes its logs and how to collect them.
- Third-Party Libraries covers making external JARs available to the Rhino scripting classpath in a container.