Introduction

What is Hen?

Hen is a set of tooling, deployment architecture, and infrastructure that make up a platform-as-a-service for applications at Minted. It's primary goals are as follows:

  • Homogenize the deployment tooling and platform for projects at Minted
  • Consolidate our runtime platform on Kubernetes, but abstract the complexity away
  • Provide a framework for modern application DevSecOps
  • Improve the reliability and speed of software delivery

Hen CLI Quickstart

Install the Hen CLI

NOTE: make sure either PIP_EXTRA_INDEX_URL is set to Minted's Nexus PyPI, or you
have set it in ~/.pip/pip.conf. See the pip documentation and the "Minted Nexus PyPI Repository Setup" LastPass note.

1pip install --upgrade hencli

Create a Gitlab Personal Access Token

Hen communicates directly to Minted's Gitlab installation, and to do so, you need to be able
to access its API using a personal set of credentials. Follow the Gitlab documentation to create a token with the following scopes:

1api
2read_user
3write_repository
4write_registry

Verify your Gitlab Access Level

To be able to manage projects with the hen CLI, you must have the following:

  • Maintainer Membership in the Engineering group
  • Maintainer level access in the Gitlab Groups and/or Projects you will be managing

If you need help with access control in Gitlab, please talk to your manager, or ping @gitlab-admins in Slack.

Initialize the project:

1hen init --gitlab-url=https://gitlab.com/minted

This command works with both new and existing projects. Follow the prompts to create or update your project in Gitlab. After doing so, you'll have a hen.yaml file in your project root. This can be customized to meet the specific needs of your application, but Hen will try and detect your application automatically if a Dockerfile is present in the project.

Once your hen.yaml file is configured as desired, you can push your changes to Gitlab, and your Hen-configured CI/CD pipeline will automatically run on your default branch. Read on to learn more about Hen's deployment pipeline.

Deployment Pipeline

Hen enforces a standardized pipeline to make deployment homogenous for projects within the platform. The benefit to this is that more investment can be made in to the tooling that enables robust software delivery for a smaller, more predictable set of deployment requirements. One example of this is the ability to provide native deployment strategies, such as blue-green or canary deploys, for any project on the platform.

The deployment pipeline has three stages:

  • Development and Review

This pipeline stage contains development environments and "review" environments. "Review" environments are those that are automatically created for non-default branches, such as in merge- and pull-requests.

  • Staging

This pipeline stage is used for pre-production validation of software. It is analogous to traditional "test" or "QA" environments.

  • Production

The final pipeline stage in which live customer traffic is served from.

Technology

The Hen platform is underpinned by open-source tools and cloud-native technology. The major components of its architecture are described below.

Kubernetes

Kubernetes (colloquially referred to as k8s) is a container orchestration technology. It is at the heart of Hen, which specifically focuses on supporting container-based workloads.

Vault

Hashicorp Vault is a platform for managing sensitive data, credentials, tokens, etc. It is deeply integrated with other tooling in the platform to enable engineers to safely and easily manage this kind of data for their application runtimes.

Read more about Vault in Hen