Load Balancer Examples
Examples for configuring HTTP and TCP load balancers with xcsh.
Minimum Configuration Requirements
Section titled “Minimum Configuration Requirements”HTTP Load Balancer - Required Fields
Section titled “HTTP Load Balancer - Required Fields”| Field | Required | Description |
|---|---|---|
metadata.name | Yes | Unique name for the load balancer |
metadata.namespace | Yes | Target namespace |
spec.domains | Yes | List of domain names to serve |
spec.http OR spec.https OR spec.https_auto_cert | Yes | Listener type (choose one) |
spec.advertise_on_public_default_vip | Yes | Required for public internet access |
Minimal HTTP Load Balancer Example
Section titled “Minimal HTTP Load Balancer Example”metadata: name: my-http-lb namespace: sharedspec: domains: - myapp.example.com http: port: 80 advertise_on_public_default_vip: \{}Create command:
xcsh virtual create http_loadbalancer -ns shared -f http-lb.yamlCRUD Quick Reference
Section titled “CRUD Quick Reference”Create
Section titled “Create”xcsh virtual create http_loadbalancer -ns <namespace> -f <file.yaml>Read (List)
Section titled “Read (List)”xcsh virtual list http_loadbalancer -ns <namespace> -o jsonRead (Get)
Section titled “Read (Get)”xcsh virtual get http_loadbalancer <name> -ns <namespace> -o yamlUpdate (Replace)
Section titled “Update (Replace)”xcsh virtual replace http_loadbalancer <name> -ns <namespace> -f <file.yaml>Delete
Section titled “Delete”xcsh virtual delete http_loadbalancer <name> -ns <namespace>HTTP Load Balancer
Section titled “HTTP Load Balancer”Basic HTTP Load Balancer
Section titled “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-namespacespec: origin_servers: - public_ip: ip: 192.168.1.100 port: 8080 loadbalancer_algorithm: ROUND_ROBINhttp-lb.yaml:
metadata: name: example-http-lb namespace: example-namespacespec: domains: - example.com http: port: 80 advertise_on_public_default_vip: \{} default_route_pools: - pool: name: example-origin-pool namespace: example-namespaceDeploy:
# Create origin poolxcsh virtual create origin_pool -ns example-namespace -f origin-pool.yaml
# Create load balancerxcsh virtual create http_loadbalancer -ns example-namespace -f http-lb.yaml
# Verifyxcsh virtual get http_loadbalancer example-http-lb -ns example-namespaceHTTPS Load Balancer
Section titled “HTTPS Load Balancer”Add TLS termination to your load balancer with automatic certificate management.
https-lb.yaml:
metadata: name: example-https-lb namespace: example-namespacespec: 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-namespaceLoad Balancer with WAF
Section titled “Load Balancer with WAF”Add Web Application Firewall protection.
waf-lb.yaml:
metadata: name: example-waf-lb namespace: example-namespacespec: 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-namespaceTCP Load Balancer
Section titled “TCP Load Balancer”Basic TCP Load Balancer
Section titled “Basic TCP Load Balancer”tcp-lb.yaml:
metadata: name: example-tcp-lb namespace: example-namespacespec: listen_port: 3306 origin_pools: - pool: name: example-db-pool namespace: example-namespaceDeploy:
xcsh virtual create tcp_loadbalancer -ns example-namespace -f tcp-lb.yamlHealth Checks
Section titled “Health Checks”HTTP Health Check
Section titled “HTTP Health Check”healthcheck.yaml:
metadata: name: example-healthcheck namespace: example-namespacespec: http_health_check: path: /health expected_status_codes: - "200" interval: 30 timeout: 10 unhealthy_threshold: 3 healthy_threshold: 2TCP Health Check
Section titled “TCP Health Check”tcp-healthcheck.yaml:
metadata: name: example-tcp-healthcheck namespace: example-namespacespec: tcp_health_check: \{} interval: 15 timeout: 5Origin Pool Options
Section titled “Origin Pool Options”Multiple Origin Servers
Section titled “Multiple Origin Servers”metadata: name: multi-origin-pool namespace: example-namespacespec: 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-namespaceOrigin Pool with DNS
Section titled “Origin Pool with DNS”metadata: name: dns-origin-pool namespace: example-namespacespec: origin_servers: - public_name: dns_name: backend.example.com port: 443 use_tls: use_host_header_as_sni: \{}Management Commands
Section titled “Management Commands”List Load Balancers
Section titled “List Load Balancers”# List all HTTP load balancersxcsh virtual list http_loadbalancer -ns example-namespace
# List all TCP load balancersxcsh virtual list tcp_loadbalancer -ns example-namespace
# Output as JSONxcsh virtual list http_loadbalancer -ns example-namespace -o jsonGet Details
Section titled “Get Details”# Get as table (default)xcsh virtual get http_loadbalancer example-lb -ns example-namespace
# Get as YAMLxcsh virtual get http_loadbalancer example-lb -ns example-namespace -o yaml
# Get as JSONxcsh virtual get http_loadbalancer example-lb -ns example-namespace -o jsonUpdate Load Balancer
Section titled “Update Load Balancer”# Export current configxcsh virtual get http_loadbalancer example-lb -ns example-namespace -o yaml > lb.yaml
# Edit lb.yaml...
# Apply changesxcsh virtual replace http_loadbalancer example-lb -ns example-namespace -f lb.yamlDelete Load Balancer
Section titled “Delete Load Balancer”xcsh virtual delete http_loadbalancer example-lb -ns example-namespace