Used to create Otomi Container Platform compatible clusters and backing infra. The creation scripts use the cloud native cli to create preferred, suggested architectures, as found in the offerings of the public cloud providers.
Why "Yet Another Cluster Creator"?
The creation scripts you will find here are only using cloud native cli. This has the following benefits:
- Assuming the cloud provider core devs know best how to create their managed cluster offerings under a unified CLI, we can abstain from creating complex solutions targeting cluster components "under the hood" (like with ARM/CloudFormation/TerraForm).
- It prevents taking on technical debt (we prefer to use THE FORCE as is)
- The code is DRY and simple and not as susceptible to rot
Overall it warrants more simplicity, stability, predictability, maintainability, but also time to market.
Downsides:
- The scripts do not allow much tweaking or advanced architectures.
- Moves focus to cli know-how, so no more knowledge benefit from tinkering under the hood (but we think that is a good thing).
Most of the times the architectures offered here are suitable enough for lots of use cases, and clusters become much more manageable when it comes to lifecycle maintenance. If you want a customized setup with fine grained control over everything, there are plenty of solutions out there to choose from.
- Azure CLI
- Gcloud CLI
- eksctl
- Cloud access?
Please start by creating an empty git folder and installing the .demo/*
files there, and configure to your liking. Example:
export ENVC_DIR=$PWD/../otomi-clusters
mkdir $ENVC_DIR
cp -r .demo/* $ENVC_DIR/
cp -r .demo/.* $ENVC_DIR/
git init $ENVC_DIR
Any time you want to work on a clusters repo, always make sure you export ENVC_DIR
, CLOUD
and CLUSTER
:
export ENVC_DIR=$PWD/../otomi-clusters
export CLOUD=azure
export CLUSTER=dev
Cloud specific configuration is found in clouds/$CLOUD/default.yaml
. Cluster specific configuration is found in clouds/$CLOUD/$CLUSTER.yaml
files.
Please inspect the demo files to see what is possible. We might publish a jsonschema later, but we have more focus on otomi-core right now.
Now you can generate cluster creation scripts into $ENVC_DIR/build/$CLOUD/$CLUSTER/create.sh
with a dry run:
bin/create.sh azure dev 1
Or just drop the last argument, which will execute the creation script as well.