Modules

Overview

Walhall’s primary functions are to help you develop containerized apps and deploy them to Kubernetes. The apps derive their code from repositories linked from your GitHub organization.

When you link your organization to GitHub, Walhall imports the repositories as modules. Users in your organization can include these modules in multiple different apps.

This section describes how to develop apps and build modules.

What is a module?

A module is a code repository that has been linked to Walhall from your GitHub organization.

Screenshot: Modules in an app

When you deploy your app, Walhall will allocate a development environment and build an image for each of your modules. You can optionally expose these modules externally on an auto-generated domain name by clicking on the module and selecting Expose with public URL.

Screenshot: Expose public URL

How do I create a module?

Technical requirements

  • It must include a Drone file. See the Drone page for more details.
  • It must include a Dockerfile.
  • The repository must have a tagged commit that includes both the Drone file and the Dockerfile.

Add the module to your app

  1. Log in to Walhall and click on your app.
  2. In the box labeled Add new module, click Browse.
  3. A list of modules, derived from your organization’s repositories, will load. If you don’t see your module, then click Refresh the list. If you do, then click the Add button.
  4. Click Finish selection.

The module will be added to your app. However, you must deploy the app again in order for the changes to take effect.

How do I configure a module?

You can define the environmental configuration settings for your module by clicking on it in the list of modules.

Once you click on it, a number of tabs will appear:

Details

The Details tab lets you expose your module with a public URL. Check the box and enter the ports on which it serves its content and receives connections.

Build log

This tab shows the logs for all of the build steps defined in your Drone file. You can use these logs to troubleshoot issues with your module’s Dockerfile or your Drone configuration.

Container log

This tab shows the logs for the container that Walhall builds for this module. You can use these logs to troubleshoot runtime issues with your module.

Configuration

The Configuration tab lets you add and remove properties from the module’s config map. These are values that will be exposed to your module in the specific environment you chose on the app overview screen. The values you define here will not carry over to a different environment.

When you add your module to an app, Walhall will create the following default configurations:

  • DATABASE_HOST: Host address of the module’s dedicated database.
  • DATABASE_PORT: Port where the module’s database listens.
  • DATABASE_ENGINE: Engine used to run the module’s database (PostgreSQL).

NOTE: You should not store sensitive credentials in the module’s config map. Use the Secrets tab instead.

Secrets

See the Secrets management for information about how to define secrets for your module.

Documentation

This tab shows the README file from your module’s repository.

How do I update a module?

When you want to push an update for a module that’s been deployed in a Walhall app, you must push a tag in the module’s GitHub repository. This will prompt Walhall to build a new image for the module.

Then, log in to Walhall and go to your app. Click on the version dropdown, and you should see the new version you just pushed.

Screenshot: Select new module version in Walhall

How do I remove a module from an app?

On the app overview screen, click on the module you want to remove, and then click the Remove button in the upper left:

Screenshot: Remove module from app