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.
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.
Alternatively, if you have enabled the Humanitec API gateway in your app, it will create a single API URL for routing requests to all of the modules.
How do I create a module?
- 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
- Log in to Walhall and click on your app.
- In the box labeled Add new module, click Browse.
- 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.
- 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.
If your app includes the Humanitec API gateway, then it will auto-discover the module’s IP address and Swagger file and add the endpoints to your app’s API.
If you’re not using the Humanitec API gateway, then you can expose your modules with their own public URL. See the next section for more information.
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:
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.
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.
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.
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.
See the Secrets management for information about how to define secrets for your module.
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, go to the app where you want to update the module, and click the Update button on the module:
Walhall will build an image for the new version. Then, you can then select the new version from the dropdown and click Deploy.
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: