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:
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
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
To be able to manage projects with the hen
CLI, you must have the following:
Maintainer
Membership in the Engineering groupMaintainer
level access in the Gitlab Groups and/or Projects you will be managingIf you need help with access control in Gitlab, please talk to your manager, or ping @gitlab-admins
in Slack.
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.
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:
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.
This pipeline stage is used for pre-production validation of software. It is analogous to traditional "test" or "QA" environments.
The final pipeline stage in which live customer traffic is served from.
The Hen platform is underpinned by open-source tools and cloud-native technology. The major components of its architecture are described below.
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.
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.