Custom Load Balancer Configuration
Overview
By default, Bunnyshell automatically provisions ingress and routing for your components. If you wish to use a custom load balancer based on your provider, you can do so by adding configuration under the component’s hosts property.
This property allows you to override the default behavior and integrate directly with provider-specific ingress classes, annotations, or self-managed DNS.
How It Works
The hosts property defines how a component is exposed externally. You can:
- Set a custom hostname and path
- Expose services on specific ports
- Mark a service as public or restrict it to allowed IPs
- Map a Bunnyshell hostname to an external address (CNAME)
- Use self-managed DNS for external domains
- Configure Kubernetes ingress with provider-specific options
Using Provider Load Balancers
When using your own ingress controller or load balancer, add your configuration under hosts[*].k8s.ingress.
This supports:
className— sets theingressClassName(defaults tobns-nginx; use an empty string for no value)annotations— extra annotations for the ingress resource (e.g., cloud provider–specific ingress settings)tlsSecretName— TLS secret name for ingress when usingselfManagedDns=true
Examples
Basic Public Service
hosts:
- hostname: backend-${env.unique}.bunnyenv.com
path: /
servicePort: 8080
public: trueExternal Address (CNAME)
hosts:
- hostname: backend-${env.unique}.bunnyenv.com
externalAddress: foo.bar.example.com
path: /Self-Managed DNS with Custom Ingress Class
hosts:
- hostname: stage-1.my-company.tld
servicePort: 8080
selfManagedDns: true
k8s:
ingress:
className: my-own-ingress
annotations:
alb.ingress.kubernetes.io/scheme: internal
alb.ingress.kubernetes.io/group.name: kube-system-internalOverride Displayed URLs
hosts:
- hostname: backend-${env.unique}.bunnyenv.com
path: /
servicePort: 8080
displayPaths:
- /admin
- https://mycompany.tld/docsNotes
externalAddressis incompatible withservicePort,public, orselfManagedDns.- When
selfManagedDnsis set totrue, DNS records must be managed by the user. publicis only effective when combined withsecurity.allowedIps.displayPathscan be used to override or hide the default generated component URLs.- Hostnames can also be injected into environment variables for other components. See the Variable Interpolation page.
Updated 2 months ago
