Helm Installation¶
Detailed guide for installing NovaEdge using Helm charts.
Available Charts¶
| Chart | Purpose |
|---|---|
novaedge-operator |
Deploy the NovaEdge Operator |
novaedge |
Deploy NovaEdge directly (without operator) |
novaedge-agent |
Deploy agent-only (for hub-spoke) |
Operator Chart¶
The recommended approach for production deployments.
Installation¶
helm install novaedge-operator ./charts/novaedge-operator \
--namespace novaedge-system \
--create-namespace
Configuration¶
# values.yaml for novaedge-operator
replicaCount: 1
image:
repository: ghcr.io/piwi3910/novaedge-operator
tag: "v0.1.0"
pullPolicy: IfNotPresent
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 512Mi
# Create default NovaEdgeCluster on install
createDefaultCluster: false
defaultCluster:
version: "v0.1.0"
controller:
replicas: 1
agent:
vip:
enabled: true
mode: L2
After Installation¶
Create a NovaEdgeCluster to deploy components:
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
NovaEdge Chart (Direct)¶
Deploy NovaEdge components directly without the operator.
Installation¶
Key Values¶
# values.yaml for novaedge
controller:
replicas: 1
image:
repository: ghcr.io/piwi3910/novaedge-controller
tag: "v0.1.0"
resources:
requests:
cpu: 200m
memory: 256Mi
leaderElection: true
agent:
image:
repository: ghcr.io/piwi3910/novaedge-agent
tag: "v0.1.0"
hostNetwork: true
resources:
requests:
cpu: 200m
memory: 256Mi
vip:
enabled: true
mode: L2 # L2, BGP, or OSPF
# For BGP mode
bgp:
asn: 65000
peers: []
webUI:
enabled: false
replicas: 1
service:
type: ClusterIP
metrics:
enabled: true
serviceMonitor:
enabled: false
tracing:
enabled: false
endpoint: ""
Common Configurations¶
Production with HA¶
helm install novaedge ./charts/novaedge \
--namespace novaedge-system \
--create-namespace \
--set controller.replicas=3 \
--set controller.resources.requests.cpu=500m \
--set controller.resources.requests.memory=512Mi \
--set agent.resources.requests.cpu=500m \
--set agent.resources.requests.memory=512Mi
With BGP¶
helm install novaedge ./charts/novaedge \
--namespace novaedge-system \
--create-namespace \
--set agent.vip.mode=BGP \
--set agent.bgp.asn=65000 \
--set "agent.bgp.peers[0].address=10.0.0.254" \
--set "agent.bgp.peers[0].asn=65001"
With Observability¶
helm install novaedge ./charts/novaedge \
--namespace novaedge-system \
--create-namespace \
--set metrics.enabled=true \
--set metrics.serviceMonitor.enabled=true \
--set tracing.enabled=true \
--set tracing.endpoint=jaeger:4317
With Web UI¶
helm install novaedge ./charts/novaedge \
--namespace novaedge-system \
--create-namespace \
--set webUI.enabled=true \
--set webUI.service.type=LoadBalancer
Agent-Only Chart¶
For hub-spoke multi-cluster deployments.
Installation¶
helm install novaedge-agent ./charts/novaedge-agent \
--namespace novaedge-system \
--create-namespace \
--set controller.address=hub-controller.example.com:9090
Configuration¶
# values.yaml for novaedge-agent
controller:
address: "hub-controller:9090"
tls:
enabled: true
secretName: agent-tls-secret
image:
repository: ghcr.io/piwi3910/novaedge-agent
tag: "v0.1.0"
hostNetwork: true
resources:
requests:
cpu: 200m
memory: 256Mi
vip:
enabled: true
mode: L2
clusterName: "spoke-cluster-1"
Values Reference¶
Controller Values¶
| Value | Default | Description |
|---|---|---|
controller.replicas |
1 | Number of controller replicas |
controller.image.repository |
ghcr.io/piwi3910/novaedge-controller | Image repository |
controller.image.tag |
v0.1.0 | Image tag |
controller.leaderElection |
true | Enable leader election |
controller.grpcPort |
9090 | gRPC server port |
controller.metricsPort |
8080 | Metrics port |
controller.resources |
{} | Resource requirements |
controller.nodeSelector |
{} | Node selector |
controller.tolerations |
[] | Pod tolerations |
controller.affinity |
{} | Pod affinity |
Agent Values¶
| Value | Default | Description |
|---|---|---|
agent.image.repository |
ghcr.io/piwi3910/novaedge-agent | Image repository |
agent.image.tag |
v0.1.0 | Image tag |
agent.hostNetwork |
true | Use host networking |
agent.httpPort |
80 | HTTP traffic port |
agent.httpsPort |
443 | HTTPS traffic port |
agent.metricsPort |
9090 | Metrics port |
agent.vip.enabled |
true | Enable VIP management |
agent.vip.mode |
L2 | VIP mode (L2/BGP/OSPF) |
agent.vip.interface |
"" | Network interface |
agent.bgp.asn |
65000 | Local BGP ASN |
agent.bgp.routerID |
"" | BGP router ID |
agent.bgp.peers |
[] | BGP peer list |
agent.resources |
{} | Resource requirements |
agent.nodeSelector |
{} | Node selector |
agent.tolerations |
[] | Pod tolerations |
agent.updateStrategy |
RollingUpdate | Update strategy |
Web UI Values¶
| Value | Default | Description |
|---|---|---|
webUI.enabled |
false | Enable Web UI |
webUI.replicas |
1 | Number of replicas |
webUI.port |
9080 | Web UI port |
webUI.readOnly |
false | Read-only mode |
webUI.service.type |
ClusterIP | Service type |
webUI.ingress.enabled |
false | Enable ingress |
webUI.ingress.host |
"" | Ingress hostname |
Observability Values¶
| Value | Default | Description |
|---|---|---|
metrics.enabled |
true | Enable Prometheus metrics |
metrics.serviceMonitor.enabled |
false | Create ServiceMonitor |
metrics.serviceMonitor.interval |
30s | Scrape interval |
tracing.enabled |
false | Enable tracing |
tracing.endpoint |
"" | OTLP endpoint |
tracing.samplingRate |
10 | Sampling rate (0-100) |
Upgrading¶
# Update values and upgrade
helm upgrade novaedge ./charts/novaedge \
--namespace novaedge-system \
--set controller.image.tag=v0.2.0 \
--set agent.image.tag=v0.2.0
# Upgrade with values file
helm upgrade novaedge ./charts/novaedge \
--namespace novaedge-system \
-f production-values.yaml
Uninstallation¶
# Remove NovaEdge resources first
kubectl delete proxyvips,proxygateways,proxyroutes,proxybackends,proxypolicies --all -A
# Uninstall chart
helm uninstall novaedge -n novaedge-system
# Remove CRDs (optional)
kubectl delete crd proxyvips.novaedge.io proxygateways.novaedge.io \
proxyroutes.novaedge.io proxybackends.novaedge.io proxypolicies.novaedge.io
Next Steps¶
- Standalone Mode - Non-Kubernetes deployment
- Quick Start - Create your first gateway
- Helm Values Reference - Complete values reference