{"id":13769139,"url":"https://github.com/jannfis/argocd-nutshell","last_synced_at":"2025-04-13T15:06:02.189Z","repository":{"id":45379131,"uuid":"328460273","full_name":"jannfis/argocd-nutshell","owner":"jannfis","description":"Argo CD in a nutshell. Reproducible, clean Argo CD setups for demoing, development or troubleshooting as a ready-to-use Vagrantfile.","archived":false,"fork":false,"pushed_at":"2023-09-12T14:11:06.000Z","size":84,"stargazers_count":29,"open_issues_count":0,"forks_count":5,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-13T15:05:56.058Z","etag":null,"topics":["argo-cd","argocd","k3s","nutshell","vagrant"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jannfis.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2021-01-10T19:17:13.000Z","updated_at":"2025-02-27T17:20:54.000Z","dependencies_parsed_at":"2024-08-03T17:12:00.261Z","dependency_job_id":null,"html_url":"https://github.com/jannfis/argocd-nutshell","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jannfis%2Fargocd-nutshell","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jannfis%2Fargocd-nutshell/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jannfis%2Fargocd-nutshell/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jannfis%2Fargocd-nutshell/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jannfis","download_url":"https://codeload.github.com/jannfis/argocd-nutshell/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248732485,"owners_count":21152852,"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":["argo-cd","argocd","k3s","nutshell","vagrant"],"created_at":"2024-08-03T17:00:18.013Z","updated_at":"2025-04-13T15:06:02.163Z","avatar_url":"https://github.com/jannfis.png","language":null,"funding_links":[],"categories":["Ecosystem Projects"],"sub_categories":[],"readme":"# Argo CD in a nutshell\n\nZero-conf, repeatable\n[Argo CD](https://argoproj.github.io/argo-cd/)\nenvironments for demoing, development purposes or troubleshooting (i.e. to\nreproduce an issue on a clean environment) using\n[Vagrant](https://www.vagrantup.com/)\nand\n[k3s](https://k3s.io/)\nin a single-node setup.\n\nPlease be aware that this is work in progress, and mainly serves for my own\npurposes. I thought it could be useful enough to share, however, so here it\nis.\n\n## Getting started\n\nYou will need\n[Vagrant](https://www.vagrantup.com/)\nand\n[VirtualBox](https://www.virtualbox.org/)\ninstalled on your system. Also, this box will set-up a private network with\nCIDR range `192.168.56.0/24`, so make sure you don't have this already\nsetup on your host, or have a route to an already existing net or host in\nthat range.\n\nThen:\n\n```bash\ngit clone https://github.com/jannfis/argocd-nutshell\ncd argocd-nutshell\nvagrant up\n```\n\nThis will fire up a VM with the default variant of Argo CD up \u0026 running. This\ncan take a couple of minutes, depending on your network speed and general\ncomputer performance specs.\n\nTo make sure everything is up \u0026 running, `ssh` into the box and check the pods\nstatus:\n\n```shell\n$ vagrant ssh\nvagrant@argocd-nutshell:~$ kubectl get pods -n argocd\nNAME                                  READY   STATUS    RESTARTS   AGE\nargocd-redis-6fb68d9df5-sx7xh         1/1     Running   0          4m30s\nargocd-dex-server-748c65b578-kqlpp    1/1     Running   0          4m30s\nargocd-application-controller-0       1/1     Running   0          4m30s\nargocd-repo-server-64f4ddf469-mbdzn   1/1     Running   0          4m30s\nargocd-server-846cf6844-9dvcl         1/1     Running   0          4m30s\n```\n\nIf all pods are running correctly, you can then access the web UI by visiting\n\n```shell\nhttps://192.168.56.100\n```\n\nThe default username is `admin`, and the default password is `admin` as well.\n\n## Teardown\n\nWhen you had enough testing, simply run\n\n```bash\nvagrant destroy -f\n```\n\nwithin the directory that contains the `Vagrantfile`.\n\n## What's in it?\n\nOn top of the already mentioned K3s cluster and a default installation\nof Argo CD with minor customisation (i.e. service of type LoadBalancer and\nan admin password set), the following is currently included after the box\nhas been provisioned:\n\n* `kubectl` pre-configured and with shell completion set-up\n* `kubectx` and `kubens` too, also with shell completion set-up\n* a `kustomize` binary in `/usr/local/bin` (version 3.9.1)\n* The latest released `argocd` CLI, ready to use logged into the Argo CD\n  instance\n\n## Versions\n\nBy default, the most recent stable versions of Argo CD and K3S will be\ninstalled in the box.\n\nYou can override (pin) the versions installed by the `default` variant by\nsetting some environment variables before running `vagrant up`:\n\n* `ARGOCD_VERSION`: This lets you specify another version of the manifests\n  to install. This can be either a tag name (such as `v1.8.2` or `stable`),\n  or use `HEAD` to use the latest manifests from `master` branch.\n\n* `ARGOCD_CLI_VERSION`: Lets you specify the release tag of the Argo CD CLI\n  to install. The special value `latest` (which is also the default) will\n  look up the latest released version of the CLI from GitHub and install it.\n\n* `ARGOCD_IMAGE`: Lets you override the Argo CD container image to use with\n  the manifests. This must be the full path and tag to the image, e.g.\n  `quay.io/argoproj/argocd:v1.8.2`. By default, the images as defined in the\n  manifests will be used.\n\n* `K3S_VERSION`: The fully qualified version of K3S to install, e.g.\n  `v1.20.0+k3s2`. Look at the\n  [K3s releases](https://github.com/k3s-io/k3s/releases) for valid versions.\n  Pre-releases are not supported by the installer.\n\nFor example, if you want to install Argo CD v1.7.11 with accompanying CLI on a\nKubernetes 1.18.6 cluster, create the box as follows:\n\n```bash\nARGOCD_VERSION=v1.7.11 ARGOCD_CLI_VERSION=v1.7.11 K3S_VERSION=v1.18.6+k3s1 vagrant up\n```\n\n## Git repository with test data\n\nIn order to have some test cases ready to use with the new Argo CD environment,\nyou can have the script automatically setup a Git repository server which\nserves a configurable repository clone. It can be activated by setting the\nfollowing environment variable before running `vagrant up`:\n\n```bash\nGIT_ENABLED=true\n```\n\nThe following environment variables control what is set up:\n\n* `GIT_CLONE_REPO` - the URL to a repository to clone. Defaults to the Argo CD\n  example apps repository `https://github.com/argoproj/argocd-example-apps`\n\n* `GIT_CHECKOUT` - if set to `true`, will checkout the repository from the\n  environment's own repository server (*not* the upstream repository) in the\n  home directory of the `vagrant` user. You can then modify, commit and\n  push from that local checkout without modifying upstream (to keep results\n  initially predictable). Defaults to `true`.\n\n* `GIT_CONNECT` - if set to true, will connect the repository within Argo CD,\n  so it's readily available to use. Defaults to `true`.\n\n## Variants\n\nVariants are certain pre-configured installations of Argo CD that\n`argocd-nutshell` can provision for you.\n\nA variant is specified by launching your box with `ARGOCD_VARIANT` set to\nthe name of the variant you want to launch.\n\n### Single-Sign-On with GitHub\n\nThe variant `sso` sets up Argo CD pre-configured to do SSO with a GitHub org.\nYou will need to setup a GitHub oauth app for this, that needs to match the\nfollowing configuration:\n\n![OAuth configuration](docs/images/github-oauth-config.png)\n\nThe client ID, client secret and GitHub org name must be passed to the Vagrant\nprovisioner like follows:\n\n```\nDEX_CLIENT_ID=\u003cclient_id\u003e \\\n  DEX_CLIENT_SECRET=\u003cclient_secret\u003e \\\n  DEX_GH_ORG_NAME=\u003cname of your GH org\u003e \\\n  ARGOCD_VARIANT=sso vagrant up\n  ```\n\n## Customization\n\nYou can provision custom boxes by doing the following:\n\n* Create a new YAML configuration in the `config` directory. Have a look at\n  `config/default.yaml`. Consider all variables mandatory. Be sure to\n  change `argocd.variant` variable to the name of your new variant, for\n  example `myvariant`.\n\n* The Argo CD manifests are rendered via Kustomize. Have a look at the\n  `variants/default` directory for the default variant that is installed.\n  It contains Kustomize resources to build the Argo CD manifests. You can\n  copy its contents to a new folder with the same name as your new variant.\n  Be aware that the Kustomize resources will be templated by Ansible, and\n  cannot be rendered using `kustomize` as-is. To troubleshoot, use\n  `vagrant provision` on changes, and find the final resources on the box\n  within the `/kustomize` directory.\n\n* Set `ARGOCD_VARIANT` to the name of the new variant before running `vagrant\n  up`, i.e.\n\n  ```bash\n  ARGOCD_VARIANT=myvariant vagrant up\n  ```\n\nAnd then hope it will work out.\n\n## Status\n\nThis has just been born, and is not ready for general consumption. Feel free\nto use it in the default configuration. Expect to hack on it. It has lots\nand lots of rough edges and pitfalls.\n\n**YMMV.**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjannfis%2Fargocd-nutshell","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjannfis%2Fargocd-nutshell","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjannfis%2Fargocd-nutshell/lists"}