This repository provides a reproducible Internal Developer Platform running entirely on a lightweight Kubernetes cluster (KIND).
- A complete, local-first platform environment for demos and experimentation.
- GitOps using ArgoCD.
- Core developer platform components:
- Traefik (Ingress Controller)
- Authelia (OIDC & SSO)
- LLDAP (Directory Service)
- Gitea (Git Server)
- Backstage Developer Portal
Before you begin, ensure you have the following installed:
- Docker or Podman - Install Docker or Install Podman
- kind - Install kind
- kubectl - Install kubectl
- Helm - Install Helm
- Make - Usually pre-installed on macOS/Linux
System Requirements:
- 12GB+ RAM available for Docker
git clone https://github.com/your-org/local-developer-platform.git
cd local-developer-platformmake upThis command will:
- Create a KIND cluster with appropriate port mappings
- Install ArgoCD
- Bootstrap all platform applications via GitOps
- Takes approximately 5-10 minutes on first run
After setup completes, details on how to access services will be provided via the CLI.
User Credentials:
┌─────────────┬──────────────────────┬──────────────────────┐
│ Role │ Username │ Password │
├─────────────┼──────────────────────┼──────────────────────┤
│ Maintainer │ platform_maintainer │ xxxxxxxx │
│ User │ platform_user │ xxxxxxxx │
└─────────────┴──────────────────────┴──────────────────────┘
URLs:
┌──────────────┬────────────────────────────────────────────┐
│ Service │ URL │
├──────────────┼────────────────────────────────────────────┤
│ ArgoCD │ https://cd-127-0-0-1.nip.io │
│ Authelia │ https://auth-127-0-0-1.nip.io │
│ Gitea │ https://vcs-127-0-0-1.nip.io │
│ Backstage │ https://portal-127-0-0-1.nip.io │
└──────────────┴────────────────────────────────────────────┘
Note: You may see browser security warnings for self-signed certificates. This is expected in local development.
local-developer-platform/
├── cluster/ # Cluster creation & bootstrap scripts
├── platform-apps/ # All GitOps-managed applications
│ ├── auth/ # Authelia, LLDAP
│ ├── networking/ # Traefik (Ingress Controller)
│ ├── pki/ # Cert-Manager, Trust-Manager
│ ├── secrets/ # External-Secrets, Reloader, Replicator
│ ├── orchestration/ # ArgoCD, Crossplane, Kargo
│ ├── storage/ # CloudNativePG
│ ├── vcs/ # Gitea (Git server)
│ ├── portal/ # Backstage developer portal
│ └── devtools/ # Critiquely
├── spotify-backstage/ # Local Backstage app source
├── spotify-templates/ # Backstage scaffolder templates
├── docs/ # MkDocs documentation
├── Makefile # LDP lifecycle commands
└── README.md
-
Create cluster:
make up -
Delete cluster:
make down -
Check prerequisites before creating cluster:
make preflight -
Show platform health status:
make status -
Update KubeConfig for the kind cluster:
make kubeconfig -
Provide info about the cluster such as usernames and ingresses:
make info
Contributions are welcome! This platform is designed for clarity, reproducibility, and experimentation.
To contribute:
- Fork the repository
- Create a feature branch
- Test your changes with
make upon a fresh cluster - Submit a pull request with a clear description
MIT
WIP