-
-
Notifications
You must be signed in to change notification settings - Fork 1
Home
Welcome to the official RKEasy Wiki! RKEasy is an Ansible-based tool designed to help you deploy, manage, and scale RKE2 Kubernetes clusters easily and efficiently.
- π Introduction
- π Project Structure
- π§ Prerequisites
- π Installation & Getting Started
- π Cluster Management
- π Updates & Scaling
- π Security Practices
- π Add-ons & Extensions
- π Semantic Release & Automation
- π FAQ & Troubleshooting
RKEasy is designed to simplify the process of deploying RKE2 Kubernetes clusters. It targets users looking for a reliable, automated, and extensible solution for managing Kubernetes clusters. With RKEasy, you can:
- Automatically deploy Kubernetes clusters.
- Update, scale, and remove clusters.
- Integrate various add-ons like Longhorn, Rook/Ceph, or Ingress Controllers.
The directory structure of RKEasy is designed to be modular and easily extendable:
RKEasy/
βββ ansible.cfg
βββ galaxy.yml
βββ inventory/
β βββ hosts.yml
βββ group_vars/
β βββ all.yml
β βββ control_planes.yml
β βββ workers.yml
βββ roles/
β βββ rke2/
β β βββ tasks/
β β β βββ install.yml
β β β βββ update.yml
β β β βββ reset.yml
β β β βββ scale.yml
β βββ networking/
β βββ addons/
βββ playbooks/
β βββ install_cluster.yml
β βββ update_cluster.yml
β βββ scale_cluster.yml
β βββ remove_cluster.yml
βββ .github/
β βββ workflows/
β βββ release.yml
βββ .releaserc.yml
βββ CHANGELOG.md
βββ README.md
-
Operating Systems:
- Ubuntu 20.04+ / Debian 10+
- CentOS 8+ / Rocky Linux / AlmaLinux
-
Software Requirements:
- Ansible β₯ 2.9
- Python β₯ 3.6
- OpenSSH
-
Resource Requirements (Minimum):
- 2 CPUs, 4GB RAM per node
- 20GB free disk space
-
Access Requirements:
- SSH access with root privileges or βsudoβ permissions
-
Clone the Repository:
git clone https://github.com/LucEast/RKEasy.git cd RKEasy -
Install Dependencies:
ansible-galaxy collection install -r requirements.yml
-
Configure Inventory: Edit the
inventory/hosts.ymlfile:all: hosts: node1: ansible_host: 192.168.1.10 ansible_user: root ansible_ssh_private_key_file: ~/.ssh/id_rsa node2: ansible_host: 192.168.1.11 ansible_user: root ansible_ssh_private_key_file: ~/.ssh/id_rsa children: control_planes: hosts: node1: workers: hosts: node2:
-
Install the Cluster:
ansible-playbook playbooks/install_cluster.yml -i inventory/hosts.yml
-
Remove Cluster:
ansible-playbook playbooks/remove_cluster.yml -i inventory/hosts.yml
-
Add New Nodes: Update the
hosts.ymlfile and run:ansible-playbook playbooks/scale_cluster.yml -i inventory/hosts.yml
-
Update the Cluster:
ansible-playbook playbooks/update_cluster.yml -i inventory/hosts.yml
-
Automated Rolling Updates: The playbooks support zero-downtime updates by updating nodes one at a time.
- RBAC is configured by default to control access.
- TLS for all cluster communication.
- Support for PodSecurityPolicies (PSP) or PodSecurityAdmission (PSA) from Kubernetes v1.25.
RKEasy offers predefined roles to integrate popular add-ons:
-
Longhorn (Distributed Storage):
ansible-playbook playbooks/addons.yml -e "addon=longhorn" -
Rook/Ceph (Storage Solution):
ansible-playbook playbooks/addons.yml -e "addon=rook" -
Ingress Controller (NGINX):
ansible-playbook playbooks/addons.yml -e "addon=nginx"
RKEasy uses Semantic Release for automated versioning and GitHub releases.
-
Release Workflow (via GitHub Actions):
.github/workflows/release.yml:name: Semantic Release on: push: branches: - main jobs: release: runs-on: ubuntu-latest steps: - name: Checkout Repository uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' - name: Install Dependencies run: npm install - name: Run Semantic Release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: npx semantic-release
-
Conventional Commit Examples:
feat: add dynamic node scalingfix: correct token retrievalchore: update dependencies
-
Error:
No set of running pods found to reclaim resources- Solution: Check memory requirements and adjust pod resource limits.
-
SSH Issues with Ansible
-
Solution: Ensure the correct SSH key is specified in
inventory/hosts.yml.
-
Solution: Ensure the correct SSH key is specified in
-
Cluster Stuck in Pending State
- Solution: Verify network configuration and ensure CNI plugins are correctly installed.
Thank you for using RKEasy! π If you have questions or encounter issues, feel free to create an issue on GitHub or contribute to the documentation.
Happy Clustering! ππ