Thank you for your interest in contributing! This project aims to be the most comprehensive list of ways to deploy Kubernetes.
This repository is a comprehensive list of ways to deploy Kubernetes clusters. The focus is on tools, platforms, and methods that help you create, install, or provision Kubernetes infrastructure.
- Kubernetes Deployment Tools: Tools that help you install, create, or provision Kubernetes clusters
- Kubernetes Distributions: Different flavors and implementations of Kubernetes
- Infrastructure as Code Tools: Tools that automate Kubernetes cluster deployment (Terraform, Ansible, Pulumi, etc.)
- Managed Kubernetes Services: Cloud provider services that provide managed Kubernetes clusters (EKS, AKS, GKE, etc.)
- Desktop/Local Development Tools: Tools for running Kubernetes locally for development purposes
- Selfhosted Solutions: Tools for deploying production Kubernetes clusters on your own infrastructure
- Management Platforms: Multi-cluster management platforms that help deploy and manage multiple Kubernetes clusters
- Kubernetes-specific Operating Systems: OS distributions specifically designed to run Kubernetes
- Learning Resources: Tutorials and guides specifically about deploying Kubernetes (like "Kubernetes the Hard Way")
Note on Open Source vs Closed Source: While the heart of the cloud native ecosystem is open source, both open source and closed source (proprietary) tools are accepted in this list. What matters is whether the tool helps deploy Kubernetes clusters, not its licensing model.
- PaaS Offerings Running ON Kubernetes: Platforms (in the sense of Heroku-like platforms), or any service that uses Kubernetes internally but doesn't help you deploy Kubernetes itself
- Applications Deployed TO Kubernetes: Tools for deploying applications to existing clusters (Helm charts, Kustomize, ArgoCD, FluxCD, etc.)
- Kubernetes Add-ons and Extensions: Tools that extend Kubernetes functionality but don't help with initial cluster deployment (service meshes, ingress controllers, monitoring tools, etc.)
- Container Runtimes: Docker, containerd, CRI-O (unless they include a complete Kubernetes deployment method)
- General Infrastructure Tools: Generic IaC tools without specific Kubernetes deployment examples or modules
- Fork the repository and create a new branch
- Edit
data/solutions.yamland add your solution - Submit a Pull Request with a clear description
Each solution should follow this structure:
- name: "Solution Name" # REQUIRED
category: "Desktop" # REQUIRED - See categories below
url: "https://github.com/org/repo" # REQUIRED
icon_url: "https://example.com/logo.svg" # Optional - URL to icon/logo
publisher: "Company Name" # Optional
description: "Short description of the solution" # Optional
license: "Apache 2.0" # Optional - See license types below
open_source: true # Optional - true or false
based_on: # Optional - underlying technologies
- "kubeadm"
- "k3s"
tags: # Recommended - 2-3 tags for filtering and categorization
- "production"
- "lightweight"
- "secure"
cloud_providers: # Optional - for Managed/InfraAsCode solutions
- "aws"
- "gcp"
abandoned: true # Optional - boolean, default: false (false = maintained, true = no longer maintained)
production_ready: true # Optional - boolean, default: false (true = production-ready, false = development/learning)
references: # Optional - external resources
- title: "Getting Started Guide"
description: "Step-by-step tutorial"
language: "en"
url: "https://example.com/guide"
type: "tutorial"License Types:
- Open source:
Apache 2.0,MIT,MPL 2.0,AGPL 3.0,BSD 3-Clause,BUSL 1.1,Zlib - Proprietary:
proprietary - Cloud managed services:
cloud
| Category | Description |
|---|---|
Desktop |
Local development tools |
InfraAsCode |
Infrastructure as Code tools |
KubernetesInKubernetes |
Virtual/nested clusters |
KubernetesOS |
Immutable OS for Kubernetes |
Managed |
Cloud managed services |
ManagementPlatform |
Multi-cluster platforms |
Other |
Playgrounds, education |
Selfhosted |
On-premise deployment tools |
If you're unsure about category placement:
- Primary function wins: If a tool does multiple things, categorize by its primary use case
- Desktop vs Selfhosted:
- Desktop: Designed for local development, single machine, easy setup
- Selfhosted: Designed for production, multi-node, requires infrastructure
- InfraAsCode vs Tool:
- InfraAsCode: Focuses on infrastructure automation and can work across providers
- Selfhosted: The tool itself manages the cluster lifecycle
- Managed vs Management Platform:
- Managed: Service provides the cluster (you're a customer)
- Management Platform: You install it to manage your own clusters
Each solution should have 2-3 tags to help users filter and discover solutions. Choose tags that best describe the solution's characteristics and use cases.
Environment:
local- Runs on local machine/laptopcloud- Cloud-based solution
Use Case:
development- For development/testingproduction- Production-readylearning- Educational/learning purposeseducational- Training and tutorials
Architecture:
self-hosted- You host and manage itmanaged- Managed servicemulti-cluster- Manages multiple clustersmulti-tenancy- Multi-tenant supportvirtualization- Virtual cluster technology
Characteristics:
lightweight- Minimal resource usageimmutable- Immutable infrastructuresecure- Enhanced security featuresenterprise- Enterprise-grade featuresbeginner-friendly- Easy to get started
Deployment:
automation- Automated deploymentinfrastructure-as-code- IaC-basedcontainer-based- Runs in containersdeclarative- Declarative configuration
Features:
multi-cloud- Works across cloud providersbare-metal- Bare metal deploymentedge- Edge computing supportgui- Graphical user interfacegitops- GitOps workflow support
Platform-Specific:
macos- macOS supportwindows- Windows support
Complexity:
high-availability- HA features
- Be specific: Choose tags that accurately describe the solution
- Stay consistent: Use existing tags when possible
- Limit quantity: Stick to 2-3 most relevant tags
- Consider audience: Think about how users will search/filter
Examples:
# Desktop development tool
- name: kind
tags: ["local", "development", "container-based"]
# Production-ready OS
- name: Talos Linux
tags: ["immutable", "production", "lightweight"]
# Managed cloud service
- name: AKS
tags: ["cloud", "managed"]
# Enterprise management platform
- name: Rancher
tags: ["multi-cluster", "enterprise", "rancher"]The production_ready field indicates whether a solution is considered suitable for production environments. This is an optional boolean field that defaults to false if omitted.
When to mark as production_ready: true:
- Official website claims: The solution's website explicitly states it's production-ready or suitable for production use
- Community experience: The community has demonstrated successful production deployments
- Maturity indicators:
- Stable release versions (not alpha/beta)
- Active maintenance and security updates
- Production-grade features (HA, security, monitoring)
- Enterprise adoption or support options
Guidelines:
- Default to
false: If unsure, omit the field or set it tofalse - Development tools: Most desktop/local tools should be
falseunless explicitly designed for production - Managed services: Cloud managed services (EKS, AKS, GKE) are typically
true - Self-hosted solutions: Evaluate based on maturity, documentation, and community adoption
- Be conservative: It's better to under-promise than over-promise production readiness
Examples:
# Production-ready managed service
- name: Amazon EKS
production_ready: true
# Development tool (default false, can be omitted)
- name: kind
production_ready: false # or omit entirely
# Mature self-hosted solution
- name: Rancher
production_ready: true
# Beta or experimental tool
- name: experimental-k8s-tool
# production_ready: false (default, can be omitted)| Type | Description |
|---|---|
article |
Blog post or news article |
book |
Book or book chapter |
video |
YouTube, conference talk recording |
tutorial |
Step-by-step guide |
documentation |
Official docs |
talk |
Conference presentation slides |
Supported language codes: en, fr, de, es, zh, ja, pt, ko, it, ru, nl, pl, tr, ar, hi
Use standard ISO 639-1 two-letter language codes for references.
- Node.js 20+
- npm
# Clone your fork
git clone https://github.com/YOUR_USERNAME/101-ways-to-deploy-kubernetes.git
cd 101-ways-to-deploy-kubernetes
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview├── data/
│ ├── schema.yaml # Schema documentation
│ └── solutions.yaml # All solutions data
├── src/
│ ├── components/ # Astro components
│ ├── layouts/ # Page layouts
│ ├── pages/ # Site pages
│ └── styles/ # Global styles
├── public/ # Static assets
└── .github/
└── workflows/ # CI/CD pipelines
- ✅ Add solutions you have personal experience with
- ✅ Include references to tutorials or documentation
- ✅ Mark abandoned projects appropriately with
abandoned: true - ✅ Use English for all content
- ✅ Test your changes locally before submitting
- ❌ Add duplicate solutions
- ❌ Add solutions without a working URL
- ❌ Add promotional content
- ❌ Remove existing solutions without discussion
- Ensure your changes follow the schema
- Test locally with
npm run build - Update descriptions if needed
- Submit PR with clear title and description
- Preview Deployment: When you open a PR, an automatic preview deployment will be created. A comment will be added to your PR with a link to preview your changes live.
- Wait for review
Open an issue or start a discussion on GitHub!
By contributing, you agree that your contributions will be licensed under CC BY-SA 4.0.