Load Balancer Examples¶
Examples for configuring HTTP and TCP load balancers with xcsh.
Minimum Configuration Requirements¶
HTTP Load Balancer - Required Fields¶
| Field | Required | Description |
|---|---|---|
metadata.name | ✅ | Unique name for the load balancer |
metadata.namespace | ✅ | Target namespace |
spec.domains | ✅ | List of domain names to serve |
spec.http OR spec.https OR spec.https_auto_cert | ✅ | Listener type (choose one) |
spec.advertise_on_public_default_vip | ✅ | Required for public internet access |
Minimal HTTP Load Balancer Example¶
metadata:
name: my-http-lb
namespace: shared
spec:
domains:
- myapp.example.com
http:
port: 80
advertise_on_public_default_vip: {}
Create command:
CRUD Quick Reference¶
Create¶
Read (List)¶
Read (Get)¶
Update (Replace)¶
Delete¶
HTTP Load Balancer¶
Basic HTTP Load Balancer¶
Create a simple HTTP load balancer with a single origin pool.
origin-pool.yaml:
metadata:
name: example-origin-pool
namespace: example-namespace
spec:
origin_servers:
- public_ip:
ip: 192.168.1.100
port: 8080
loadbalancer_algorithm: ROUND_ROBIN
http-lb.yaml:
metadata:
name: example-http-lb
namespace: example-namespace
spec:
domains:
- example.com
http:
port: 80
advertise_on_public_default_vip: {}
default_route_pools:
- pool:
name: example-origin-pool
namespace: example-namespace
Deploy:
# Create origin pool
xcsh virtual create origin_pool -ns example-namespace -f origin-pool.yaml
# Create load balancer
xcsh virtual create http_loadbalancer -ns example-namespace -f http-lb.yaml
# Verify
xcsh virtual get http_loadbalancer example-http-lb -ns example-namespace
HTTPS Load Balancer¶
Add TLS termination to your load balancer with automatic certificate management.
https-lb.yaml:
metadata:
name: example-https-lb
namespace: example-namespace
spec:
domains:
- example.com
https_auto_cert:
http_redirect: true
add_hsts: true
advertise_on_public_default_vip: {}
default_route_pools:
- pool:
name: example-origin-pool
namespace: example-namespace
Load Balancer with WAF¶
Add Web Application Firewall protection.
waf-lb.yaml:
metadata:
name: example-waf-lb
namespace: example-namespace
spec:
domains:
- example.com
https_auto_cert:
http_redirect: true
advertise_on_public_default_vip: {}
default_route_pools:
- pool:
name: example-origin-pool
namespace: example-namespace
app_firewall:
name: example-waf-policy
namespace: example-namespace
TCP Load Balancer¶
Basic TCP Load Balancer¶
tcp-lb.yaml:
metadata:
name: example-tcp-lb
namespace: example-namespace
spec:
listen_port: 3306
origin_pools:
- pool:
name: example-db-pool
namespace: example-namespace
Deploy:
Health Checks¶
HTTP Health Check¶
healthcheck.yaml:
metadata:
name: example-healthcheck
namespace: example-namespace
spec:
http_health_check:
path: /health
expected_status_codes:
- "200"
interval: 30
timeout: 10
unhealthy_threshold: 3
healthy_threshold: 2
TCP Health Check¶
tcp-healthcheck.yaml:
metadata:
name: example-tcp-healthcheck
namespace: example-namespace
spec:
tcp_health_check: {}
interval: 15
timeout: 5
Origin Pool Options¶
Multiple Origin Servers¶
metadata:
name: multi-origin-pool
namespace: example-namespace
spec:
origin_servers:
- public_ip:
ip: 192.168.1.100
- public_ip:
ip: 192.168.1.101
- public_ip:
ip: 192.168.1.102
port: 8080
loadbalancer_algorithm: ROUND_ROBIN
healthcheck:
- name: example-healthcheck
namespace: example-namespace
Origin Pool with DNS¶
metadata:
name: dns-origin-pool
namespace: example-namespace
spec:
origin_servers:
- public_name:
dns_name: backend.example.com
port: 443
use_tls:
use_host_header_as_sni: {}
Management Commands¶
List Load Balancers¶
# List all HTTP load balancers
xcsh virtual list http_loadbalancer -ns example-namespace
# List all TCP load balancers
xcsh virtual list tcp_loadbalancer -ns example-namespace
# Output as JSON
xcsh virtual list http_loadbalancer -ns example-namespace -o json
Get Details¶
# Get as table (default)
xcsh virtual get http_loadbalancer example-lb -ns example-namespace
# Get as YAML
xcsh virtual get http_loadbalancer example-lb -ns example-namespace -o yaml
# Get as JSON
xcsh virtual get http_loadbalancer example-lb -ns example-namespace -o json
Update Load Balancer¶
# Export current config
xcsh virtual get http_loadbalancer example-lb -ns example-namespace -o yaml > lb.yaml
# Edit lb.yaml...
# Apply changes
xcsh virtual replace http_loadbalancer example-lb -ns example-namespace -f lb.yaml