{"id":25881141,"url":"https://github.com/glueops/kubeadm","last_synced_at":"2026-03-07T00:03:03.984Z","repository":{"id":280180223,"uuid":"940208378","full_name":"GlueOps/kubeadm","owner":"GlueOps","description":null,"archived":false,"fork":false,"pushed_at":"2026-03-03T19:46:53.000Z","size":165,"stargazers_count":0,"open_issues_count":23,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-03-03T22:30:18.517Z","etag":null,"topics":["allow-auto-merge"],"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/GlueOps.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-27T19:39:13.000Z","updated_at":"2026-02-16T16:49:25.000Z","dependencies_parsed_at":"2026-01-21T18:05:23.957Z","dependency_job_id":null,"html_url":"https://github.com/GlueOps/kubeadm","commit_stats":null,"previous_names":["glueops/kubeadm"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/GlueOps/kubeadm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GlueOps%2Fkubeadm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GlueOps%2Fkubeadm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GlueOps%2Fkubeadm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GlueOps%2Fkubeadm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GlueOps","download_url":"https://codeload.github.com/GlueOps/kubeadm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GlueOps%2Fkubeadm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30204110,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T19:07:06.838Z","status":"ssl_error","status_checked_at":"2026-03-06T18:57:34.882Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["allow-auto-merge"],"created_at":"2025-03-02T14:34:25.227Z","updated_at":"2026-03-07T00:03:03.966Z","avatar_url":"https://github.com/GlueOps.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# to install kubernetes\nrun the following things need to be added before \n\ninventory/groups_vars\n\ncertificate_key: \nrandom_token: \n\n\n`export ANSIBLE_ROLES_PATH=$PWD/roles`\n`export ANSIBLE_HOST_KEY_CHECKING=False`\n\n\ncreate a folder keys that contains ssh_keys and replace public_key for each host with your public_key \n\nfirst  add taints and labels to your nodes, for each node you need to have the following format:\n\n```yaml\nmasters:\n    hosts:\n    master-node-1:\n        ansible_host: 138.199.157.180\n        ansible_user: cluster\n        ip: 10.0.0.31\n        ansible_ssh_private_key_file: ./keys/master_node\n        extra:\n        taints:\n            - node-role.kubernetes.io/control-plane:NoSchedule-\n        labels:\n            - glueops.dev/role=glueops-platform\n```\n\nNow to setup the cluster run:\n\n`ansible-playbook -i inventory/hosts.yaml playbooks/setup-cluster.yaml`\n\nafter the playbook run successfully, you will kubeconfig file in `ansible/playbooks/.kube/config`\n\n\n# scale the nodes\n\nwe treat the hosts.yaml as the source of truth to our resources, so to scale up or down the nodes, it will be enough to modify the follow the hosts.yaml file\n\nexample, the current hosts.yaml is:\n\n```yaml\n\nworkers:\n    hosts:\n        worker-node-1:\n            ansible_host: 138.199.157.195\n            ansible_user: cluster\n            ip: 10.0.0.21\n            ansible_ssh_private_key_file: ./keys/worker_node\n            extra:\n            taints:\n                - glueops.dev/role=glueops-platform:NoSchedule\n\n        worker-node-2:\n            ansible_host: 138.199.163.163\n            ansible_user: cluster\n            ip: 10.0.0.22\n            ansible_ssh_private_key_file: ./keys/worker_node\n            extra:\n            taints:\n                - glueops.dev/role=glueops-platform:NoSchedule\n\n```\n\nIf we need to scale it up, we can just add another worker node\n\n```yaml\nworkers:\n    hosts:\n        worker-node-1:\n            ansible_host: 138.199.157.195\n            ansible_user: cluster\n            ip: 10.0.0.21\n            ansible_ssh_private_key_file: ./keys/worker_node\n            extra:\n                taints:\n                    - glueops.dev/role=glueops-platform:NoSchedule\n\n        worker-node-2:\n            ansible_host: 138.199.163.163\n            ansible_user: cluster\n            ip: 10.0.0.22\n            ansible_ssh_private_key_file: ./keys/worker_node\n            extra:\n                taints:\n                    - glueops.dev/role=glueops-platform:NoSchedule\n\n        worker-node-3:\n            ansible_host: 138.199.163.164\n            ansible_user: cluster\n            ip: 10.0.0.23\n            ansible_ssh_private_key_file: ./keys/worker_node\n            extra:\n                taints:\n                    - glueops.dev/role=glueops-platform:NoSchedule\n\n```\n\nor to scale down we remove the desired worker node\n\nNote: you can both scale up and down at the same time, but if you do it, we will run the scale up first then scale down\n\nNote: the number of control-plane nodes need to be odd number \n\nNow to run the syncing process, use the following command:\n\n`ansible-playbook  -i inventory/hosts.yaml playbooks/sync-resources.yaml`\n\nyou will prompted with following message:\n\n```txt\nok: [master-node-1] =\u003e {\n    \"msg\": [\n        \"Nodes to remove: '[]'.\",\n        \"Nodes to add '['worker-node-3']'.\"\n    ]\n}\n\nTASK [master : pause] ****************************************************************************************************************************************************************************************************************************************\n[master : pause]\nDo you want to apply the above changes? (Y/n):\n\n```\n\nafter you accept changes the kubernetes cluster will scale up/down depends on your desired state, also it will update the loadbalancer haproxyconfig file to the desired workloads\n\nto verify, run `kubectl get nodes`\n\n\n# upgrade cluster\n\n## rotate certs\n\nansible-playbook  -i inventory/hosts.yaml playbooks/upgrade-cluster.yaml --tags rotate-certs\n\n\n## upgrade versions\n\nthis will update the whole cluster versions\n\nansible-playbook  -i inventory/hosts.yaml playbooks/upgrade-cluster.yaml --tags upgrade\n\n\n## OS security patch\n\nto patch os with the security patches run :\n`ansible-playbook  -i inventory/hosts.yaml playbooks/os-patch.yaml`\n\n## updates","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglueops%2Fkubeadm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fglueops%2Fkubeadm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglueops%2Fkubeadm/lists"}