Application Components#
As was covered in the Project Layout section, each app has its own directory in the EDA project. Taking the quickstart app as a starting point, your project directory will contain the banners directory that hosts everything an application might feature.
.
├── api
├── crds
├── intents
├── openapiv3
├── rbac
├── workflows
├── test
├── ui
├── go.mod
├── go.sum
├── LICENSE
├── manifest.yaml
└── README.md
The components that can be found in an application bundle are:
-
Application API:
- To define application APIs, edabuilder uses the same pattern as kubebuilder, i.e. the API is defined by the Go files in the
api/directory. - Based on the source API types defined in
.gofiles,edabuilder generatemanages the following components: - Python models equivalent to your API structs defined in Go
- Custom Resource Definitions (CRDs)
- OpenAPI schema files, which describe extensions to the schema of both Kubernetes and EDA
Many subcommands start off by running
edabuilder generateto make sure your app state is always up-to-date. * Intents aka Scripts, which are executable code that can be run in the context of a resource. These are typically used to implement the logic of the application for non-Kubernetes-controller apps. * Views, which are UI dashboards. This is typically used to bundle dashboards alongside the resources within the application. - To define application APIs, edabuilder uses the same pattern as kubebuilder, i.e. the API is defined by the Go files in the
- Workflows, which are run to completion logic that can be triggered by resources. This is typically used to implement the logic of the application for one-shot operations - things like upgrades or other operations that are not ongoing.
- RBAC objects - optional rbac roles that an application might require.
- Bootstrap resources, which are similar to resources, but are immutable - they're intended primarily as a means for bootstrapping new
Namespaceresources in EDA. It is typically to see things like allocation pools or default resources in this category.
A simple application may contain only one of the above, while a more complex application may contain all of them.