{"id":16148185,"url":"https://github.com/chanwit/wksctl-159","last_synced_at":"2025-06-21T22:07:26.685Z","repository":{"id":66507674,"uuid":"254516887","full_name":"chanwit/wksctl-159","owner":"chanwit","description":null,"archived":false,"fork":false,"pushed_at":"2020-04-10T02:02:14.000Z","size":326,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-06T21:44:39.476Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/chanwit.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":"2020-04-10T01:35:13.000Z","updated_at":"2020-04-10T02:02:16.000Z","dependencies_parsed_at":"2023-02-22T13:31:09.185Z","dependency_job_id":null,"html_url":"https://github.com/chanwit/wksctl-159","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/chanwit/wksctl-159","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chanwit%2Fwksctl-159","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chanwit%2Fwksctl-159/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chanwit%2Fwksctl-159/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chanwit%2Fwksctl-159/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chanwit","download_url":"https://codeload.github.com/chanwit/wksctl-159/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chanwit%2Fwksctl-159/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261200408,"owners_count":23123953,"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":[],"created_at":"2024-10-10T00:31:33.554Z","updated_at":"2025-06-21T22:07:21.674Z","avatar_url":"https://github.com/chanwit.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Firekube\n\nFirekube is a Kubernetes cluster working on top of [ignite][gh-ignite] and\n[firecracker][gh-firecracker]. Firekube clusters are operated with\n[GitOps][ww-gitops].\n\n[ignite][gh-ignite] and [firecracker][gh-firecracker] only work on Linux as\nthey need [KVM][kvm]. Fortunately we will also work on macOS using\n[footloose][footloose]: the Kubernetes nodes are then running inside\ncontainers.\n\n## Creating a Firekube cluster\n\n**Prerequisites**: docker, git, [kubectl 1.14+][kubectl].\n\n1. Fork this repository.\n\n1. Clone your fork and `cd` into it. Use the `SSH` git URL as the script will\npush an initial commit to your fork:\n\n   ```console\n   export user=\"\" # Your GitHub handle or org\n\n   git clone git@github.com:$user/wks-quickstart-firekube.git\n   cd wks-quickstart-firekube\n   ```\n\n1. Start the cluster:\n\n   ```console\n   ./setup.sh\n   ```\n\n   This step will take several minutes.\n\n   **Please note** that the `setup.sh` script will detect which OS you're on.\n   If it's macOS, the script will automatically set `backend: docker` inside `config.yaml`. This config is to start the cluster in containers as there is no KVM on macOS. However, Firekube on Linux will run either with `backend: ignite` (ignite VMs) or `backend: docker` (containers). So the `setup.sh` script won't touch the backend value inside `config.yaml` if you're on Linux. In case you started Firekube (in containers) on macOS then switched to try it on Linux, please make sure that the backend value is set to `backend: ignite` so that you can start the cluster on ignite / firecracker VMs.\n\n1. Export the `KUBECONFIG` environment variable as indicated at the end of the installation:\n\n   ```console\n   export KUBECONFIG=/home/damien/.wks/weavek8sops/example/kubeconfig\n   ```\n\nEnjoy your Kubernetes cluster!\n\n   ```console\n   $ kubectl get nodes\n   NAME               STATUS   ROLES    AGE     VERSION\n   67bb6c4812b19ce4   Ready    master   3m42s   v1.14.1\n   a5cf619fa058882d   Ready    \u003cnone\u003e   75s     v1.14.1\n   ```\n\n[gh-ignite]: https://github.com/weaveworks/ignite\n[gh-firecracker]: https://github.com/firecracker-microvm/firecracker\n[footloose]: https://github.com/weaveworks/footloose\n[kubectl]: https://v1-14.docs.kubernetes.io/docs/tasks/tools/install-kubectl/\n[kvm]: https://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine\n[ww-gitops]: https://www.weave.works/technologies/gitops/\n\n## Watch GitOps in action\n\nNow that we have a cluster installed, we can commit Kubernetes objects to the\ngit repository and have them appear in the cluster. Let's add\n[podinfo][podinfo], an example Go microservice, to the cluster.\n\n[podinfo]: https://github.com/stefanprodan/podinfo\n\n```sh\nkubectl apply --dry-run -k github.com/stefanprodan/podinfo//kustomize -o yaml \u003e podinfo.yaml\ngit add podinfo.yaml\ngit commit -a -m 'Add podinfo Deployment'\ngit push\n```\n\nA few seconds later, you should witness the apparition of a podinfo pod in\nthe cluster:\n\n```console\n$ kubectl get pods\nNAME                       READY   STATUS    RESTARTS   AGE\npodinfo-677768c755-z76xk   1/1     Running   0          30s\n```\n\nTo view `podinfo` web UI:\n\n1. Expose `podinfo` locally:\n\n   ```\n   kubectl port-forward deploy/podinfo 9898:9898\n   ```\n\n1. Point your browser to `http://127.0.0.1:9898`:\n\n   ![podinfo](docs/podinfo.png)\n\n## Deleting a Firekube cluster\n\nRun:\n\n```console\n./cleanup.sh\n```\n\n## Using a private git repository with firekube\n\nTo use a private git repository instead of a fork of `wks-quickstart-firekube`:\n\n1. Create a private repository and push the `wks-quickstart-firekube`\n   `master` branch there. Use the SSH git URL when cloning the private\n   repository:\n\n   ```\n   git clone git@github.com:$user/$repository.git\n   cd $repository\n   git remote add quickstart git@github.com:weaveworks/wks-quickstart-firekube.git\n   git fetch quickstart\n   git merge quickstart/master\n   git push\n   ```\n\n1. Create an SSH key pair:\n\n   ```console\n   ssh-keygen -t rsa -b 4096 -C \"damien+firekube@weave.works\" -f deploy-firekube  -N \"\"\n   ```\n\n1. Upload the deploy key to your private repository (with read/write access):\n\n   ![deploy key upload](docs/deploy-key.png)\n\n1. Start the cluster:\n\n   ```console\n   ./setup.sh --git-deploy-key  ./deploy-firekube\n   ```\n\n## Getting Help\n\nIf you have any questions about, feedback for or problems with `wks-quickstart-firekube`:\n\n- Invite yourself to the \u003ca href=\"https://slack.weave.works/\" target=\"_blank\"\u003eWeave Users Slack\u003c/a\u003e.\n- Ask a question on the [#general](https://weave-community.slack.com/messages/general/) slack channel.\n- [File an issue](https://github.com/weaveworks/wks-quickstart-firekube/issues/new).\n- Join the discussion\n  - Invite yourself to the \u003ca href=\"https://slack.weave.works/\" target=\"_blank\"\u003eWeave community\u003c/a\u003e Slack\n  - Ask a question on the [#firekube](https://weave-community.slack.com/messages/firekube/) Slack channel\n\nYour feedback is always welcome!\n\n## License\n\n[Apache 2.0](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchanwit%2Fwksctl-159","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchanwit%2Fwksctl-159","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchanwit%2Fwksctl-159/lists"}