What is KubeVela?
KubeVela is an open-source platform engine that makes building Internal Developer Platforms (IDPs) on Kubernetes easy. Instead of exposing raw Kubernetes YAML to developers, KubeVela provides application-centric abstractions powered by the Open Application Model (OAM).
Why KubeVela?
- Application-first — developers describe WHAT they want, not HOW to deploy
- Multi-cluster — deploy to any Kubernetes cluster from one control plane
- GitOps built-in — native FluxCD integration
- Extensible with CUE — define custom abstractions without Go code
- UI dashboard — VelaUX provides a visual interface for app management
Quick Start
# Install KubeVela CLI
curl -fsSl https://kubevela.io/script/install.sh | bash
# Install KubeVela on your cluster
vela install
# Enable addons
vela addon enable velaux # Web UI
vela addon enable fluxcd # GitOps
vela addon enable terraform # Cloud resources
Deploy Your First Application
# app.yaml — this is ALL developers need to write
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: my-webapp
spec:
components:
- name: frontend
type: webservice
properties:
image: nginx:latest
ports:
- port: 80
expose: true
cpu: "0.5"
memory: "512Mi"
traits:
- type: scaler
properties:
replicas: 3
- type: gateway
properties:
domain: app.example.com
http:
/: 80
vela up -f app.yaml
vela status my-webapp
Multi-Cluster Deployment
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: global-app
spec:
components:
- name: api-server
type: webservice
properties:
image: myapp/api:v2
ports:
- port: 8080
policies:
- name: topology
type: topology
properties:
clusters: ["us-east", "eu-west", "ap-southeast"]
- name: override
type: override
properties:
components:
- name: api-server
traits:
- type: scaler
properties:
replicas: 5 # 5 replicas per cluster
workflow:
steps:
- name: deploy-staging
type: deploy
properties:
policies: ["topology"]
# Deploy to all clusters simultaneously
Create Custom Abstractions
// Define a "microservice" component type using CUE
microservice: {
type: "component"
attributes: workload: type: "autodetects.core.oam.dev"
template: {
parameter: {
image: string
port: *8080 | int
env: *[] | [...{name: string, value: string}]
replicas: *1 | int
}
output: {
apiVersion: "apps/v1"
kind: "Deployment"
spec: {
replicas: parameter.replicas
selector: matchLabels: app: context.name
template: {
metadata: labels: app: context.name
spec: containers: [{
name: context.name
image: parameter.image
ports: [{containerPort: parameter.port}]
env: parameter.env
}]
}
}
}
}
}
KubeVela vs Alternatives
| Feature | KubeVela | Backstage | Humanitec | Crossplane |
|---|---|---|---|---|
| App-centric | Yes | Catalog only | Yes | Infra only |
| Multi-cluster | Native | Plugin | Yes | Yes |
| GitOps | Built-in | Plugin | Built-in | ArgoCD |
| Custom abstractions | CUE | React plugins | Score | Compositions |
| Cost | Free/OSS | Free/OSS | Enterprise | Free/OSS |
Real-World Impact
A gaming company with 50 microservices across 4 clusters used to have developers writing 200+ lines of YAML per service. With KubeVela: 20 lines per service. Deployment time dropped from 2 hours to 5 minutes. New developers went from onboarding to first deployment in 1 day instead of 2 weeks.
Building an Internal Developer Platform? I help teams design application-centric Kubernetes abstractions. Contact spinov001@gmail.com or explore my automation tools on Apify.
Top comments (0)