From baacef1d60a04f85ef85d6fa60d8b7c0942709d8 Mon Sep 17 00:00:00 2001 From: Matt Johnston Date: Fri, 25 Apr 2025 21:01:07 -0300 Subject: [PATCH 1/9] docs: first pass at docs/cndi/ --- docs/cndi/README.md | 277 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 277 insertions(+) create mode 100644 docs/cndi/README.md diff --git a/docs/cndi/README.md b/docs/cndi/README.md new file mode 100644 index 00000000..e237de33 --- /dev/null +++ b/docs/cndi/README.md @@ -0,0 +1,277 @@ +# CNDI – Self-Hosted Platform Engineering Made Easy + +**CNDI** (Cloud-Native Deployment Infrastructure) is an open-source tool that +lets you set up full **platform engineering** environments – from infrastructure +to Kubernetes clusters and applications – with minimal effort. It provides a +holistic approach to cluster management, encompassing infrastructure +provisioning, application deployment, GitOps automation, and Day-2 operations. +In short, CNDI gives you the **ease-of-use of a PaaS** while you retain full +control of your stack in your own cloud or data center. πŸš€ + +Developers and platform engineers can use CNDI to quickly provision +**production-ready** Kubernetes clusters _and_ deploy popular services on them +(like databases, analytics, or CI/CD tools) using a single unified +configuration. Everything is managed as code in a Git repository for +auditability and reproducibility. Let’s dive into what CNDI offers. + +## Overview of CNDI + +**What is CNDI?** CNDI stands for **Cloud-Native Deployment Infrastructure** and +is maintained by the Polyseam team. It’s essentially a CLI tool and framework +that automates the creation of Kubernetes-based platforms across multiple +environments. With CNDI you can: + +- **Provision Infrastructure**: Set up cloud resources (VMs, networking, etc.) + on AWS, GCP, Azure, or even locally, all defined via code. +- **Bootstrap a Kubernetes Cluster**: Install a Kubernetes distribution on those + resources (e.g. a K3s cluster on your VMs) complete with essential add-ons + (ingress, cert-manager, etc.). +- **Deploy Applications via GitOps**: Integrate Argo CD for GitOps so that your + application manifests (Helm charts, YAMLs) are continuously deployed to the + cluster from your git repo. +- **Bake in DevOps Best Practices**: Everything (infra and app configs) lives in + a single Git repository – the one source of truth. Changes require git + commits, ensuring traceability and easy rollbacks. +- **Include Observability & Security**: Out-of-the-box, CNDI clusters come with + a full observability stack (Prometheus, Grafana, Loki) and enforce security + via GitOps. It integrates cert-manager for TLS and sealed-secrets for managing + secrets. + +**Key Idea:** CNDI consolidates **Infrastructure-as-Code** and **GitOps** into +one workflow. Instead of managing Terraform for infra and Helm charts for apps +separately, you describe your desired state in one **`cndi_config.yaml`** file. +The CNDI CLI then generates the necessary Terraform and Kubernetes manifests +behind the scenes. + +## Key Features and Benefits + +- **🟒 Open Source & Community-Driven** – Apache-2.0 license, welcomes + contributions, no proprietary lock-in. +- **πŸ”§ Full-Stack Templates** – Blueprints for entire stacks (infra + cluster + + apps) covering Airflow, Kafka, PostgreSQL, WordPress, etc. +- **πŸ“¦ Complete Framework** – Infrastructure provisioning, GitOps CI/CD (Argo + CD), monitoring, logging – all integrated. +- **πŸ”’ Security & Auditability** – Git commits for all changes, secrets managed + via `.env` and sealed-secrets, cert-manager for TLS. +- **πŸš€ Quick Interactive Setup** – CLI prompts guide you through project + creation, even without deep Terraform/K8s knowledge. +- **πŸ€– GitHub Integration** – Auto-create GitHub repo and secrets, includes a + GitHub Actions workflow (`cndi-run.yaml`). +- **♻️ Unified Config & One-Click Updates** – Edit `cndi_config.yaml` + run + `cndi overwrite`, commit & push β†’ everything regenerates. +- **πŸ“œ GitOps by Design** – Argo CD in-cluster watches your repo and + continuously syncs state. +- **πŸ’  Ejectability & Customization** – Generated Terraform and YAMLs are in + your repo; you can extend or β€œeject” at any time. +- **🌐 Multi-Cloud & Hybrid Support** – AWS, GCP, Azure, and local `dev` mode, + all with the same CLI and templates. +- **πŸ’° Cost Efficiency** – Avoid managed-service markups; pay only for raw cloud + resources. `cndi destroy` tears everything down when not needed. + +## How CNDI Works (Architecture) + +```mermaid +flowchart TD + subgraph Workflow["CNDI Workflow"] + direction TB + subgraph Workstation["Dev Machine"] + direction TB + A["`CNDI CLI
_cndi create_
or
_cndi ow_`"] -->|generates| D + A --> |generates| B + + B["Framework Files
_cndi_config.yaml_
_.env_
_GitHub Workflows_"] + + D["Cluster Artifacts
_Terraform Resources_
+
_Kubernetes manifests_"] + D --> F["_git push_"] + B --> F + + end + + subgraph GitHub["GitHub"] + direction TB + F --> C["Your GitHub Repo"] + C --> E["On Pull Request
(GitHub Actions)"] + C --> K["On Merge / Push
(GitHub Actions)"] + E --> L["Static Analysis
eg. _Checkov_
"] + K --> M["CNDI Run
_cndi run_"] + M --> |calls| Q["_terraform apply_"] + + end + + subgraph Cloud["Your Cloud Infrastructure"] + direction TB + Q --> N["`Supporting Resources
(eg. VPC, IAM)`"] + subgraph Cluster["Kubernetes Cluster"] + R["Applications and Config"] + Q --> |creates| P["ArgoCD"] + P --> |syncs| R + P --> |tracks| C + end + end + end +``` + +1. **Project Creation (Bootstrap)** + - `cndi create` (interactive) β†’ scaffolds a new Git repo with: + - `cndi_config.yaml` (main config) + - `.env` (secrets, not committed) + - `cndi/` (generated Terraform & manifests) + - `.github/workflows/cndi-run.yaml` (CI workflow) + +2. **Overwrite (Generate Code)** + - `cndi overwrite` reads your config/env and regenerates Terraform and K8s + manifests in `cndi/`. + +3. **GitOps Pipeline (Provision & Deploy)** + - Push to GitHub β†’ Actions runs `cndi run` β†’ Terraform applies β†’ cluster & + infra up β†’ Argo CD in-cluster pulls manifests β†’ deploys apps. + +4. **Day-2 Operations** + - **Access** via domain/TLS or `kubectl port-forward` + - **Monitor** with Grafana & Loki + - **Update** by editing `cndi_config.yaml` β†’ `cndi overwrite` β†’ push β†’ + automated CI/CD + - **Customize** by adding extra Terraform or manifests in config + - **Destroy** everything with `cndi destroy` when done + +## Installation + +**Prerequisites:** + +- GitHub CLI (`gh auth login`) +- Cloud credentials (AWS, GCP, Azure) or none for local `dev` +- (Optional) domain & email for TLS + +**Install CNDI CLI:** + +
+Mac/Linux + +```bash +curl -fsSL https://raw.githubusercontent.com/polyseam/cndi/main/install.sh | sh +``` + +
+ +
+Windows (PowerShell) + +```powershell +iwr https://raw.githubusercontent.com/polyseam/cndi/main/install.ps1 -UseBasicParsing | iex +``` + +
+ +Verify with: + +```bash +cndi --version +``` + +## Quick Start Tutorial + +Deploy **Airflow** on AWS in minutes: + +1. **Create Project** + ```bash + cndi create my-user/my-airflow-demo -t airflow + ``` + Follow prompts (cloud provider, region, nodes, domain, email…). + +2. **Review & Adjust**\ + Edit `cndi_config.yaml` (e.g., node count, instance size). + +3. **Generate Code** + ```bash + cndi overwrite + git add . + git commit -m "Initial CNDI config" + git push origin main + ``` + +4. **Watch CI**\ + In GitHub Actions, see **CNDI Run** deploy infra and cluster. + +5. **Access Airflow** + - Via domain/TLS if configured + - Or use `kubectl port-forward` + +6. **Next Steps** + - Log into Argo CD (`admin` + password from `.env`) + - Monitor via Grafana & Loki + - Scale or add apps by editing config β†’ `cndi overwrite` β†’ push + - Tear down with `cndi destroy` + +## CNDI Templates and Use Cases + +Popular templates: + +| Template | Use Case | +| ------------- | ------------------------------- | +| Airflow | Data pipelines & ETL | +| Kafka | Event streaming | +| PostgreSQL | SQL databases | +| MySQL | SQL databases | +| MongoDB | NoSQL database | +| Redis | Cache / in-memory store | +| WordPress | CMS & web apps | +| Hop | Visual data integration | +| GPU Operator | GPU workloads / ML | +| Functions | Serverless functions | +| Neo4j | Graph database | +| MS SQL Server | Containerized SQL Server on K8s | + +- **Combine templates** in one `cndi_config.yaml` to deploy multiple stacks side + by side. +- **Custom templates** are easy to create and share with the community. + +## Comparison to Other Tools + +- **DIY IaC + GitOps**: CNDI bundles Terraform, Argo CD, and CI, so you don’t + start from scratch. +- **Managed K8s (EKS/GKE/AKS)**: CNDI uses self-managed clusters for cost and + consistency across clouds. +- **Crossplane**: A framework to build platforms; CNDI is a ready-to-go platform + with batteries included. +- **Kubefirst**: Similar instant GitOps platform installer; CNDI uses a + single-repo, template-driven approach. +- **Backstage**: Developer portal UI; CNDI provides the automation backend. They + can complement each other. +- **Commercial IDPs**: Humanitec, Port, etc., are paid and closed-source; CNDI + is open-source and self-hosted. +- **Terraform/Pulumi**: Low-level IaC; CNDI generates Terraform for you and ties + it into GitOps workflows. + +## Why CNDI Deserves Your Attention + +- **🌟 Simplified Platform Engineering** – From zero to a full platform in an + afternoon. +- **🌟 Single Source of Truth** – All infra & apps in one Git repo with full + auditability. +- **🌟 Production-Ready Out-of-the-Box** – Secure, monitored, GitOps flow from + day one. +- **🌟 Flexibility & Control** – Sensible defaults with easy escape hatch via + generated code. +- **🌟 Community & Knowledge Sharing** – Contribute templates and learn best + practices. +- **🌟 Ideal for Small Teams & Startups** – No need for a large platform team to + get started. +- **🌟 Future-Proof** – Community-maintained templates ensure alignment with + best practices. + +Give CNDI a try – spin up a template in your cloud of choice, and experience how +quickly you can go from code to cloud. Happy self-hosting! πŸš€ + +--- + +## Further Resources + +- **Official Site**: https://cndi.dev +- **GitHub Repo**: https://github.com/polyseam/cndi +- **Discord Community**: (Link on the official site) +- **Related Projects**: + - Crossplane: https://crossplane.io + - Kubefirst: https://kubefirst.io + - Backstage: https://backstage.io + - Argo CD: https://argo-cd.readthedocs.io + - Terraform: https://www.terraform.io From 59cb0d748a282e3b122e32a149426dcc73dd4fa5 Mon Sep 17 00:00:00 2001 From: Matt Johnston Date: Fri, 25 Apr 2025 21:28:19 -0300 Subject: [PATCH 2/9] docs: refining --- docs/cndi/README.md | 133 +++++++++++++++++++++----------------------- 1 file changed, 63 insertions(+), 70 deletions(-) diff --git a/docs/cndi/README.md b/docs/cndi/README.md index e237de33..c0645ad4 100644 --- a/docs/cndi/README.md +++ b/docs/cndi/README.md @@ -24,9 +24,8 @@ environments. With CNDI you can: - **Provision Infrastructure**: Set up cloud resources (VMs, networking, etc.) on AWS, GCP, Azure, or even locally, all defined via code. - **Bootstrap a Kubernetes Cluster**: Install a Kubernetes distribution on those - resources (e.g. a K3s cluster on your VMs) complete with essential add-ons - (ingress, cert-manager, etc.). -- **Deploy Applications via GitOps**: Integrate Argo CD for GitOps so that your + resources complete with essential add-ons (ingress, cert-manager, etc.). +- **Deploy Applications via GitOps**: Integrate ArgoCD for GitOps so that your application manifests (Helm charts, YAMLs) are continuously deployed to the cluster from your git repo. - **Bake in DevOps Best Practices**: Everything (infra and app configs) lives in @@ -50,13 +49,14 @@ behind the scenes. - **πŸ”§ Full-Stack Templates** – Blueprints for entire stacks (infra + cluster + apps) covering Airflow, Kafka, PostgreSQL, WordPress, etc. - **πŸ“¦ Complete Framework** – Infrastructure provisioning, GitOps CI/CD (Argo - CD), monitoring, logging – all integrated. + CD), monitoring, logging, secrets, ExternalDNS – all integrated. - **πŸ”’ Security & Auditability** – Git commits for all changes, secrets managed via `.env` and sealed-secrets, cert-manager for TLS. - **πŸš€ Quick Interactive Setup** – CLI prompts guide you through project creation, even without deep Terraform/K8s knowledge. - **πŸ€– GitHub Integration** – Auto-create GitHub repo and secrets, includes a - GitHub Actions workflow (`cndi-run.yaml`). + GitHub Actions workflow for deployments (`cndi-run.yaml`) and one for checks + (`cndi_onpull.yaml`). - **♻️ Unified Config & One-Click Updates** – Edit `cndi_config.yaml` + run `cndi overwrite`, commit & push β†’ everything regenerates. - **πŸ“œ GitOps by Design** – Argo CD in-cluster watches your repo and @@ -70,6 +70,8 @@ behind the scenes. ## How CNDI Works (Architecture) +### Diagram + ```mermaid flowchart TD subgraph Workflow["CNDI Workflow"] @@ -111,24 +113,28 @@ flowchart TD end ``` +### Developer Experience + 1. **Project Creation (Bootstrap)** - `cndi create` (interactive) β†’ scaffolds a new Git repo with: - `cndi_config.yaml` (main config) - `.env` (secrets, not committed) - - `cndi/` (generated Terraform & manifests) + - `cndi/terraform/*` (generated Terraform) + - `cndi/cluster_manifests/*` (generated K8s manifests) - `.github/workflows/cndi-run.yaml` (CI workflow) + - `.github/workflows/cndi_onpull.yaml` (CI checks workflow) 2. **Overwrite (Generate Code)** - - `cndi overwrite` reads your config/env and regenerates Terraform and K8s - manifests in `cndi/`. + - `cndi overwrite` reads your `cndi_config.yaml` and `.env` and regenerates + Terraform and Kubernetes manifests in `cndi/`. 3. **GitOps Pipeline (Provision & Deploy)** - Push to GitHub β†’ Actions runs `cndi run` β†’ Terraform applies β†’ cluster & infra up β†’ Argo CD in-cluster pulls manifests β†’ deploys apps. 4. **Day-2 Operations** - - **Access** via domain/TLS or `kubectl port-forward` - - **Monitor** with Grafana & Loki + - **Access** via domain/TLS + - **Monitor** with Prometheus, Grafana, & Loki - **Update** by editing `cndi_config.yaml` β†’ `cndi overwrite` β†’ push β†’ automated CI/CD - **Customize** by adding extra Terraform or manifests in config @@ -142,35 +148,12 @@ flowchart TD - Cloud credentials (AWS, GCP, Azure) or none for local `dev` - (Optional) domain & email for TLS -**Install CNDI CLI:** - -
-Mac/Linux - -```bash -curl -fsSL https://raw.githubusercontent.com/polyseam/cndi/main/install.sh | sh -``` - -
- -
-Windows (PowerShell) - -```powershell -iwr https://raw.githubusercontent.com/polyseam/cndi/main/install.ps1 -UseBasicParsing | iex -``` - -
- -Verify with: - -```bash -cndi --version -``` +Once you have what you need, install CNDI using the guide from the +[Project's README.md](https://cndi.run/gh?utm_source=c2cPE). ## Quick Start Tutorial -Deploy **Airflow** on AWS in minutes: +Deploy **Airflow** on your cloud in minutes: 1. **Create Project** ```bash @@ -178,25 +161,19 @@ Deploy **Airflow** on AWS in minutes: ``` Follow prompts (cloud provider, region, nodes, domain, email…). -2. **Review & Adjust**\ - Edit `cndi_config.yaml` (e.g., node count, instance size). - -3. **Generate Code** +2. **Open GitHub Repo** ```bash - cndi overwrite - git add . - git commit -m "Initial CNDI config" - git push origin main + gh repo view my-user/my-airflow-demo --web ``` -4. **Watch CI**\ +3. **Watch CI**\ In GitHub Actions, see **CNDI Run** deploy infra and cluster. -5. **Access Airflow** +4. **Access Airflow** - Via domain/TLS if configured - Or use `kubectl port-forward` -6. **Next Steps** +5. **Next Steps** - Log into Argo CD (`admin` + password from `.env`) - Monitor via Grafana & Loki - Scale or add apps by editing config β†’ `cndi overwrite` β†’ push @@ -204,33 +181,41 @@ Deploy **Airflow** on AWS in minutes: ## CNDI Templates and Use Cases +CNDI comes with a variety of **pre-built templates** for common use cases. These +templates are designed to be production-ready and can be easily customized to +fit your needs. Each template includes a complete stack of infrastructure, +Kubernetes cluster, and applications, all defined in a single `cndi_config.yaml` +file. This allows you to quickly spin up a fully functional environment with +minimal effort, and when you need to make changes, you can do so by simply +editing that same file and running `cndi overwrite`. + Popular templates: -| Template | Use Case | -| ------------- | ------------------------------- | -| Airflow | Data pipelines & ETL | -| Kafka | Event streaming | -| PostgreSQL | SQL databases | -| MySQL | SQL databases | -| MongoDB | NoSQL database | -| Redis | Cache / in-memory store | -| WordPress | CMS & web apps | -| Hop | Visual data integration | -| GPU Operator | GPU workloads / ML | -| Functions | Serverless functions | -| Neo4j | Graph database | -| MS SQL Server | Containerized SQL Server on K8s | - -- **Combine templates** in one `cndi_config.yaml` to deploy multiple stacks side - by side. -- **Custom templates** are easy to create and share with the community. +| Template | Use Case | +| ------------------------------------------------------- | ------------------------------- | +| [Airflow](https://cndi.dev/templates/airflow) | Data pipelines & ETL | +| [Kafka](https://cndi.dev/templates/kafka) | Event streaming | +| [PostgreSQL](https://cndi.dev/templates/postgres) | SQL databases | +| [MySQL](https://cndi.dev/templates/mysql) | SQL databases | +| [MongoDB](https://cndi.dev/templates/mongodb) | NoSQL database | +| [Redis](https://cndi.dev/templates/redis) | Cache / in-memory store | +| [WordPress](https://cndi.dev/templates/wordpress) | CMS & web apps | +| [Hop](https://cndi.dev/templates/hop) | Visual data integration | +| [GPU Operator](https://cndi.dev/templates/gpu-operator) | GPU workloads / ML | +| [Functions](https://cndi.dev/templates/fns) | Serverless functions | +| [Neo4j](https://cndi.dev/templates/neo4j) | Graph database | +| [MS SQL Server](https://cndi.dev/templates/mssqlserver) | Containerized SQL Server on K8s | + +- Don't forget **Custom Templates** are easy to create and share with the + community! ## Comparison to Other Tools - **DIY IaC + GitOps**: CNDI bundles Terraform, Argo CD, and CI, so you don’t start from scratch. -- **Managed K8s (EKS/GKE/AKS)**: CNDI uses self-managed clusters for cost and - consistency across clouds. +- **Managed K8s (EKS/GKE/AKS)**: CNDI uses the latest technologies from cloud + service providers while providing a unified layer over top of them for a + consistent experience. - **Crossplane**: A framework to build platforms; CNDI is a ready-to-go platform with batteries included. - **Kubefirst**: Similar instant GitOps platform installer; CNDI uses a @@ -268,10 +253,18 @@ quickly you can go from code to cloud. Happy self-hosting! πŸš€ - **Official Site**: https://cndi.dev - **GitHub Repo**: https://github.com/polyseam/cndi -- **Discord Community**: (Link on the official site) +- **Discord Community**: https://cndi.run/di?utm_source=c2cPE - **Related Projects**: + - Argo CD: https://argo-cd.readthedocs.io + - Terraform: https://www.terraform.io + - GitHub Actions: https://github.com/features/actions + - Prometheus: https://prometheus.io + - Grafana: https://grafana.com + - Loki: https://grafana.com/oss/loki + - Cert-Manager: https://cert-manager.io + - Sealed Secrets: https://github.com/bitnami-labs/sealed-secrets + - Checkov: https://www.checkov.io + - Helm: https://helm.sh - Crossplane: https://crossplane.io - Kubefirst: https://kubefirst.io - Backstage: https://backstage.io - - Argo CD: https://argo-cd.readthedocs.io - - Terraform: https://www.terraform.io From 7d26232565e8dcba26bdf52d8a62b678fc5bdcbf Mon Sep 17 00:00:00 2001 From: Matt Johnston Date: Fri, 25 Apr 2025 21:52:35 -0300 Subject: [PATCH 3/9] docs: -m refining --- docs/cndi/README.md | 77 ++++++++++++++++++++++++++------------------- 1 file changed, 44 insertions(+), 33 deletions(-) diff --git a/docs/cndi/README.md b/docs/cndi/README.md index c0645ad4..d19b5251 100644 --- a/docs/cndi/README.md +++ b/docs/cndi/README.md @@ -1,25 +1,33 @@ -# CNDI – Self-Hosted Platform Engineering Made Easy - -**CNDI** (Cloud-Native Deployment Infrastructure) is an open-source tool that -lets you set up full **platform engineering** environments – from infrastructure -to Kubernetes clusters and applications – with minimal effort. It provides a -holistic approach to cluster management, encompassing infrastructure -provisioning, application deployment, GitOps automation, and Day-2 operations. -In short, CNDI gives you the **ease-of-use of a PaaS** while you retain full -control of your stack in your own cloud or data center. πŸš€ - -Developers and platform engineers can use CNDI to quickly provision -**production-ready** Kubernetes clusters _and_ deploy popular services on them -(like databases, analytics, or CI/CD tools) using a single unified -configuration. Everything is managed as code in a Git repository for -auditability and reproducibility. Let’s dive into what CNDI offers. +# CNDI – Self-Hosted Infrastructure Services in minutes + +**CNDI** (Cloud-Native Deployment Infrastructure) is a completely free and +open-source framework for deploying and managing cloud-native applications on +Kubernetes in any environment. It provides a holistic approach to cluster +management, encompassing infrastructure provisioning, application deployment, +GitOps automation, and Day-2 operations. In short, CNDI gives you the +**ease-of-use of a PaaS** while you retain full control of your stack in your +own cloud with no license fees. πŸš€ + +Developers can use CNDI to quickly provision **production-ready** Kubernetes +clusters _and_ deploy popular services on them (like databases, analytics, or +CI/CD tools) using a single unified configuration. Everything is managed as code +in a Git repository for auditability and reproducibility. You can even create +your own custom Templates, turning CNDI into a platform engineering powerhouse. + +If you like what you see, please check us out at +[https://cndi.dev](https://cndi.dev) and +[github.com/polyseam/cndi](https://github.com/polyseam/cndi)! + +Let’s dive into what CNDI has to offer. ## Overview of CNDI -**What is CNDI?** CNDI stands for **Cloud-Native Deployment Infrastructure** and -is maintained by the Polyseam team. It’s essentially a CLI tool and framework -that automates the creation of Kubernetes-based platforms across multiple -environments. With CNDI you can: +**What is CNDI?** CNDI stands for **Cloud-Native Deployment Infrastructure** + + and is maintained by the Polyseam team. It automates the + +creation of Kubernetes-based platforms all modern environments. With CNDI you +can automatically: - **Provision Infrastructure**: Set up cloud resources (VMs, networking, etc.) on AWS, GCP, Azure, or even locally, all defined via code. @@ -70,26 +78,27 @@ behind the scenes. ## How CNDI Works (Architecture) -### Diagram +
+

Diagram

```mermaid flowchart TD subgraph Workflow["CNDI Workflow"] - direction TB - subgraph Workstation["Dev Machine"] + direction TB + + subgraph Workstation["Dev Machine"] direction TB A["`CNDI CLI
_cndi create_
or
_cndi ow_`"] -->|generates| D A --> |generates| B B["Framework Files
_cndi_config.yaml_
_.env_
_GitHub Workflows_"] - + D["Cluster Artifacts
_Terraform Resources_
+
_Kubernetes manifests_"] D --> F["_git push_"] B --> F - - end + end - subgraph GitHub["GitHub"] + subgraph GitHub["GitHub"] direction TB F --> C["Your GitHub Repo"] C --> E["On Pull Request
(GitHub Actions)"] @@ -97,22 +106,24 @@ flowchart TD E --> L["Static Analysis
eg. _Checkov_
"] K --> M["CNDI Run
_cndi run_"] M --> |calls| Q["_terraform apply_"] - - end + end subgraph Cloud["Your Cloud Infrastructure"] direction TB Q --> N["`Supporting Resources
(eg. VPC, IAM)`"] + subgraph Cluster["Kubernetes Cluster"] - R["Applications and Config"] - Q --> |creates| P["ArgoCD"] - P --> |syncs| R - P --> |tracks| C + R["Applications and Config"] + Q --> |creates| P["ArgoCD"] + P --> |syncs| R + P --> |tracks| C end - end + end end ``` +
+ ### Developer Experience 1. **Project Creation (Bootstrap)** From 7dd9d7dc9170fa543133dfe3422d2392a10fd7cf Mon Sep 17 00:00:00 2001 From: Matt Johnston Date: Fri, 25 Apr 2025 21:56:32 -0300 Subject: [PATCH 4/9] docs: -m tweak --- docs/cndi/README.md | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/docs/cndi/README.md b/docs/cndi/README.md index d19b5251..bfe0f7c3 100644 --- a/docs/cndi/README.md +++ b/docs/cndi/README.md @@ -224,9 +224,6 @@ Popular templates: - **DIY IaC + GitOps**: CNDI bundles Terraform, Argo CD, and CI, so you don’t start from scratch. -- **Managed K8s (EKS/GKE/AKS)**: CNDI uses the latest technologies from cloud - service providers while providing a unified layer over top of them for a - consistent experience. - **Crossplane**: A framework to build platforms; CNDI is a ready-to-go platform with batteries included. - **Kubefirst**: Similar instant GitOps platform installer; CNDI uses a @@ -240,19 +237,18 @@ Popular templates: ## Why CNDI Deserves Your Attention -- **🌟 Simplified Platform Engineering** – From zero to a full platform in an - afternoon. +- **🌟 Simplified Platform Engineering** – From zero to a full platform in + minutes - **🌟 Single Source of Truth** – All infra & apps in one Git repo with full auditability. - **🌟 Production-Ready Out-of-the-Box** – Secure, monitored, GitOps flow from day one. -- **🌟 Flexibility & Control** – Sensible defaults with easy escape hatch via - generated code. -- **🌟 Community & Knowledge Sharing** – Contribute templates and learn best +- **🌟 Flexibility & Control** – Sensible defaults and simple customization +- **🌟 Community & Knowledge Sharing** – Contribute Templates and learn best practices. - **🌟 Ideal for Small Teams & Startups** – No need for a large platform team to get started. -- **🌟 Future-Proof** – Community-maintained templates ensure alignment with +- **🌟 Future-Proof** – Community-maintained Templates ensure alignment with best practices. Give CNDI a try – spin up a template in your cloud of choice, and experience how From 158bc62b6269ac612398843209aedc7c00464bdd Mon Sep 17 00:00:00 2001 From: Matt Johnston Date: Fri, 25 Apr 2025 21:57:40 -0300 Subject: [PATCH 5/9] docs: argo label tweak --- docs/cndi/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cndi/README.md b/docs/cndi/README.md index bfe0f7c3..8fdf5537 100644 --- a/docs/cndi/README.md +++ b/docs/cndi/README.md @@ -115,7 +115,7 @@ flowchart TD subgraph Cluster["Kubernetes Cluster"] R["Applications and Config"] Q --> |creates| P["ArgoCD"] - P --> |syncs| R + P --> |guarantees| R P --> |tracks| C end end From 30603dc4e8d18a5743ac8ae08770cfe8f97c689f Mon Sep 17 00:00:00 2001 From: Matt Johnston Date: Mon, 28 Apr 2025 21:00:32 -0300 Subject: [PATCH 6/9] docs: rm comparisons --- docs/cndi/README.md | 31 ++++++------------------------- 1 file changed, 6 insertions(+), 25 deletions(-) diff --git a/docs/cndi/README.md b/docs/cndi/README.md index 8fdf5537..a58abfff 100644 --- a/docs/cndi/README.md +++ b/docs/cndi/README.md @@ -22,12 +22,11 @@ Let’s dive into what CNDI has to offer. ## Overview of CNDI -**What is CNDI?** CNDI stands for **Cloud-Native Deployment Infrastructure** +**What is CNDI?** CNDI stands for **Cloud-Native Deployment Infrastructure** and +is maintained by the Polyseam team. It automates the creation of +Kubernetes-based platforms all modern environments. - and is maintained by the Polyseam team. It automates the - -creation of Kubernetes-based platforms all modern environments. With CNDI you -can automatically: +With CNDI you can automatically: - **Provision Infrastructure**: Set up cloud resources (VMs, networking, etc.) on AWS, GCP, Azure, or even locally, all defined via code. @@ -193,14 +192,14 @@ Deploy **Airflow** on your cloud in minutes: ## CNDI Templates and Use Cases CNDI comes with a variety of **pre-built templates** for common use cases. These -templates are designed to be production-ready and can be easily customized to +Templates are designed to be production-ready and can be easily customized to fit your needs. Each template includes a complete stack of infrastructure, Kubernetes cluster, and applications, all defined in a single `cndi_config.yaml` file. This allows you to quickly spin up a fully functional environment with minimal effort, and when you need to make changes, you can do so by simply editing that same file and running `cndi overwrite`. -Popular templates: +Popular Templates: | Template | Use Case | | ------------------------------------------------------- | ------------------------------- | @@ -220,21 +219,6 @@ Popular templates: - Don't forget **Custom Templates** are easy to create and share with the community! -## Comparison to Other Tools - -- **DIY IaC + GitOps**: CNDI bundles Terraform, Argo CD, and CI, so you don’t - start from scratch. -- **Crossplane**: A framework to build platforms; CNDI is a ready-to-go platform - with batteries included. -- **Kubefirst**: Similar instant GitOps platform installer; CNDI uses a - single-repo, template-driven approach. -- **Backstage**: Developer portal UI; CNDI provides the automation backend. They - can complement each other. -- **Commercial IDPs**: Humanitec, Port, etc., are paid and closed-source; CNDI - is open-source and self-hosted. -- **Terraform/Pulumi**: Low-level IaC; CNDI generates Terraform for you and ties - it into GitOps workflows. - ## Why CNDI Deserves Your Attention - **🌟 Simplified Platform Engineering** – From zero to a full platform in @@ -272,6 +256,3 @@ quickly you can go from code to cloud. Happy self-hosting! πŸš€ - Sealed Secrets: https://github.com/bitnami-labs/sealed-secrets - Checkov: https://www.checkov.io - Helm: https://helm.sh - - Crossplane: https://crossplane.io - - Kubefirst: https://kubefirst.io - - Backstage: https://backstage.io From a68efdfc27ea06b95ddb86e4839dcb77a39214fc Mon Sep 17 00:00:00 2001 From: Matt Johnston Date: Mon, 28 Apr 2025 22:13:06 -0300 Subject: [PATCH 7/9] docs: reorganize - highlevel content high up --- docs/cndi/README.md | 126 ++++++++++++++++++++++---------------------- 1 file changed, 64 insertions(+), 62 deletions(-) diff --git a/docs/cndi/README.md b/docs/cndi/README.md index a58abfff..67ce07ea 100644 --- a/docs/cndi/README.md +++ b/docs/cndi/README.md @@ -11,8 +11,9 @@ own cloud with no license fees. πŸš€ Developers can use CNDI to quickly provision **production-ready** Kubernetes clusters _and_ deploy popular services on them (like databases, analytics, or CI/CD tools) using a single unified configuration. Everything is managed as code -in a Git repository for auditability and reproducibility. You can even create -your own custom Templates, turning CNDI into a platform engineering powerhouse. +in a single Git repository for auditability and reproducibility. You can even +create your own custom Templates, turning CNDI into a platform engineering +powerhouse. If you like what you see, please check us out at [https://cndi.dev](https://cndi.dev) and @@ -20,18 +21,38 @@ If you like what you see, please check us out at Let’s dive into what CNDI has to offer. -## Overview of CNDI +## Why CNDI Deserves Your Attention + +With complete end-to-end control of your infrastructure, CNDI gives you the ease +of use you expect from a PaaS, coupled with the control, flexibility, and cost +savings of self-hosting. + +- **🌟 Single Source of Truth** – All infra & apps in one Git repo with full + auditability. +- **🌟 Production-Ready Out-of-the-Box** – Secure, monitored, GitOps flow from + day one. +- **🌟 Flexibility & Control** – Sensible defaults and simple customization. +- **🌟 Entirely Free & Open Source** – Community maintained framework and + Templates. + +To get a sense of what CNDI and it's Templates can do for you, you can +experiment with our browser-based wizard at +[cndi.dev/configurator](https://cndi.dev/configurator)! + +## Overview & Use Cases **What is CNDI?** CNDI stands for **Cloud-Native Deployment Infrastructure** and -is maintained by the Polyseam team. It automates the creation of -Kubernetes-based platforms all modern environments. +is maintained by the Polyseam team alongside Open-Source contributors. It +automates the creation of Kubernetes-based platforms on every modern +environment. With CNDI you can automatically: - **Provision Infrastructure**: Set up cloud resources (VMs, networking, etc.) on AWS, GCP, Azure, or even locally, all defined via code. -- **Bootstrap a Kubernetes Cluster**: Install a Kubernetes distribution on those - resources complete with essential add-ons (ingress, cert-manager, etc.). +- **Bootstrap your Kubernetes Cluster and Components**: Install a Kubernetes + distribution on those resources complete with essential add-ons (ingress, + cert-manager, etc.). - **Deploy Applications via GitOps**: Integrate ArgoCD for GitOps so that your application manifests (Helm charts, YAMLs) are continuously deployed to the cluster from your git repo. @@ -46,10 +67,10 @@ With CNDI you can automatically: **Key Idea:** CNDI consolidates **Infrastructure-as-Code** and **GitOps** into one workflow. Instead of managing Terraform for infra and Helm charts for apps separately, you describe your desired state in one **`cndi_config.yaml`** file. -The CNDI CLI then generates the necessary Terraform and Kubernetes manifests -behind the scenes. +The `cndi` CLI then generates the necessary Terraform and Kubernetes manifests +for your target deployment environment for you, behind the scenes. -## Key Features and Benefits +### Key Features & Benefits - **🟒 Open Source & Community-Driven** – Apache-2.0 license, welcomes contributions, no proprietary lock-in. @@ -61,6 +82,8 @@ behind the scenes. via `.env` and sealed-secrets, cert-manager for TLS. - **πŸš€ Quick Interactive Setup** – CLI prompts guide you through project creation, even without deep Terraform/K8s knowledge. +- **πŸ–₯️ Online Configurator** - You can even play with configuring Templates + online with the [cndi configurator](https://cndi.dev/configurator). - **πŸ€– GitHub Integration** – Auto-create GitHub repo and secrets, includes a GitHub Actions workflow for deployments (`cndi-run.yaml`) and one for checks (`cndi_onpull.yaml`). @@ -71,10 +94,40 @@ behind the scenes. - **πŸ’  Ejectability & Customization** – Generated Terraform and YAMLs are in your repo; you can extend or β€œeject” at any time. - **🌐 Multi-Cloud & Hybrid Support** – AWS, GCP, Azure, and local `dev` mode, - all with the same CLI and templates. + all with the same CLI and Templates. - **πŸ’° Cost Efficiency** – Avoid managed-service markups; pay only for raw cloud resources. `cndi destroy` tears everything down when not needed. +### Templates + +CNDI comes with a variety of **pre-built templates** for common use cases. These +Templates are designed to be production-ready and can be easily customized to +fit your needs. Each Template includes a complete stack of infrastructure, +Kubernetes cluster, and applications, all defined in a single `cndi_config.yaml` +file. This allows you to quickly spin up a fully functional environment with +minimal effort, and when you need to make changes, you can do so by simply +editing that same file and running `cndi overwrite`. + +Popular Templates: + +| Template | Use Case | +| ------------------------------------------------------- | ------------------------------- | +| [Airflow](https://cndi.dev/templates/airflow) | Data pipelines & ETL | +| [Kafka](https://cndi.dev/templates/kafka) | Event streaming | +| [PostgreSQL](https://cndi.dev/templates/postgres) | SQL databases | +| [MySQL](https://cndi.dev/templates/mysql) | SQL databases | +| [MongoDB](https://cndi.dev/templates/mongodb) | NoSQL database | +| [Redis](https://cndi.dev/templates/redis) | Cache / in-memory store | +| [WordPress](https://cndi.dev/templates/wordpress) | CMS & web apps | +| [Hop](https://cndi.dev/templates/hop) | Visual data integration | +| [GPU Operator](https://cndi.dev/templates/gpu-operator) | GPU workloads / ML | +| [Functions](https://cndi.dev/templates/fns) | Serverless functions | +| [Neo4j](https://cndi.dev/templates/neo4j) | Graph database | +| [MS SQL Server](https://cndi.dev/templates/mssqlserver) | Containerized SQL Server on K8s | + +- Don't forget **Custom Templates** are easy to create and share with the + community! + ## How CNDI Works (Architecture)
@@ -189,57 +242,6 @@ Deploy **Airflow** on your cloud in minutes: - Scale or add apps by editing config β†’ `cndi overwrite` β†’ push - Tear down with `cndi destroy` -## CNDI Templates and Use Cases - -CNDI comes with a variety of **pre-built templates** for common use cases. These -Templates are designed to be production-ready and can be easily customized to -fit your needs. Each template includes a complete stack of infrastructure, -Kubernetes cluster, and applications, all defined in a single `cndi_config.yaml` -file. This allows you to quickly spin up a fully functional environment with -minimal effort, and when you need to make changes, you can do so by simply -editing that same file and running `cndi overwrite`. - -Popular Templates: - -| Template | Use Case | -| ------------------------------------------------------- | ------------------------------- | -| [Airflow](https://cndi.dev/templates/airflow) | Data pipelines & ETL | -| [Kafka](https://cndi.dev/templates/kafka) | Event streaming | -| [PostgreSQL](https://cndi.dev/templates/postgres) | SQL databases | -| [MySQL](https://cndi.dev/templates/mysql) | SQL databases | -| [MongoDB](https://cndi.dev/templates/mongodb) | NoSQL database | -| [Redis](https://cndi.dev/templates/redis) | Cache / in-memory store | -| [WordPress](https://cndi.dev/templates/wordpress) | CMS & web apps | -| [Hop](https://cndi.dev/templates/hop) | Visual data integration | -| [GPU Operator](https://cndi.dev/templates/gpu-operator) | GPU workloads / ML | -| [Functions](https://cndi.dev/templates/fns) | Serverless functions | -| [Neo4j](https://cndi.dev/templates/neo4j) | Graph database | -| [MS SQL Server](https://cndi.dev/templates/mssqlserver) | Containerized SQL Server on K8s | - -- Don't forget **Custom Templates** are easy to create and share with the - community! - -## Why CNDI Deserves Your Attention - -- **🌟 Simplified Platform Engineering** – From zero to a full platform in - minutes -- **🌟 Single Source of Truth** – All infra & apps in one Git repo with full - auditability. -- **🌟 Production-Ready Out-of-the-Box** – Secure, monitored, GitOps flow from - day one. -- **🌟 Flexibility & Control** – Sensible defaults and simple customization -- **🌟 Community & Knowledge Sharing** – Contribute Templates and learn best - practices. -- **🌟 Ideal for Small Teams & Startups** – No need for a large platform team to - get started. -- **🌟 Future-Proof** – Community-maintained Templates ensure alignment with - best practices. - -Give CNDI a try – spin up a template in your cloud of choice, and experience how -quickly you can go from code to cloud. Happy self-hosting! πŸš€ - ---- - ## Further Resources - **Official Site**: https://cndi.dev From 3039d243a76988dc46ec185d55991d05127d83d0 Mon Sep 17 00:00:00 2001 From: Matt Johnston Date: Mon, 28 Apr 2025 22:18:41 -0300 Subject: [PATCH 8/9] docs: tweaks and typos --- docs/cndi/README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/cndi/README.md b/docs/cndi/README.md index 67ce07ea..7f374ca8 100644 --- a/docs/cndi/README.md +++ b/docs/cndi/README.md @@ -10,9 +10,9 @@ own cloud with no license fees. πŸš€ Developers can use CNDI to quickly provision **production-ready** Kubernetes clusters _and_ deploy popular services on them (like databases, analytics, or -CI/CD tools) using a single unified configuration. Everything is managed as code -in a single Git repository for auditability and reproducibility. You can even -create your own custom Templates, turning CNDI into a platform engineering +CI/CD tools) using a single unified configuration file. Everything is managed as +code in a single Git repository for auditability and reproducibility. You can +even create your own custom Templates, turning CNDI into a platform engineering powerhouse. If you like what you see, please check us out at @@ -51,8 +51,8 @@ With CNDI you can automatically: - **Provision Infrastructure**: Set up cloud resources (VMs, networking, etc.) on AWS, GCP, Azure, or even locally, all defined via code. - **Bootstrap your Kubernetes Cluster and Components**: Install a Kubernetes - distribution on those resources complete with essential add-ons (ingress, - cert-manager, etc.). + distribution on those infrastructure resources complete with essential add-ons + (ingress, cert-manager, etc.). - **Deploy Applications via GitOps**: Integrate ArgoCD for GitOps so that your application manifests (Helm charts, YAMLs) are continuously deployed to the cluster from your git repo. @@ -176,7 +176,7 @@ flowchart TD
-### Developer Experience +## Developer Experience 1. **Project Creation (Bootstrap)** - `cndi create` (interactive) β†’ scaffolds a new Git repo with: From 3f125d57e1b08794e02aa8d060cb7ddfa1271672 Mon Sep 17 00:00:00 2001 From: Matt Johnston Date: Mon, 28 Apr 2025 22:25:44 -0300 Subject: [PATCH 9/9] docs: tweaks and typos --- docs/cndi/README.md | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/docs/cndi/README.md b/docs/cndi/README.md index 7f374ca8..ac30afeb 100644 --- a/docs/cndi/README.md +++ b/docs/cndi/README.md @@ -1,12 +1,11 @@ # CNDI – Self-Hosted Infrastructure Services in minutes -**CNDI** (Cloud-Native Deployment Infrastructure) is a completely free and -open-source framework for deploying and managing cloud-native applications on -Kubernetes in any environment. It provides a holistic approach to cluster -management, encompassing infrastructure provisioning, application deployment, -GitOps automation, and Day-2 operations. In short, CNDI gives you the -**ease-of-use of a PaaS** while you retain full control of your stack in your -own cloud with no license fees. πŸš€ +**CNDI** is a completely free and open-source framework for deploying and +managing cloud-native applications on Kubernetes in any environment. It provides +a holistic approach to cluster management, encompassing infrastructure +provisioning, application deployment, GitOps automation, and Day-2 operations. +In short, CNDI gives you the **ease-of-use of a PaaS** while you retain full +control of your stack in your own cloud with no license fees. πŸš€ Developers can use CNDI to quickly provision **production-ready** Kubernetes clusters _and_ deploy popular services on them (like databases, analytics, or @@ -41,10 +40,10 @@ experiment with our browser-based wizard at ## Overview & Use Cases -**What is CNDI?** CNDI stands for **Cloud-Native Deployment Infrastructure** and -is maintained by the Polyseam team alongside Open-Source contributors. It -automates the creation of Kubernetes-based platforms on every modern -environment. +**What is CNDI?** CNDI stands for **Cloud-Native Deployment Interface** and is a +cloud-native framework maintained by the Polyseam team alongside Open-Source +contributors. It automates the creation of Kubernetes-based infrastructure +platforms with unified support for every modern K8s environment. With CNDI you can automatically: @@ -68,7 +67,7 @@ With CNDI you can automatically: one workflow. Instead of managing Terraform for infra and Helm charts for apps separately, you describe your desired state in one **`cndi_config.yaml`** file. The `cndi` CLI then generates the necessary Terraform and Kubernetes manifests -for your target deployment environment for you, behind the scenes. +for your target deployment environment for you. ### Key Features & Benefits