Deployment with Walhall

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, which are known as modules.

This page explains the process of deploying an app on Walhall.

How do I deploy an app?

Once you have created an app, then you will see a button in the top right corner of the app overview page to deploy it:

Screenshot: Deploy your app in Walhall

By default, each app includes a development environment. You can create multiple environments to run multiple versions of your apps simultaneously.

What does “deploy ready” mean?

“Deploy ready” refers to whether or not a given module can be deployed with your app. In order to be “deploy ready,” the module’s repository must include the following:

  1. Dockerfile
  2. Drone file: Each module repository must have a Drone file (.drone.yml) in its root. Here is a basic Drone file you can add to your repository:
    # .drone.yml - Sample file for connecting your module to Walhall's CI/CD pipeline. 
    # Save this in the repository root. You don't have to change anything.
    # All environment variables are created in Walhall as secrets.
    
    pipeline:
    # Walhall requires git tags to exactly match the image tags. 
    # This step preserves the tags.
      preserve-git-tags:
        image: bash
        commands:
          # If the commit reference is a tag, then Drone will write the tag to the .tags file
          - bash -c "[[ \"${DRONE_COMMIT_REF}\" == \"refs/tags/\"* ]] && echo \"${DRONE_COMMIT_REF#refs/tags/}\" > .tags"
        when:
          event: [tag]
    
      # This step builds the image and pushes it to the registry when a tag is pushed.
      # Drone is configured to use the Walhall registry by default.
      build-docker-image-tag:
        image: plugins/docker
        registry:
          from_secret: DOCKER_REGISTRY
        repo:
          from_secret: DOCKER_REPO
        username:
          from_secret: DOCKER_USERNAME
        password:
          from_secret: DOCKER_PASSWORD
        insecure: true
        file: Dockerfile
        when:
          event: [tag]
          status: [success]
  3. A tagged commit that includes the Dockerfile and the .drone.yml file.

What happens when I deploy an app?

When you click “deploy,” Walhall does the following:

  1. Retrieves Docker images for each version of each module.
  2. Creates a cluster, namespace, database, and database user for each module.
  3. Creates/updates secrets for each module.
  4. Creates/updates config maps for each module.
  5. Creates deployment controllers and pods, and then assigns a cluster IP, ingress, and DNS entries for each module.

Once your app is deployed, you can click on each module to see its public IP address.

If you enabled the API gateway, then your app will have a single API URL for requests to all of your modules.

If your deployment failed, then take a look at our troubleshooting page for tips on how to fix common deployment issues.

How do I update a module?

All you have to do is push a tag in the module’s repository. Then, go to your Walhall app, click the Update button underneath the version dropdown, choose the new version, and re-deploy the app.

Screenshot: Update module in Walhall