Manage a Project
In this guide we'll explore how Holos easily, safely, and consistently manages platform resources for teams to develop the projects they're working on.
Intended Audience: Platform Engineers and Software Engineers.
Goal is to demonstrate how the platform team can consistently, easily, and safely provide platform resources to software engineers.
Assumption is software engineers have a container they want to deploy onto the platform and make accessible. We'll use httpbin as a stand-in for the dev team's container.
Project is roughly equivalent to Dev Team for the purpose of this guide, but in practice multiple teams work on a given project over the lifetime of the project, so we structure the files into projects instead of teams.
What you'll need
You'll need the following tools installed to complete this guide.
- holos - to build the Platform.
- helm - to render Helm Components.
- kubectl - to render Kustomize Components.
If you'd like to apply the manifests we render in this guide complete the following optional, but recommended, steps.
a. Complete the Local Cluster guide to set up a local cluster to work with. b. You'll need a GitHub account to fork the repository associated with this guide.
Fork the Guide Repository
- Command
- Output
This guide assumes you will run commands from the root directory of this repository unless stated otherwise.
Render the Platform
So we can build the basic platform. Don't dwell on the platform bits.
Apply the Manifests
Deploy ArgoCD, but not any of the Application resources.
Browse to ArgoCD
Note there is nothing here yet.
Switch to your Fork
Note all of the Applications change consistently.
Apply the Applications
Note how ArgoCD takes over management, no longer need to k apply.
Create a Project
Project is a conceptual, not technical, thing in Holos. Mainly about how components are laid out in the filesystem tree.
We use a schematic built into holos as an example, the platform team could use the same or provide a similar template and instructions for development teams to self-serve.
Render the Platform
Notice:
- Project is registered with the platform at the root.
- HTTPRoute and Namespace resources are added close to the root in
projects
- Deployment and Service resources are added at the leaf in
projects/httpbin/backend
Update the image tag
Add a basic schematic to demonstrate this. May need to add two new flags for image url and image tag to the generate subcommand, but should just be two new fields on the struct.
Dive Deeper
Set the stage for constraints. Ideas: Limit what resources can be added, namespaces can be operated in, enforce labels, etc...
Simple, consistent, easy constraints.