{"id":18745775,"url":"https://github.com/moshloop/kube-provision","last_synced_at":"2026-04-10T21:02:41.093Z","repository":{"id":138334191,"uuid":"169244954","full_name":"moshloop/kube-provision","owner":"moshloop","description":"Kubernetes provisioning tool based on kubeadm, consul and ansible-provision","archived":false,"fork":false,"pushed_at":"2019-06-21T06:57:49.000Z","size":63,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-12-28T20:26:27.950Z","etag":null,"topics":["ansible","kubeadm","kubernetes","kubernetes-deployment"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/moshloop.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}},"created_at":"2019-02-05T13:23:47.000Z","updated_at":"2019-06-21T06:57:51.000Z","dependencies_parsed_at":null,"dependency_job_id":"74ae9c12-a5d1-467f-abd4-1958e80229b2","html_url":"https://github.com/moshloop/kube-provision","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moshloop%2Fkube-provision","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moshloop%2Fkube-provision/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moshloop%2Fkube-provision/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moshloop%2Fkube-provision/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/moshloop","download_url":"https://codeload.github.com/moshloop/kube-provision/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239627234,"owners_count":19670844,"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":["ansible","kubeadm","kubernetes","kubernetes-deployment"],"created_at":"2024-11-07T16:19:38.071Z","updated_at":"2026-04-10T21:02:36.057Z","avatar_url":"https://github.com/moshloop.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# kube-provision\n\n### Design Principles\n\n* **Stateless** - Do not require the pre-population of inventory files with IP/Hostsname.\n* **Self Contained** - Do not require any external depdenencies likes load balancers\n* **Multi-Target** - Support multiple target environments including vSphere and VMWare Fusion\n* **UNIX Philosophy** - Use small components that do 1 thing and do it well.\n\n## Getting Started\n\n**install kube-provision**\n\n```bash\npip install kube-provision\n```\n\n**configure the provisioner**\n\n*config.yml*\n\n```yaml\nos: ubuntu\nconsul_bind_interface: ens33\ntarget: vmware-fusion\ntemplate: /Users/home/Virtual Machines.localized/ubuntu_base.vmwarevm/ubuntu_base.vmx\nvm_dir: /Users/home/Virtual Machines.localized/\n```\n\nSee [ansible-provision](www.moshloop.com/ansible-provision) to see how to configure provisioners for different targets.\n\n**create a base image with kubeadm**\n\nInstall kubeadm and a container runtime as per [install kubeadm](https://kubernetes.io/docs/setup/independent/install-kubeadm/)\n\n[bake.yml](https://github.com/moshloop/kube-provision/blob/master/bake.yml) is an ansible playbook that automates this process.\n\n**provision a new cluster** (automatically creates a new consul server)\n\n```bash\nkube-provision --config config.yml --masters 3 --workers 3 --name cluster-name\n```\n\n**provision a new cluster** (with an existing consul cluster)\n\n```bash\nkube-provision --config config.yml --masters 3 --workers 3 --name cluster-name --consul-ip=10.200.200.1\n```\n\n## Architecture\n\n![](architecture.png)\n\n***consul***\n\nAn externally hosted consul server/cluster is used for service discovery of kubernetes masters. Each master runs a consul agent that registers as a service endpoint for the cluster. If not specified at runtime a new consul server will be provisioned before proceeding with kubernetes.\n\n***etcd***\n\nEtcd nodes are run stacked with the master nodes, that is each api-server talks only with it’s local etcd node and the etcd nodes are joined to the “primary master” and then discover each other. Should the primary master fail, then new masters can be joined by specifying any other master.\n\n***worker node***\n\nAll worker nodes run an instance of nginx that listens on \u003chttps://localhost:8443\u003e that watches for changes in consul to the registered masters and updates the *nginx.conf* to reload the config as needed.\n\n**ansible-deploy**\n\n`ansible-deploy` is used to create the boot script based upon templated commands and files with the *cloud-init* deployment target.\n\n**ansible-provision**\n\n`ansible-provision` is used to provision consul and the kubernetes nodes to any supported target.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoshloop%2Fkube-provision","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoshloop%2Fkube-provision","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoshloop%2Fkube-provision/lists"}