The Application Orchestration Catalog Service (App Catalog) is a cloud-native application on the Edge Orchestrator that provides a repository for end-user Application definitions and Deployment Packages (collections of Applications) that can be deployed to Edge Node clusters in the Open Edge Platform.
An App Catalog Application is an application definition that points to a Helm Chart (ultimately stored in a Helm Registry), which points to zero or more Container images (ultimately stored in Container registries). A Deployment Package is a definition of a group of Applications that are deployed together to an Edge Node cluster.
The App Catalog is also used to store Cluster Extensions as Application definitions that provide many of the packages needed to secure Edge Node clusters, along with others that package commonly used cloud-native applications such as Virtualization, Observability, etc.
The App Catalog presents a REST API to manage the lifecycle of these Deployment Packages. This API is used by the Edge Orchestrator Web UI to present this functionality to the end-user. The App Catalog provides a YAML schema that defines the structure of Deployment Packages, Applications, and Registry information.
Application Orchestration Deployment updates the App Catalog with the deployment status of deployed applications.
The App Catalog is multi-tenant capable, and the Tenant Controller populates the App Catalog as new multi-tenancy Projects are created and deleted.
The App Catalog depends on the Edge Orchestrator Platform Services for many support functions such as API Gateway, Authorization, Authentication, etc.
The overall architecture of the Application Orchestration environment is explained in the Edge Orchestrator Application Orchestration Developer Guide.
Many parts of the App Catalog are described in the following sub-documents:
The App Catalog is developed in the Go language and is built as a Docker image, through a Dockerfile
in its build
folder. The CI integration for this repository will publish the container image to the Edge Orchestrator
Release Service OCI registry upon merging to the main
branch.
The App Catalog has a corresponding Helm chart in its deployments folder.
The CI integration for this repository will
publish this Helm chart to the Edge Orchestrator Release Service OCI registry upon merging to the main
branch.
The App Catalog is deployed to the Edge Orchestrator using this Helm chart, whose lifecycle is in turn managed by
Argo CD (see Platform Services).
The App Catalog API is defined first in Protobuf format in the api folder, and then the Go code and the REST API definition and implementation are generated from this.
The App Catalog uses a SQL database to store the Deployment Packages, Applications, and Registry information, utilizing the ENT Object Relational Mapping framework to manage the database schema. The database technology used by default is PostgreSQL, but other databases could be used by changing the configuration.
The repository also contains the source code for the Developer Guide App Orch Tutorial.
This code requires the following tools to be installed on your development machine:
- Docker to build containers
- Go* programming language
- golangci-lint
- Python* programming language version 3.10 or later
- buf
- protoc-gen-doc
- protoc-gen-go-grpc
- protoc-gen-go
- KinD based cluster for end-to-end tests
- Helm for install helm charts for end-to-end tests
Below are some of important make targets which developer should be aware about.
Build the component binary as follows:
# Build go binary
make build
Unit tests are run for each PR and developer can run unit tests locally as follows:
# Run unit tests
make test
Linter checks are run for each PR and developer can run linter check locally as follows:
make lint
License checks are run for each PR and developer can run license check locally as follows:
make license
Container image app-orch-catalog
for the component is generated as follows:
make docker-build
If developer has done any helm chart changes then helm charts can be build as follows:
make helm-build
We welcome contributions from the community! To contribute, please open a pull request to have your changes reviewed
and merged into the main
branch. We encourage you to add appropriate unit tests and end-to-end tests if
your contribution introduces a new feature. See Contributor Guide for information on how to contribute to the project.
To learn more about the project, its community, and governance, visit the Edge Orchestrator Community.
For support, start with Troubleshooting or Contact us.
The Application Orchestration Catalog is licensed under Apache 2.0 License