This is the high level architecture of the platform
Component descriptions:
Terrakube API:
Expose a JSON:API or GraphQL API providing endpoints to handle:
Organizations.
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
Job.
Custom terraform flows based on Terrakube Configuration Language
Modules
Providers
Teams
Teamplate
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 Dex 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
RDBMS:
The platform can be used with any database supported by the Liquibase project.
Security:
All authentication and authorization is handle using Dex.
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.