This is the high level architecture of the platform
- Terrakube API:
- Expose a JSON:API or GraphQL API providing endpoints to handle:
- Workspace API with the following support:
- Terraform state history
- Terraform output history
- Terraform Variables (public/secrets)
- Environment Variables (public/secrets)
- Cron like support to schedule the jobs execution programmatically
- Custom terraform flows based on Terrakube Configuration Language
- Terrakube Jobs:
- Automatic process that check for any pending job operations in any workspace to trigger a custom logic flow based on Terrakube Configuration Language
- Terrakube Executor:
- Service that executes the Terrakube job operations written in Terrakube Configuration Language, handle the terraform state and outputs using cloud storage providers like Azure Storage Account
- Terrakube Open Registry:
- This component allows to expose an open source private repository protected by Azure Active directory that you can use to handle your company private terraform modules or providers.
- Cloud Storage:
- Cloud storage to handle terraform state, outputs and terraform modules used by terraform CLI
- The platform can be used with any database supported by the Liquibase project.
- Terrakube CLI:
- Go based CLI that can communicate with the Terrakube API and execute operation for organizations, workspaces, jobs, templates, modules or providers
- Terrakube UI:
- React based frontend to handle all Terrakube Operations.
Terrakube can installed in any kuberentes cluster using any cloud provider. We provide a Helm Chart that can be found in the following link.