Simplifying the deployment of Kubernetes cluster at home in a GitOps fashion w/ArgoCD π
A GitOps-based tool leveraging ArgoCD, Ansible and kubeadm for streamlined deployment of bare-metal Kubernetes clusters. Enables easy and declarative management for streamlined infrastructure oversight.
All of these are deployed via OpenTofu on top of Proxmox Virtual Environment v7.4-14.
Hostname | OS | Type |
---|---|---|
controlplane1 | CoreOS | VM |
controlplane2 | CoreOS | VM |
controlplane3 | CoreOS | VM |
workernode1 | CoreOS | VM |
workernode2 | CoreOS | VM |
workernode3 | CoreOS | VM |
halb01 | CentOS 7 | LXC |
halb02 | CentOS 7 | LXC |
- π¦ Declarative deployment of production-ready bare-metal Kubernetes clusters.
- π οΈ GitOps-based approach for managing Kubernetes apps.
- π Streamlined provisioning and management of clusters.
- π Simplified application deployment and configuration.
- π§ Customizable configurations for specific use cases.
Before getting started, ensure you have:
- Ansible >= 2.14
- Python >= 3.6
Follow these steps to install:
1. git clone https://github.com/chxmxii/kubegoros.git
2. task env:install
π kubegoros
βββ π kubernetes # Kubernetes directory
| βββ π adds-on # Adds-on applications
| βββ π apps # kubernetes applications
βββ π ansible # Ansible root directory.
| βββ π playbooks # Ansible playbooks.
| βββ π roles # Ansible roles.
| βββ π pre-setup # Responsible for getting the VMs ready for the flight.
| βββ π containerd # Installs and configure containerd.
| βββ π kubeadm # Install and configure kubernetes.
| βββ π gitops # Install, Configure and Bootstrap argoCD.
βββ π tests # Ansible tests.
βββ π .taskfiles # Taskfiles root directory.
βββ π ansible.yml # Tasks specific to cluster management with ansible
βββ π kyverno.yml # Tasks specific to enable or disable kyverno policies.
βββ π env.yml # Tasks related to environement setup.
Logo | Name | Description |
---|---|---|
Ansible | Automate bare metal provisioning and configuration | |
ArgoCD | GitOps tool built to deploy applications to Kubernetes | |
cert-manager | Cloud native certificate management | |
Calico | eBPF-based Networking, Observability and Security (CNI, LB, Network Policy, etc.) | |
Prometheus | Systems monitoring and alerting toolkit | |
Vector | High-performance observability data router | |
Loki | Log aggregation system | |
Vault | Secret management and data protection | |
Kyverno | Kubernetes Native Policy Management | |
Istio | Service mesh for connecting, securing, and managing microservices | |
KubeArmor | Kubernetes Native Runtime Security | |
MetalLB | Bare metal load-balancer for Kubernetes | |
NGINX Ingress Controller | Kubernetes Ingress Controller | |
Longhorn | Cloud native distributed block storage for Kubernetes | |
Velero | Backup and disaster recovery solution for Kubernetes clusters |
Once installed and configured, use taskfile to deploy and manage your Kubernetes cluster:
__ ___ __ __ __ __ __
|__/ | | |__) |__ / _` / \ |__) / \ /__`
| \ \__/ |__) |___ \__> \__/ | \ \__/ .__/
β Usage:
task help -> Display this message
task env:prepare -> Prepare the environment for the project
task env:install -> Install project dependencies
task cluster:init -> Provision the Kubernetes cluster
task cluster:reset -> Reset the Kubernetes cluster
task cluster:upgrade -> Upgrade the Kubernetes cluster
task cluster:backup -> Create cluster Backup
task nodes:check -> Verify Cluster Nodes Connectivity
task nodes:list -> Display Ansible Inventory
task nodes:reboot -> Reboot Cluster nodes
task policy:enable -> Enable kyverno Policies
task policy:disable -> Disable kyverno Policies
- Add support for Talos.
- Cloudfalre integration.
- Create smoke tests. ...