|
1 |
| -# BunkerWeb Kubernetes Helm chart |
| 1 | +# BunkerWeb Kubernetes Helm Chart |
2 | 2 |
|
3 |
| -Official [Helm chart](https://helm.sh/docs/) to deploy [BunkerWeb](https://www.bunkerweb.io/?utm_campaign=self&utm_source=github) on Kubernetes. |
| 3 | + |
| 4 | + |
| 5 | + |
| 6 | +Official [Helm chart](https://helm.sh/docs/) to deploy [BunkerWeb](https://www.bunkerweb.io/?utm_campaign=self&utm_source=github) on Kubernetes - A next-generation, open-source **web application firewall (WAF)** and reverse proxy. |
| 7 | + |
| 8 | +## Features |
| 9 | + |
| 10 | +- **Security First**: Advanced threat protection with automatic rule updates |
| 11 | +- **High Availability**: Support for DaemonSet and Deployment modes |
| 12 | +- **Monitoring**: Built-in Prometheus metrics and Grafana dashboards |
| 13 | +- **Management UI**: Web interface for configuration and monitoring |
| 14 | +- **Auto-scaling**: Kubernetes-native scaling capabilities |
| 15 | +- **Secret Management**: Integration with Kubernetes secrets |
4 | 16 |
|
5 | 17 | ## Prerequisites
|
6 | 18 |
|
7 |
| -Please first refer to the [BunkerWeb documentation](https://docs.bunkerweb.io/latest/?utm_campaign=self&utm_source=github), particularly the [Kubernetes integration](https://docs.bunkerweb.io/latest/integrations/?utm_campaign=self&utm_source=bunkerwebio#kubernetes) section. |
| 19 | +- Kubernetes 1.19+ |
| 20 | +- Helm 3.8+ |
| 21 | +- PV provisioner support in the underlying infrastructure (for persistence) |
| 22 | + |
| 23 | +**Important**: Please first refer to the [BunkerWeb documentation](https://docs.bunkerweb.io/latest/?utm_campaign=self&utm_source=github), particularly the [Kubernetes integration](https://docs.bunkerweb.io/latest/integrations/?utm_campaign=self&utm_source=bunkerwebio#kubernetes) section. |
| 24 | + |
| 25 | +## Installation |
8 | 26 |
|
9 |
| -## Helm repository |
| 27 | +### Add Helm Repository |
10 | 28 |
|
11 |
| -The BunkerWeb Helm chart repository is available at `https://repo.bunkerweb.io/charts` : |
12 | 29 | ```bash
|
13 | 30 | helm repo add bunkerweb https://repo.bunkerweb.io/charts
|
| 31 | +helm repo update |
14 | 32 | ```
|
15 | 33 |
|
16 |
| -You can then use the `bunkerweb` helm chart from that repository : |
| 34 | +### Install Chart |
| 35 | + |
17 | 36 | ```bash
|
18 |
| -helm install -f myvalues.yaml mybunkerweb bunkerweb/bunkerweb |
| 37 | +# Install with default values |
| 38 | +helm install mybunkerweb bunkerweb/bunkerweb |
| 39 | + |
| 40 | +# Install with custom values |
| 41 | +helm install mybunkerweb bunkerweb/bunkerweb -f myvalues.yaml |
| 42 | + |
| 43 | +# Install in specific namespace |
| 44 | +helm install mybunkerweb bunkerweb/bunkerweb -n bunkerweb --create-namespace |
| 45 | +``` |
| 46 | + |
| 47 | +> **Need help with configuration?** Check out our [Configuration Guide](docs/values.md) for detailed examples and best practices. |
| 48 | +
|
| 49 | +## Architecture Components |
| 50 | + |
| 51 | +| Component | Description | Default State | |
| 52 | +|-----------|-------------|---------------| |
| 53 | +| **BunkerWeb** | Main WAF/reverse proxy | Required | |
| 54 | +| **Scheduler** | Configuration management | Required | |
| 55 | +| **Controller** | Kubernetes integration | Enabled | |
| 56 | +| **UI** | Web management interface | Enabled | |
| 57 | +| **MariaDB** | Database backend | Enabled | |
| 58 | +| **Redis** | Caching and persistence | Enabled | |
| 59 | +| **Prometheus** | Metrics collection | Disabled | |
| 60 | +| **Grafana** | Monitoring dashboards | Disabled | |
| 61 | + |
| 62 | +## Configuration |
| 63 | + |
| 64 | +For detailed configuration options, see our comprehensive documentation: |
| 65 | + |
| 66 | +**[Values Guide](docs/values.md)** - Complete user guide |
| 67 | +**[Values Reference](docs/values-reference.md)** - Quick technical reference |
| 68 | +**[values.yaml](charts/bunkerweb/values.yaml)** - Source configuration file |
| 69 | + |
| 70 | +### Security Settings |
| 71 | + |
| 72 | +```yaml |
| 73 | +settings: |
| 74 | + misc: |
| 75 | + # Custom DNS resolvers |
| 76 | + dnsResolvers: "1.1.1.1 8.8.8.8" |
| 77 | + # API whitelist for internal access |
| 78 | + apiWhitelistIp: "127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16" |
| 79 | +``` |
| 80 | +
|
| 81 | +### Kubernetes Integration |
| 82 | +
|
| 83 | +```yaml |
| 84 | +settings: |
| 85 | + kubernetes: |
| 86 | + # Namespaces to monitor (empty = all) |
| 87 | + namespaces: "default,production" |
| 88 | + # Custom ingress class |
| 89 | + ingressClass: "bunkerweb" |
| 90 | + # Cluster domain |
| 91 | + domainName: "cluster.local" |
19 | 92 | ```
|
20 | 93 |
|
21 |
| -## Values |
| 94 | +### High Availability Setup |
| 95 | +
|
| 96 | +```yaml |
| 97 | +bunkerweb: |
| 98 | + kind: DaemonSet # or "Deployment" |
| 99 | + replicas: 3 # Only for Deployment mode |
| 100 | + pdb: |
| 101 | + create: true |
| 102 | + minAvailable: 1 |
| 103 | + |
| 104 | +service: |
| 105 | + type: LoadBalancer |
| 106 | + externalTrafficPolicy: Local |
| 107 | +``` |
| 108 | +
|
| 109 | +### Secret Management |
| 110 | +
|
| 111 | +```yaml |
| 112 | +settings: |
| 113 | + # Use existing secret for sensitive values |
| 114 | + existingSecret: "bunkerweb-secrets" |
| 115 | + # Or configure inline (less secure) |
| 116 | + ui: |
| 117 | + adminUsername: "admin" |
| 118 | + adminPassword: "secure-password" |
| 119 | +``` |
| 120 | +
|
| 121 | +## Persistence |
| 122 | +
|
| 123 | +### Storage Requirements |
| 124 | +
|
| 125 | +| Component | Default Size | Purpose | |
| 126 | +|-----------|-------------|---------| |
| 127 | +| MariaDB | 5Gi | Configuration and logs | |
| 128 | +| Redis | 1Gi | Cache and banned IPs | |
| 129 | +| UI Logs | 5Gi | Access and error logs | |
| 130 | +| Prometheus | 8Gi | Metrics storage | |
| 131 | +| Grafana | 5Gi | Dashboards and config | |
| 132 | +
|
| 133 | +### Custom Storage Classes |
| 134 | +
|
| 135 | +```yaml |
| 136 | +mariadb: |
| 137 | + persistence: |
| 138 | + storageClass: "fast-ssd" |
| 139 | + size: 20Gi |
| 140 | + |
| 141 | +redis: |
| 142 | + persistence: |
| 143 | + storageClass: "standard" |
| 144 | + size: 5Gi |
| 145 | +``` |
| 146 | +
|
| 147 | +## Monitoring and Observability |
| 148 | +
|
| 149 | +### Enable Monitoring Stack |
| 150 | +
|
| 151 | +```yaml |
| 152 | +scheduler: |
| 153 | + proLicenceKey: your-bunkerweb-licence-key |
| 154 | + usePrometheusExporter: true |
| 155 | + |
| 156 | +prometheus: |
| 157 | + enabled: true |
| 158 | + persistence: |
| 159 | + enabled: true |
| 160 | + size: 20Gi |
| 161 | + |
| 162 | +grafana: |
| 163 | + enabled: true |
| 164 | + adminUser: admin |
| 165 | + adminPassword: "your-secure-password" |
| 166 | + ingress: |
| 167 | + enabled: true |
| 168 | + hosts: |
| 169 | + - host: grafana.example.com |
| 170 | +``` |
| 171 | +
|
| 172 | +### Custom Dashboards |
| 173 | +
|
| 174 | +The chart includes pre-configured Grafana dashboards for: |
| 175 | +- BunkerWeb metrics and performance |
| 176 | +- Request analytics and threat detection |
| 177 | +- System health and resource usage |
| 178 | +
|
| 179 | +## Security Considerations |
| 180 | +
|
| 181 | +1. **Change Default Passwords**: Always set custom passwords for UI and database |
| 182 | +2. **Use Secrets**: Store sensitive data in Kubernetes secrets |
| 183 | +3. **Network Policies**: Enable network policies for production environments |
| 184 | +4. **Resource Limits**: Set appropriate CPU/memory limits |
| 185 | +5. **Pod Security**: Review and adjust security contexts |
| 186 | +
|
| 187 | +## Troubleshooting |
| 188 | +
|
| 189 | +### Common Issues |
| 190 | +
|
| 191 | +**BunkerWeb pods not starting:** |
| 192 | +```bash |
| 193 | +kubectl logs -l app.kubernetes.io/name=bunkerweb -n bunkerweb |
| 194 | +``` |
| 195 | + |
| 196 | +**Database connection issues:** |
| 197 | +```bash |
| 198 | +kubectl get pods -n bunkerweb |
| 199 | +kubectl describe pod mariadb-<pod-name> -n bunkerweb |
| 200 | +``` |
| 201 | + |
| 202 | +**Ingress not working:** |
| 203 | +```bash |
| 204 | +kubectl get ingress -n bunkerweb |
| 205 | +kubectl describe ingressclass bunkerweb |
| 206 | +``` |
| 207 | + |
| 208 | +### Health Checks |
| 209 | + |
| 210 | +All components include health checks: |
| 211 | +- Liveness probes for automatic restart |
| 212 | +- Readiness probes for traffic routing |
| 213 | +- Custom healthcheck scripts |
| 214 | + |
| 215 | +## Upgrading |
| 216 | + |
| 217 | +```bash |
| 218 | +# Update repository |
| 219 | +helm repo update bunkerweb |
| 220 | + |
| 221 | +# Check available versions |
| 222 | +helm search repo bunkerweb/bunkerweb --versions |
| 223 | + |
| 224 | +# Upgrade to latest version |
| 225 | +helm upgrade mybunkerweb bunkerweb/bunkerweb |
| 226 | + |
| 227 | +# Upgrade with new values |
| 228 | +helm upgrade mybunkerweb bunkerweb/bunkerweb -f new-values.yaml |
| 229 | +``` |
| 230 | + |
| 231 | +## Uninstallation |
| 232 | + |
| 233 | +```bash |
| 234 | +# Uninstall release |
| 235 | +helm uninstall mybunkerweb -n bunkerweb |
| 236 | + |
| 237 | +# Remove namespace (optional) |
| 238 | +kubectl delete namespace bunkerweb |
| 239 | +``` |
| 240 | + |
| 241 | +**Note**: PVCs are not automatically deleted and must be removed manually if needed. |
| 242 | + |
| 243 | + |
| 244 | +### Key Configuration Areas |
| 245 | + |
| 246 | +- **Global Settings**: Common configuration across all components |
| 247 | +- **BunkerWeb**: Main reverse proxy configuration |
| 248 | +- **UI**: Web interface settings |
| 249 | +- **Database**: MariaDB configuration |
| 250 | +- **Monitoring**: Prometheus and Grafana setup |
| 251 | +- **Security**: Network policies and access control |
| 252 | + |
| 253 | +### Quick Configuration Examples |
| 254 | + |
| 255 | +See [`examples/`](examples/) directory for complete configuration examples. |
| 256 | + |
| 257 | +## Support |
| 258 | + |
| 259 | +- [Documentation](https://docs.bunkerweb.io/) |
| 260 | +- [GitHub Issues](https://github.com/bunkerity/bunkerweb/issues) |
| 261 | +- [Community Forum](https://github.com/bunkerity/bunkerweb/discussions) |
| 262 | + |
| 263 | +## License |
22 | 264 |
|
23 |
| -The full list of values are listed in the `charts/bunkerweb/values.yaml` file. |
| 265 | +This Helm chart is licensed under the same terms as BunkerWeb itself. |
0 commit comments