Walhall is a platform for deploying apps with microservice architectures to a number of environments and monitoring them from a dashboard. It pulls the source code of your microservice architecture from your own code repositories using a CI pipeline and stores Docker images of the services in its registry.
Walhall is designed to enable code reuse. You can add your own library of microservices from your GitHub repositories to your Walhall app as custom logic modules, or you can reuse logic modules that implement common business logic from the Walhall marketplace.
We offer the following tools to build out your microservice architecture with Walhall:
- BiFrost: An API gateway and core authentication layer that combines your microservices into a single API.
- Midgard: A frontend web app for your microservices based on a micro-frontends approach.
Get started with Walhall
See the Get started with Walhall tutorial for information on how to register and deploy your first app.
How Walhall works
At this time, you can add your microservice architecture to Walhall as an app by creating it in the web UI.
Each app incorporates a set of microservices in the form of logic modules. These logic modules can be forked from the marketplace, or they can be logic modules that you add to Walhall from your GitHub repositories.
We recommend using BiFrost as an API gateway in your app because it acts as a central communications point for your services and comes with user and permissions management out of the box. However, you don’t have to use BiFrost; see the section at the end for information.
The deployment process
When you’re ready to deploy your app, all you have to do is log in to the Walhall web UI, click on your app, and click the Deploy button in the upper right.
When you click “deploy,” Walhall does the following:
- Creates an environment, a namespace, and environment secrets for your app.
- Creates instances of the app’s logic modules (and BiFrost and Midgard, if you selected them) in the namespace.
- Creates config maps, app secrets, cluster IPs, deployments, and containers for the logic modules (and BiFrost and Midgard, if applicable).
Walhall’s CI/CD pipeline
Walhall uses Drone CI for CI/CD. Logic modules forked from the marketplace will include the Drone configuration by default.
See the Add custom logic modules tutorial for information about how to implement the CI/CD pipeline in your custom logic modules.
How to push an update
If you want to deploy an update to one of your logic modules, first you have to push a tag in its GitHub repository. This will create a new version of the logic module, which will become available in the Walhall UI. You can then go to your app and switch the version using the dropdown field on the logic module.
Manage config maps
Before you deploy the app, you have the option to manage the config map. Log in to Walhall, go to your app, and click the Configuration tab on the left:
Here you can configure the environment variables used in the Docker images for your logic modules, BiFrost, and Midgard.
Using BiFrost as an API gateway
When you create an app with BiFrost, all you have to do to make your custom logic modules compatible is to implement the BiFrost API in the source code.
Whenever the build process is triggered for your app, BiFrost runs an auto-discovery process to register (and/or update) all of the endpoints from your logic modules. It exposes all of these endpoints as a single API with a public URL. This URL will appear on your app overview page when you deploy the app.
BiFrost also serves an API documentation page for your app via SwaggerUI. You can access this documentation by clicking on the API URL on your app overview page and then clicking the API link.
See the BiFrost documentation for more information about the BiFrost data model and permissions model.