{"id":28558121,"url":"https://github.com/fakman0/openstack-kubernetes-provisioner","last_synced_at":"2025-06-10T08:07:46.920Z","repository":{"id":294274629,"uuid":"986438613","full_name":"fakman0/openstack-kubernetes-provisioner","owner":"fakman0","description":"Automated deployment of high-availability Kubernetes clusters on OpenStack using Terraform and Ansible with RKE2. Infrastructure-as-code solution for production-ready K8s environments.","archived":false,"fork":false,"pushed_at":"2025-06-05T16:29:21.000Z","size":105,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-05T16:43:42.458Z","etag":null,"topics":["cloud-controller-manager","kubernetes","openstack","terraform"],"latest_commit_sha":null,"homepage":"","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fakman0.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-19T15:55:50.000Z","updated_at":"2025-06-05T16:27:27.000Z","dependencies_parsed_at":"2025-05-28T19:49:27.675Z","dependency_job_id":"6a2a4d78-8929-411b-898d-253c1635b9c2","html_url":"https://github.com/fakman0/openstack-kubernetes-provisioner","commit_stats":null,"previous_names":["fakman0/openstack-terraform-kubespray","fakman0/openstack-kubernetes-provisioner"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fakman0%2Fopenstack-kubernetes-provisioner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fakman0%2Fopenstack-kubernetes-provisioner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fakman0%2Fopenstack-kubernetes-provisioner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fakman0%2Fopenstack-kubernetes-provisioner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fakman0","download_url":"https://codeload.github.com/fakman0/openstack-kubernetes-provisioner/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fakman0%2Fopenstack-kubernetes-provisioner/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259033840,"owners_count":22795770,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloud-controller-manager","kubernetes","openstack","terraform"],"created_at":"2025-06-10T08:07:46.339Z","updated_at":"2025-06-10T08:07:46.905Z","avatar_url":"https://github.com/fakman0.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OpenStack Kubernetes Provisioner\n\nThis project is designed to automatically create a highly available Kubernetes cluster on OpenStack. Infrastructure setup and Kubernetes configuration are fully automated using Terraform and Ansible.\n\n## Project Purpose\n\nThis project aims to create a Kubernetes cluster in an OpenStack cloud environment with the following features:\n\n- Multiple master nodes for high availability\n- Scalable worker node structure\n- RKE2 (Rancher Kubernetes Engine 2) based Kubernetes installation\n- OpenStack Cloud Controller Manager integration\n- Automated installation and configuration process\n\n## Kubernetes Cluster Structure\n\nThe created Kubernetes cluster consists of the following components:\n\n- **Master Nodes**: Servers running Kubernetes control plane components (API server, scheduler, controller manager). By default, 3 master nodes are created for high availability.\n- **Worker Nodes**: Servers where application workloads run. Scalable according to needs.\n- **Network Structure**: A private network and subnet are created on OpenStack. Floating IP address is provided for Kubernetes services.\n- **Security**: Network traffic is controlled with OpenStack security groups.\n- **Storage**: Separately sizeable storage areas for master and worker nodes.\n\n## Installation Steps\n\n### Prerequisites\n\n- OpenStack account and access credentials\n- Terraform (v1.0.0 or higher)\n- Ansible (v2.9 or higher)\n- Python 3.6 or higher\n\n### 1. Infrastructure Setup with Terraform\n\n1. Navigate to the Terraform directory:\n   ```bash\n   cd terraform\n   ```\n\n2. Create and edit the `terraform.tfvars` file:\n   ```bash\n   cp terraform.tfvars.example terraform.tfvars\n   ```\n   \n   You need to edit the following information:\n   - OpenStack authentication credentials\n   - Network configuration\n   - Server counts and specifications\n   - SSH key information\n   - Storage sizes\n\n3. Create the infrastructure with Terraform:\n   ```bash\n   terraform init\n   terraform apply\n   ```\n\n   When this process is complete, the `terraform_outputs.json` file will be created in the main directory.\n\n### 2. Ansible Configuration\n\nReturn to the main directory and run the setup.sh script:\n\n```bash\ncd ..\n./setup.sh all\n```\n\nThis command performs the following operations:\n- Creates a Python virtual environment and installs necessary dependencies\n- Creates the Ansible inventory file using Terraform outputs\n- Creates the Ansible configuration file\n\n### 3. Kubernetes Installation\n\nNavigate to the Ansible directory and run the playbooks in sequence:\n\n```bash\ncd ansible\n```\n\n1. Preparation for Kubernetes installation:\n   ```bash\n   ansible-playbook playbooks/kubernetes-prep.yml\n   ```\n\n2. Kubernetes installation:\n   ```bash\n   ansible-playbook playbooks/kubernetes-install.yml\n   ```\n\n3. Post-installation configuration:\n   ```bash\n   ansible-playbook playbooks/kubernetes-post.yml\n   ```\n\n## Post-Installation\n\nWhen the installation is complete, the kubeconfig file needed to access the Kubernetes cluster will be created on the first master node. You can copy this file to your local machine and manage the cluster with `kubectl` commands.\n\nTo access the cluster:\n\n```bash\nscp ubuntu@\u003ccontrol_plane_floating_ip\u003e:~/.kube/config ~/.kube/config\nkubectl get nodes\n```\n\n## Customization\n\n- Master and worker node counts can be adjusted from the `terraform.tfvars` file\n- Hardware specifications (flavor) of nodes can be changed from the `terraform.tfvars` file\n- Storage sizes can be adjusted from the `terraform.tfvars` file\n- Network configuration can be customized from the `terraform.tfvars` file\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffakman0%2Fopenstack-kubernetes-provisioner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffakman0%2Fopenstack-kubernetes-provisioner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffakman0%2Fopenstack-kubernetes-provisioner/lists"}