Blast (Bare Metal Immutable cluster) is a simplified Kubernetes Distribution and Cluster definitions for my personal clusters. While the primary focus will be to be usable for bare-metal installs, cloud installations will be readily usable.
Set the Civo API key as a Gitpod Secret
gp env CIVO_API_KEY=<api key here>
make blast-otr
Based on FluxV2 Repository Layout (and yes, I do realize the irony of using Flux's layout while deploying ArgoCD)
- /clusters: Actual cluster definition in ClusterAPI, as well as ArgoCD Cluster Definitions
- /infrastructure: Core Infrastructure that is generally installed across all clusters
- /apps: Individual apps to be installed by end-clusters
- /docker: Docker build and associated build tooling
- /scripts: Scripting to support primarily the bootstraping process. Most scripts should be embedded in docker containers.
Should work across all network equipment.
- Core Infrastructure
- k3d: For bootstrapping and CI/CD purposes. Choosen for minimal resources
- Kubernetes Cluster API: Central way to define clusters
- Crossplane.io: To be used to manage any resources NOT natively defined in k8s
- Core K8S AddOns
- Klum: Easy way to manage users/kubeconfigs
- ArgoCD: GitOps Opertor for once Clusters are provisioned
- SealedSecrets: For safe secrets management directly in the repository
- Storage
- Mayastore or Rook Distributed storage. Would rather avoid centralized NAS/storage for primary storage
- hostdir for large or IO intensive storage. Backup would have to be one-off jobs.
- Backup
- Minio for providing external storage in a bucket interface
- Kastaen K10 Easiest way to backup
- Checkov For scanning generated files and identify concerns
- Docker Bechmark
- Claire