https://github.com/jonmosco/argo-learning-env
Argo Learning Lab
https://github.com/jonmosco/argo-learning-env
Last synced: 6 months ago
JSON representation
Argo Learning Lab
- Host: GitHub
- URL: https://github.com/jonmosco/argo-learning-env
- Owner: jonmosco
- Created: 2026-01-07T13:33:41.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2026-01-15T15:03:16.000Z (7 months ago)
- Last Synced: 2026-01-15T18:20:50.444Z (7 months ago)
- Language: Shell
- Size: 23.4 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Argo Learning Lab (Quick & Dirty)
This repo provides a "one-command" setup for a local Kubernetes environment running the full Argo suite (**ArgoCD**, **Workflows**, **Events**, and **Rollouts**). It uses **Kind** (Kubernetes in Podman/Docker) and pre-configures port forwarding so you don't have to manage `kubectl port-forward` sessions.
## Prerequisites
* **Container Engine:** [Docker](https://docs.docker.com/get-docker/) **OR** [Podman](https://podman.io/getting-started/installation)
* [Kind](https://www.google.com/search?q=https://kind.sigs.k8s.io/docs/user/quick-start/%23installation)
* [Kubectl](https://kubernetes.io/docs/tasks/tools/)
## Quick Start
### Single Cluster (Hub Only)
1. **Clone this repo:**
```bash
git clone
cd
```
2. **Spin up the hub cluster:**
```bash
chmod +x argo-lab.sh
./argo-lab.sh up
```
3. **Access the UIs:**
* **ArgoCD:** [https://localhost:8080](https://localhost:8080) (User: `admin`)
* **Workflows:** [http://localhost:2746](http://localhost:2746)
* **Rollouts:** Run `kubectl argo rollouts dashboard`
### Multicluster (Hub + Spoke)
For learning multicluster deployments with ArgoCD:
1. **Spin up both hub and spoke clusters:**
```bash
./argo-lab.sh up-multi
```
2. **Register the spoke cluster with hub ArgoCD:**
The script will print instructions. Either use the CLI:
```bash
kubectl config use-context kind-argo-learning-hub
argocd cluster add kind-argo-learning-spoke
```
Or register via the ArgoCD UI at [https://localhost:8080/settings/clusters](https://localhost:8080/settings/clusters).
3. **Access the UIs:**
* **Hub ArgoCD:** [https://localhost:8080](https://localhost:8080) (controls both clusters)
* **Hub Workflows:** [http://localhost:2746](http://localhost:2746)
* **Spoke App:** [http://localhost:8888](http://localhost:8888) (example app port)
## Project Structure
* `argo-kind-config-hub.yaml`: Hub cluster definition with ArgoCD, Workflows, and Rollouts port mappings.
* `argo-kind-config-spoke.yaml`: Spoke cluster definition (no Argo components—managed by hub).
* `argo-lab.sh`: The automation script that handles cluster creation, namespace setup, app installation, and service patching.
## Commands
| Command | Action |
| --- | --- |
| `./argo-lab.sh up` | Creates hub cluster and installs all Argo components. |
| `./argo-lab.sh up-multi` | Creates hub and spoke clusters for multicluster learning. |
| `./argo-lab.sh down` | Deletes the hub cluster. |
| `./argo-lab.sh down-multi` | Deletes both hub and spoke clusters. |
| `./argo-lab.sh info` | Re-prints hub cluster connection info and password. |
| `./argo-lab.sh help` | Shows usage and available commands. |
## Notes
* **SSL Warning:** When opening ArgoCD, your browser will show an SSL warning (due to self-signed certs).
* **Auth:** Argo Workflows is configured in `server` auth mode for easy learning (no login token required).
* **Rollouts CLI:** The `kubectl argo rollouts` commands require the [kubectl-argo-rollouts plugin](https://argo-rollouts.readthedocs.io/en/stable/installation/); install it before running the dashboard.
* **For Podman users:** Ensure your Podman machine is started and the `KIND_EXPERIMENTAL_PROVIDER` env variable is set if using older versions of Kind.
```bash
podman machine start
export KIND_EXPERIMENTAL_PROVIDER=podman
```