{"id":31224898,"url":"https://github.com/giwiro/k8s-vagrant","last_synced_at":"2026-05-06T17:31:35.826Z","repository":{"id":314036199,"uuid":"1052542662","full_name":"giwiro/k8s-vagrant","owner":"giwiro","description":"A streamlined Vagrant/Ubuntu setup for local Kubernetes clusters. Utilizes kubeadm for cluster management and setup, Flannel as CNI, and CRI-O as CRI. Ideal for local K8s development and testing environments.","archived":false,"fork":false,"pushed_at":"2025-09-17T03:12:43.000Z","size":44,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-22T00:09:16.850Z","etag":null,"topics":["crio","devops","flannel","kubeadm","kubernetes","kubernetes-cluster","ubuntu","vagrant","virtualbox"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/giwiro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-09-08T07:47:20.000Z","updated_at":"2025-09-17T03:12:47.000Z","dependencies_parsed_at":"2025-09-10T08:18:57.313Z","dependency_job_id":"89aac2eb-73ef-45d3-a0df-faeddd96d359","html_url":"https://github.com/giwiro/k8s-vagrant","commit_stats":null,"previous_names":["giwiro/k8s-vagrant"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/giwiro/k8s-vagrant","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giwiro%2Fk8s-vagrant","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giwiro%2Fk8s-vagrant/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giwiro%2Fk8s-vagrant/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giwiro%2Fk8s-vagrant/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/giwiro","download_url":"https://codeload.github.com/giwiro/k8s-vagrant/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giwiro%2Fk8s-vagrant/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32704275,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-06T08:33:17.875Z","status":"ssl_error","status_checked_at":"2026-05-06T08:33:17.221Z","response_time":117,"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":["crio","devops","flannel","kubeadm","kubernetes","kubernetes-cluster","ubuntu","vagrant","virtualbox"],"created_at":"2025-09-22T00:04:46.399Z","updated_at":"2026-05-06T17:31:35.809Z","avatar_url":"https://github.com/giwiro.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/giwiro/k8s-vagrant/main/resources/logo.png\" alt=\"logo\" width=\"400\" /\u003e\n    \u003ch1\u003ek8s-vagrant\u003c/h1\u003e\n    \u003cp\u003eYour Local Kubernetes Playground ☸️🛝. Get a fully-functional local Kubernetes cluster in minutes!\u003c/p\u003e\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/kubernetes/kubernetes\" alt=\"Kubernetes\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/kubernetes/kubernetes?filter=v1.34.1\u0026label=kubernetes\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/flannel-io/flannel\" alt=\"Flannel\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/flannel-io/flannel?label=flannel\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/cri-o/cri-o\" alt=\"Crio\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/cri-o/cri-o?filter=v1.34.0\u0026label=cri-o\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/giwiro/k8s-vagrant/blob/main/LICENSE\" alt=\"MIT\"\u003e\u003cimg src=\"https://img.shields.io/github/license/giwiro/k8s-vagrant\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003c!---\n[![Kubernetes GitHub Release][kubernetes-badge]][kubernetes-url]\n[![Crio GitHub Release][crio-badge]][crio-url]\n[![Flannel GitHub Release][flannel-badge]][flannel-url]\n[![GitHub License][license-badge]][license-url]\n--\u003e\n\n## Description\n\nTired of cloud bills?\nThis project provides a simple yet robust solution for quickly provisioning a local Kubernetes\ncluster using Vagrant \u0026 Ubuntu, Kubeadm, Flannel, and CRI-O. Designed with developers in mind, it offers an efficient\nand cost-effective way to learn Kubernetes, test applications, and prototype deployments without incurring expensive\ncloud infrastructure fees.\n\n## System Prerequisites\n\n- Software Requirements:\n    - **[Git](https://git-scm.com/)**: For cloning the repository.\n    - **[Vagrant](https://developer.hashicorp.com/vagrant)**: Core tool for managing virtual machines.\n    - **[VirtualBox](https://www.virtualbox.org/)**: For virtualization purposes.\n\n\n## Installation\n\n1. Clone this repository\n\n```bash\ngit clone https://github.com/giwiro/k8s-vagrant.git\n```\n\n2. Change directory to the cloned repository\n\n```bash\ncd k8s-vagrant\n```\n\n3. Run the Vagrantfile\n\n```bash\nvagrant up\n```\n\n4. Verify installation\n\n```bash\nvagrant ssh master -c 'kubectl get nodes -o wide'\n```\n\nAnd you should see something like this:\n\n```\nNAME      STATUS   ROLES           AGE     VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME\nmaster    Ready    control-plane   9m36s   v1.33.5   192.168.1.2   \u003cnone\u003e        Ubuntu 22.04.5 LTS   5.15.0-151-generic   cri-o://1.33.4\nworker1   Ready    \u003cnone\u003e          6m10s   v1.33.5   192.168.2.2   \u003cnone\u003e        Ubuntu 22.04.5 LTS   5.15.0-151-generic   cri-o://1.33.4\nworker2   Ready    \u003cnone\u003e          3m21s   v1.33.5   192.168.2.3   \u003cnone\u003e        Ubuntu 22.04.5 LTS   5.15.0-151-generic   cri-o://1.33.4\n```\n\n## Configuration\n\nIn the `Vagrantfile` you can change the default configuration.\n\n```ruby\n#      _____             __ _\n#     / ____|           / _(_)\n#    | |     ___  _ __ | |_ _  __ _\n#    | |    / _ \\| '_ \\|  _| |/ _` |\n#    | |___| (_) | | | | | | | (_| |\n#     \\_____\\___/|_| |_|_| |_|\\__, |\n#        Custom configuration  __/ |\n#                             |___/\n\nVMProvider = \"virtualbox\"\nImage = \"bento/ubuntu-22.04\"\nMasterPrivateIp = \"192.168.1.2\"\nNumberNodes = 2\nNodesPrivateIpPrefix = \"192.168.2.\"\nPodNetworkCIDR = \"10.1.0.0/16\"\nKubernetesVersion = \"v1.33\"\nCrioVersion = \"v1.33\"\nTLSCheckDisable = \"true\"\n```\n\n- `VMProvider`: By default is `virtualbox`, but you can change it to whatever you want, make sure the box you provide\nsupports it.\n- `Image`: By default is `bento/ubuntu-22.04`, this [box](https://portal.cloud.hashicorp.com/vagrant/discover/bento/ubuntu-22.04)\nincludes multiple architectures (arm64, amd64) for different providers (parallels, utm, virtualbox, vmware_desktop).\nSo if you have Apple Silicon Mac, you can/should use `bento/ubuntu-22.04`, otherwise you can use `ubuntu/jammy64`.\n- `NumberNodes`: By default is `2`, but you can change it to whatever you want.\n- `NodesPrivateIpPrefix`: It defined the first three octets of the worker nodes. By default is `192.168.2.`, and the\nfirst ip will start from `2`. So for the first two nodes\ntheir ips would be `192.168.2.2` and `192.168.2.3`.\n- `TLSCheckDisable`: This option is by default set to `true`, which disables all TLS checks, in case you are behind a\nfirewall. What it does is:\n  - Adds the `-k` option to `curl`.\n  - Adds `Acquire::https::Verify-Peer \"false\";` configuration to `apt`.\n  - Adds `insecure-registry` config to `crio`.\n  - Adds `--no-check-certificate` option to `wget`.\n\n\n## Resources configuration\n\nThe resource configuration is done in the `Vagrantfile` too, feel free to change it.\n\nBy default, the master node has 4GB of RAM and 2 CPUs.\n```ruby\nmaster.vm.provider VMProvider do |vb|\n  vb.memory = \"4096\"\n  vb.cpus = \"2\"\nend\n```\n\nBy default, the worker nodes have 4GB of RAM and 2 CPUs.\n```ruby\nworker.vm.provider VMProvider do |v|\n  v.memory = \"4096\"\n  v.cpus = \"2\"\nend\n```\n\n## License\n\n[MIT](LICENSE)\n\n\n[kubernetes-badge]: https://img.shields.io/github/v/release/kubernetes/kubernetes?filter=v1.33.4\u0026label=kubernetes\n[kubernetes-url]: https://github.com/kubernetes/kubernetes\n\n[flannel-badge]: https://img.shields.io/github/v/release/flannel-io/flannel?label=flannel\n[flannel-url]: https://github.com/flannel-io/flannel\n\n[crio-badge]: https://img.shields.io/github/v/release/cri-o/cri-o?filter=v1.33.4\u0026label=cri-o\n[crio-url]: https://github.com/cri-o/cri-o\n\n[license-badge]: https://img.shields.io/github/license/giwiro/k8s-vagrant\n[license-url]: https://github.com/giwiro/k8s-vagrant/blob/main/LICENSE\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgiwiro%2Fk8s-vagrant","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgiwiro%2Fk8s-vagrant","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgiwiro%2Fk8s-vagrant/lists"}