Architecture
Before effectively using Heighliner, it is necessary to understand the overall architecture. That is to understand the components being provided to you and how to use them. This page provides useful description and links to build up this understanding.
From a high-level view, Heighliner contains the following components:
Heighliner CLIβ
Heighliner CLI provides the best local experience to work with Heighliner stacks. It walks users through the process of using Heighliner Stacks to setup their application environments. It can also be used to search and download stacks, manages environments, provide user interaction based on stack input.
With Heighliner CLI, you can also do IaC style GitOps workflow.
For more details and examples, please refer to the hln CLI page.
Heighliner StackHubβ
StackHub stores Heighliner stacks and provides a searchable interface to find the right stack for your app. It could be used to download and install a stack, or to search for stacks. Under the hood, it could be some kind of storage backends, such as object storage buckets, or OCI compatible hub (e.g. Harbor). Heighliner platform will recognize and index the data, and serve users with search results.
We provide a default StackHub hosted on the cloud which stores the default stacks. When you use the CLI/UI it will use the default one.
Heighliner Serviceβ
We have built necessary Heighliner services to help streamline development workflow. There are necessary services that cannot be achieved at the client side. For example, you can use Heighliner services via HTTP APIs or CUE libraries when you need to allocate sub-domains for your apps.
Daggerβ
Dagger is a portable devkit for CICD. We use it to orchestrate infra tools and services. It is the execution engine of Heighliner stacks. While having contributed some of the libraries to Dagger upstream, We have extend it with our own CUE modules to compose cloud-native tooling and infrastructure.
Kubernetesβ
Kubernetes is an open source container orchestration engine for automating deployment, scaling, and management of containerized applications. We use it to orchestrate service deployments. This is our platform base where we deploy services and integrate with other cloud services.
Terraformβ
Terraform is an infrastructure as code tool that lets you define both cloud and on-prem resources. We use it to provision and manage the infrastructure resources. In our use case, Terraform is one layer down from Dagger: After Terraform provisions a resource, Dagger will execute the CUE modules to interact with it, e.g. deploy a service, setup configuration, etc.