In this tutorial, you will learn how to build the first version of your own Internal Developer Platform using our free trial. You will learn how to wire up your own infrastructure and tools and how to import the first images from your CI pipelines. We will explain how to get started along the way. A few things before we start:
If you are stuck at any point, feel free to reach out to us and we are happy to help:
To get started with Humanitec, head over to our website to request a free trial. We will send you instructions on how to start your free trial right away.
From these instructions, you can sign up for Humanitec and create your organization.
Building an Internal Developer Platform might first sound intimidating. One good way to get started is to select a simple app to move first and then adding elements step by step. We advise teams to start with a simple application made up of a small number of services (less than five is a good starting point; the fewer the better) and a limited number of dependencies (such as databases, file storage). Furthermore, it is a good idea to start with a service that can be exposed via a generic DNS name without the need for external mappings or routings.
Examples of applications that customers have used to get up and running quickly on Humanitec include:
An internal time-tracking application made up of 2 services with a dependency on an S3 bucket.
A customer-facing ruby-on-rails application running next to a separate service handling background jobs. Both services had dependencies on a shared PostgreSQL database and an NFS volume.
A single spring-boot web service storing and manipulating geographic data with a dependency on MongoDB.
If you don't have an application at hand use you can clone our sample app to your repository. The section Create a new Application provides more details about this sample app. Once you've cloned the repository make sure you have a pipeline that can build the images.
Humanitec provides the best experience when artifacts (i.e., container images) from a successful build in a CI pipeline are immediately available inside your Internal Developer Platform. The easiest way to do this is to add a step at the end of your Ci pipelines to notify Humanitec about a new artifact being available.
Humanitec provides simple integrations for GitHub Actions, Bitbucket Pipelines, CircleCI, and Gitlab Jobs. Any other CI tool can also be used, but it requires a bit more work to set up. Full instructions can be found here:
Note that images will only become available in Humanitec once the CI pipeline has run after the Humanitec step has been added.
We recommend initially pushing images to the Humanitec provided registry as this removes a whole load of potential issues around managing credentials for private registries.
In the next step, you will need to decide whether you want to connect your own Kubernetes cluster or work with the pre-connected Kubernetes cluster (and CloudSQL database) connected to your free trial. From our experience, the pre-connected infrastructure works in 80% of the cases to get the first application up and running.
Note that all deployed workloads are cleared from the pre-connected Kubernetes cluster between 00:00 and 02:00 UTC every day.
If you want to run your application in your own managed Kubernetes cluster, you can find instructions on how to connect it here:
Managing external dependencies with your Internal Developer Platform can significantly simplify your life. For example, a PostgreSQL database could be run in-cluster or provided via a managed service such as AWS RDS.
Humanitec makes it easy to provision dependent resources as External Resources. There is a growing number of technologies that are supported out of the box. If you need a specific technology that is not yet officially supported, reach out to us - we either have a proprietary driver for it or are happy to support with creating your own driver!
Based on how you decided to satisfy dependencies, you may need to configure external resources such as databases. You can find out more about how to configure external resources here:
Create a new application and add workloads - one per service in your application. Make sure to configure each workload as needed. Check out this secion for details:
By default, you will have an environment called Development. Ensure that you expose at least one of the workloads so that you will be able to interact with your application.
For a step-by-step guide on how to spin up an application check out this tutorial.
In your App Detail Screen, you can find the Deploy to Development button on the top-right. Once you click it, an overlay with the list of changes you made will appear. Click the Deploy button to start your first deployment.
When your application is deployed, the Development environment, as well as your deployment, will be tagged as Running. A public URL will show on each workload that you exposed. If you are interested in understanding what happens if you hit Deploy, check out this section:
If your application is running you might want to let your developers test their daily workflows with an Internal Developer Platform. Check the Role-Based Access Control section to learn how to assign roles.
The following section explains the daily workflows of developers using an Internal Developer Platform.
It's now time to add complexity and additional infrastructure that your application requires step by step. Learn how to add all your infrastructure, deal with DNS, write resource drivers, and wire everything up in this section:
Learn how how to customize baseline configuration for your organization and learn everything else about Application Configuration Management here: