Quick Start¶
Get NovaEdge running in your Kubernetes cluster in under 5 minutes.
Prerequisites¶
- Kubernetes 1.29+
- kubectl configured
- Helm 3.0+
Step 1: Install NovaEdge¶
# Clone the repository
git clone https://github.com/piwi3910/novaedge.git
cd novaedge
# Install the operator
helm install novaedge-operator ./charts/novaedge-operator \
--namespace novaedge-system \
--create-namespace
# Deploy NovaEdge cluster
kubectl apply -f - <<EOF
apiVersion: novaedge.io/v1alpha1
kind: NovaEdgeCluster
metadata:
name: novaedge
namespace: novaedge-system
spec:
version: "v0.1.0"
controller:
replicas: 1
agent:
hostNetwork: true
vip:
enabled: true
mode: L2
EOF
Step 2: Verify Installation¶
# Check all pods are running
kubectl get pods -n novaedge-system
# Expected output:
# NAME READY STATUS RESTARTS AGE
# novaedge-operator-xxx 1/1 Running 0 1m
# novaedge-controller-xxx 1/1 Running 0 1m
# novaedge-agent-xxxxx 1/1 Running 0 1m
Step 3: Create Your First Gateway¶
This example creates a complete load balancing setup:
flowchart LR
Client((Client)) --> VIP{{"192.168.1.100"}}
VIP --> GW["Gateway<br/>:80"]
GW --> Route["Route<br/>app.example.com"]
Route --> Backend["Backend"]
Backend --> SVC["my-service:8080"]
3.1 Create a VIP¶
# Apply with: kubectl apply -f -
apiVersion: novaedge.io/v1alpha1
kind: ProxyVIP
metadata:
name: my-vip
spec:
address: 192.168.1.100/32
mode: L2
interface: eth0
3.2 Create a Gateway¶
apiVersion: novaedge.io/v1alpha1
kind: ProxyGateway
metadata:
name: my-gateway
spec:
vipRef: my-vip
listeners:
- name: http
port: 80
protocol: HTTP
hostnames:
- "*.example.com"
3.3 Create a Backend¶
apiVersion: novaedge.io/v1alpha1
kind: ProxyBackend
metadata:
name: my-backend
spec:
serviceRef:
name: my-service
port: 8080
lbPolicy: RoundRobin
healthCheck:
interval: 10s
httpHealthCheck:
path: /health
3.4 Create a Route¶
apiVersion: novaedge.io/v1alpha1
kind: ProxyRoute
metadata:
name: my-route
spec:
parentRefs:
- name: my-gateway
hostnames:
- app.example.com
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRef:
name: my-backend
Step 4: Test¶
# Test the endpoint
curl -H "Host: app.example.com" http://192.168.1.100/
# Or add to /etc/hosts and test directly
echo "192.168.1.100 app.example.com" | sudo tee -a /etc/hosts
curl http://app.example.com/
All-in-One Example¶
Apply everything at once:
# save as novaedge-example.yaml
---
apiVersion: novaedge.io/v1alpha1
kind: ProxyVIP
metadata:
name: my-vip
spec:
address: 192.168.1.100/32
mode: L2
interface: eth0
---
apiVersion: novaedge.io/v1alpha1
kind: ProxyGateway
metadata:
name: my-gateway
spec:
vipRef: my-vip
listeners:
- name: http
port: 80
protocol: HTTP
hostnames:
- "*.example.com"
---
apiVersion: novaedge.io/v1alpha1
kind: ProxyBackend
metadata:
name: my-backend
spec:
serviceRef:
name: my-service
port: 8080
lbPolicy: RoundRobin
healthCheck:
interval: 10s
httpHealthCheck:
path: /health
---
apiVersion: novaedge.io/v1alpha1
kind: ProxyRoute
metadata:
name: my-route
spec:
parentRefs:
- name: my-gateway
hostnames:
- app.example.com
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRef:
name: my-backend
Using the CLI¶
NovaEdge includes novactl for management:
# Build the CLI
make build-novactl
# List resources
./novactl get gateways
./novactl get routes
./novactl get backends
# Check status
./novactl status
Next Steps¶
| Topic | Description |
|---|---|
| Installation | Detailed installation options |
| Routing | Advanced routing configuration |
| VIP Management | L2, BGP, and OSPF modes |
| Policies | Rate limiting, CORS, JWT auth |
| Observability | Metrics and tracing |