{"id":28541719,"url":"https://github.com/konstructio/workshops","last_synced_at":"2026-05-15T22:02:17.732Z","repository":{"id":175387669,"uuid":"653832166","full_name":"konstructio/workshops","owner":"konstructio","description":"kubefirst workshop","archived":false,"fork":false,"pushed_at":"2024-02-14T21:47:14.000Z","size":58,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-07-07T17:43:29.805Z","etag":null,"topics":["argocd","atlantis","cloud-native","kubernetes","terraform","vault","workshops"],"latest_commit_sha":null,"homepage":"https://konstructio.github.io/workshops/","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/konstructio.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":"2023-06-14T20:46:59.000Z","updated_at":"2025-01-31T21:46:40.000Z","dependencies_parsed_at":"2024-12-31T23:16:20.465Z","dependency_job_id":null,"html_url":"https://github.com/konstructio/workshops","commit_stats":{"total_commits":4,"total_committers":1,"mean_commits":4.0,"dds":0.0,"last_synced_commit":"ea04198fd3002961911e3ca4186bc3c6c52b8cd5"},"previous_names":["kubefirst/workshops","konstructio/workshops"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/konstructio/workshops","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konstructio%2Fworkshops","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konstructio%2Fworkshops/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konstructio%2Fworkshops/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konstructio%2Fworkshops/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/konstructio","download_url":"https://codeload.github.com/konstructio/workshops/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konstructio%2Fworkshops/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279059059,"owners_count":26094886,"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","status":"online","status_checked_at":"2025-10-15T02:00:07.814Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["argocd","atlantis","cloud-native","kubernetes","terraform","vault","workshops"],"created_at":"2025-06-09T20:09:43.727Z","updated_at":"2025-10-15T07:16:26.879Z","avatar_url":"https://github.com/konstructio.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Kubefirst Workshop\n\nEver hear someone say that Kubernetes is not complicated. It makes Frédéric Harper’s, Principal Developer Advocate at Kubefirst, head spin every time! Getting started is no piece of cake, so this is where kubefirst, a free and open source tool, comes to the rescue. In this workshop, Fred will show you how to use our CLI to deploy a new Kubernetes cluster in minutes, with the most popular cloud native tools. We will deploy a new cluster locally using k3d \u0026 Docker (see prerequisites), and we will explore its pieces. Since your new cluster is already fully functional, we will discuss the GitOps principles with your new \"source of truth repository”, use Terraform with Atlantis, add a new user using HashiCorp Vault, surf the Argo CD sync waves, and master the magic steps to deploy a new application in the cloud. You can't miss this, we'll have some K8s fun!\n\n- [Prerequisites](#prerequisites)\n- [Install the kubefirst CLI](#install-the-kubefirst-cli)\n- [Create a new k3d cluster](#create-a-new-k3d-cluster)\n- [Add a New Repository](#add-a-new-repository)\n- [Add a New User](#add-a-new-user)\n- [Add a New Application](#add-a-new-application)\n\n## Prerequisites\n\nPlease be sure you are [running Docker Desktop](https://docs.docker.com/desktop/install/mac-install/).\n\n## Install the kubefirst CLI\n\nYou need to [use Homebrew](https://docs.kubefirst.io/2.0/kubefirst/overview#install-the-kubefirst-cli). If you don't have it, and want to install it, read [their documentation](https://brew.sh). If you don't want to use it, here are some [alternative ways to install the CLI](https://github.com/kubefirst/kubefirst/blob/main/build/README.md).\n\n```shell\nbrew install kubefirst/tools/kubefirst\n```\n\nIf you already have it, be sure you are using the latest version, as we'll need 2.1.3 for this tutorial.\n\n```shell\nbrew update\nbrew upgrade kubefirst\n```\n\n## Create a new k3d cluster\n\n```shell\nkubefirst k3d create --cluster-name kubefirst --github-user fharper --git-provider github\n```\n\n## Add a New Repository\n\nWe will do this in the browser on [GitHub](https://github.com).\n\n### Using the CLI Instead of the Browser\n\nAlternatively, you can do it on the CLI.\n\n```shell\ngit clone git@github.com:fharper/gitops.git\nvi terraform/github/repos.tf\n# copy and paste a entire module, change the module name, and repo_name value for your new repository name. Save, and quit.\ngit checkout -b new_repo\ngit add terraform/github/repos.tf\ngit commit -m \"Adding a new repository to GitHub\"\ngit push -u origin\n```\n\nIf you have the GitHub CLI installed, you can create the PR with the following command:\n\n```shell\ngh pr create --assignee @me --title \"$(git log --format=%s -n 1)\" --body \"$(git log --format=%b -n 1)\"\n```\n\nIf not, open the branch in your browser, and create the pull request from the GitHub web UI.\n\nAttention, do not merge directly into `main`, we will use Terraform \u0026 Atlantis to apply the changes. You could also use Terraform CLI to apply the changes, but we will explain why we prefer to use Atlantis.\n\n## Add a New User\n\nWe will do this in the browser on [GitHub](https://github.com).\n\n### Using the CLI Instead of the Browser\n\nAlternatively, you can do it on the CLI.\n\n```shell\nvi terraform/users/developers.tf\n# uncomment the developer_one module. Save, and quit.\ngit checkout -b new_user\ngit add terraform/users/developers.tf\ngit commit -m \"Adding a new user to my cluster\"\ngit push -u origin\n```\n\nIf you have the GitHub CLI installed, you can create the PR with the following command:\n\n```shell\ngh pr create --assignee @me --title \"$(git log --format=%s -n 1)\" --body \"$(git log --format=%b -n 1)\"\n```\n\nIf not, open the branch in your browser, and create the pull request from the GitHub web UI.\n\nAttention, do not merge directly into `main`, we will use Terraform \u0026 Atlantis to apply the changes. You could also use Terraform CLI to apply the changes, but we will explain why we prefer to use Atlantis.\n\n## Add a New Application\n\nDownload the [flappy-kray.yml](flappy-kray.yml) file. We will use this to add a new application using GitOps principles. We will do this in the browser on [GitHub](https://github.com).\n\n### Using the CLI Instead of the Browser\n\nAlternatively, you can do it on the CLI.\n\n```shell\nvi registry/kubefirst/flappy-kray.yml\n# Copy the content from the file you downloaded. Save, and quit.\n# Alternatively, you can just move the file you downloaded in the registry/kubefirst/ folder.\ngit checkout -b new_app\ngit add registry/kubefirst/flappy-kray.yml\ngit commit -m \"Adding a new app called Flappy Kray\"\ngit push -u origin\n```\n\nIf you have the GitHub CLI installed, you can create the PR with the following command:\n\n```shell\ngh pr create --assignee @me --title \"$(git log --format=%s -n 1)\" --body \"$(git log --format=%b -n 1)\"\n```\n\nIf not, open the branch in your browser, and create the pull request from the GitHub web UI.\n\n### How to access your new application\n\nOnce we applied the changes, and the application is synced in Argo CD, run the following command to create the certificates, and prevent some browser security issues.\n\n```shell\nkubefirst k3d mkcert --application flappy-kray --namespace kubefirst\n```\n\nYou can now access it at \u003chttps://flappy-kray.kubefirst.dev\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkonstructio%2Fworkshops","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkonstructio%2Fworkshops","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkonstructio%2Fworkshops/lists"}