Walhall

Overview

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.

Screenshot: Create an app

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.

Your microservices must have their own Dockerfiles and they must implement Walhall’s CI/CD pipeline in order to be deployable on Walhall.

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:

  1. Creates an environment, a namespace, and environment secrets for your app.
  2. Creates instances of the app’s logic modules (and BiFrost and Midgard, if you selected them) in the namespace.
  3. 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.

Environments

Screenshot: Environments

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:

Screenshot: Configurations for logic module Docker images in Walhall

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.