DEV Community

Alex Spinov
Alex Spinov

Posted on

KubeVela Has a Free API: Build Your Internal Developer Platform on Kubernetes

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode
vela up -f app.yaml
vela status my-webapp
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
                    }]
                }
            }
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

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)