Deployment

Overview

The Humanitec platform provides a simple interface for deploying containerized apps to Kubernetes. The apps consist of code repositories linked from your GitHub organization. Once you connect your repositories to the platform, you can add them to your apps as modules.

By default, the Humanitec platform lets you deploy to a Google Cloud Platform (GCP) cluster managed by the platform itself. However, you can also deploy to your own cluster on GCP or Amazon Web Services (AWS).

When you create an app, the platform will create a deployment environment and take you to the overview screen. It contains the modules you selected during the creation process.

Screenshot: Deployment environment

All of the configuration and environment settings are bundled together as a deployment set. When you deploy the deployment set, a historical record is created for that deployment set. You can view the configuration settings deployed in that set by clicking on its historical entry in the lower right corner:

Screenshot: Deployment set history

All changes that you make to your environment before deploying it are stored in a deployment draft. This allows you to preview the changes that will be deployed. When you deploy your app, the draft becomes a deployment set, and the platform creates a new draft.

How do I deploy an app?

  1. Log in to the Humanitec platform and go to the app you want to deploy (or create one).
  2. Apply any configuration changes to your modules that you want to deploy. You can configure a module by clicking on it in the list of modules.
  3. Choose the cluster you want to deploy your app to. The options are:
  4. Click the Deploy to Development button.
  5. A modal will appear with a list of changes to be deployed. Click the Deploy button.

What happens when I deploy an app?

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

  1. Retrieves Docker images for each version of each module from its own registry.
  2. Creates a cluster (unless you are deploying to your own on GCP or AWS).
  3. Creates a namespace, database, and database user for each module.
  4. Creates/updates secrets and config maps for each module.
  5. Creates deployment controllers and pods, and then assigns a cluster IP, ingress, and DNS entries for each module.

If you exposed your modules with public IP addresses, then these addresses will appear after the app has been deployed. You can also see these URLs by clicking on the modules.

Requirements for deploying your modules

Your module repositories must include the following in order to be deployed using the Humanitec platform:

  1. A Dockerfile.
  2. A tagged commit that includes the Dockerfile.

CI/CD with the Humanitec platform

You don’t need your own CI/CD pipeline in order to deploy your code with the platform. Whenever you push changes to your code, you will have to trigger a build of the latest image on the platform yourself.

If you would like the platform to build a new image automatically whenever you push a tag in your repo, then you can use the platform’s built-in Drone instance.

Deployment failed?

If your deployment failed, then take a look at our troubleshooting page.

Free trial limitations

The following limitations apply to the free trial of the Humanitec platform:

  • Both user access management and source code management are handled through GitHub.
  • You may create no more than 20 apps, with no more than 3 environments each.
    • If you deploy your app to a cluster managed by Humanitec, then each deployed module will have a lifespan of 1 day.
  • You may only create development environments with the free trial.
  • The free trial does not include the role-based access control model. Each member of an organization has full access to all applications for that organization and can delete and edit environments and applications.
  • For ingress, all deployed modules must use the *.newapp.io certificate.