Deployment¶
This page outlines the deployment process for self-hosted instaNDT customers. It covers architecture, environment options, and configuration prerequisites required to run instaNDT securely on your own infrastructure (either on-premise or within a private cloud account).
Core Container Architecture¶
The application is distributed as three distinct, modular container images. Each container fulfills a specific lifecycle or runtime role:
- DB Migration: Runs once per release to update the database schema
- Backend: Exposes API services and interacts with the database
- Frontend: Web interface serving UI for users to interact with the application
Deployment Methodologies¶
Option A: On-Premise Deployment¶
- Target Environment: Local enterprise servers, internal physical hardware, or single-node private virtual machines.
- Orchestration Tool: Docker and Docker Compose.
- Workflow Summary:
- Pull the release images from the provided GitLab container registry
- Configure environment variables inside a .env file (database credentials, secrets, ports)
- Execute the migration container to prep the database state
- Spin up the frontend and backend containers
Option B: Private Cloud Deployment¶
- Target Environment: Customer-owned cloud accounts (i.e.: AWS, Azure, GCP, etc.).
- Orchestration Tool: Cloud-native orchestrators (i.e.: AWS ECS, Azure Container Instances, etc.).
- Workflow Summary:
- Push or pull images to your private cloud container registry (i.e.: ECR or ACR)
- Provision underlying networking (VPCs, subnets, security groups) and databases (i.e.: AWS RDS PostgreSQL or Azure Database for PostgreSQL).
- Deploy the database migration job
- Deploy the backend and frontend services using container services with internal/external load balancer(s)
Regardless of where the application is deployed, certain environment variables must be set. Refer to this section for details on the required environment variables.
Detailed Guidance: For step-by-step setup, check the Infrastructure section.
Infrastructure as Code¶
To simplify provisioning on cloud platforms, we provide a sample OpenTofu configuration. OpenTofu allows you to declaratively define and manage all required cloud networking, compute instances, security groups, and managed databases. Refer to the Automation with OpenTofu section on how we make use of OpenTofu and refer to the Infrastructure section of a specific cloud on how to deploy those resources.