You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -18,6 +18,7 @@ Welcome to the official HyperDX Helm charts repository. This guide provides inst
18
18
-[API Key Setup](#api-key-setup)
19
19
-[Task Configuration](#task-configuration)
20
20
-[Using Secrets](#using-secrets)
21
+
-[Ingress Setup](#ingress-setup)
21
22
-[Operations](#operations)
22
23
-[Upgrading](#upgrading-the-chart)
23
24
-[Uninstalling](#uninstalling-hyperdx)
@@ -108,36 +109,7 @@ hyperdx:
108
109
109
110
#### Configuring Ingress for OTEL Collector
110
111
111
-
If you need to expose your OTEL collector endpoints through ingress, you can use the additional ingresses configuration. The example below uses a regex pattern to capture all OTLP endpoints (traces, metrics, and logs) in a single path rule:
This configuration creates a separate ingress resource for the OTEL collector endpoints, allowing you to:
137
-
- Use a different domain for collector traffic
138
-
- Configure specific TLS settings
139
-
- Apply custom annotations for the collector ingress
140
-
- Route all telemetry signals through a single regex-based path rule
112
+
For instructions on exposing your OTEL collector endpoints via ingress (including example configuration and best practices), see the [OTEL Collector Ingress](#otel-collector-ingress) section in the [Ingress Setup](#ingress-setup) chapter above.
141
113
142
114
### Minimal Deployment
143
115
@@ -263,6 +235,173 @@ By default, there is one task in the chart setup as a cronjob, responsible for c
263
235
| `tasks.checkAlerts.schedule` | Cron schedule for the check-alerts task | `*/1 * * * *` |
264
236
| `tasks.checkAlerts.resources` | Resource requests and limits for the check-alerts task | See `values.yaml` |
To expose the HyperDX UI and API via a domain name, enable ingress in your `values.yaml`:
247
+
248
+
```yaml
249
+
hyperdx:
250
+
ingress:
251
+
enabled: true
252
+
host: "hyperdx.yourdomain.com" # Set this to your desired domain
253
+
```
254
+
255
+
#### Configuring `ingress.host` and `hyperdx.appUrl`
256
+
257
+
- **`hyperdx.ingress.host`**: Set to the domain you want to use for accessing HyperDX (e.g., `hyperdx.yourdomain.com`).
258
+
- **`hyperdx.appUrl`**: Should match the ingress host and include the protocol (e.g., `https://hyperdx.yourdomain.com`).
259
+
260
+
**Example:**
261
+
```yaml
262
+
hyperdx:
263
+
appUrl: "https://hyperdx.yourdomain.com"
264
+
ingress:
265
+
enabled: true
266
+
host: "hyperdx.yourdomain.com"
267
+
```
268
+
269
+
This ensures that all generated links, cookies, and redirects work correctly.
270
+
271
+
#### Enabling TLS (HTTPS)
272
+
273
+
To secure your deployment with HTTPS, enable TLS in your ingress configuration:
274
+
275
+
```yaml
276
+
hyperdx:
277
+
ingress:
278
+
enabled: true
279
+
host: "hyperdx.yourdomain.com"
280
+
tls:
281
+
enabled: true
282
+
tlsSecretName: "hyperdx-tls" # Name of the Kubernetes TLS secret
283
+
```
284
+
285
+
- Create a Kubernetes TLS secret with your certificate and key:
286
+
```sh
287
+
kubectl create secret tls hyperdx-tls \
288
+
--cert=path/to/tls.crt \
289
+
--key=path/to/tls.key
290
+
```
291
+
- The ingress will reference this secret to terminate HTTPS connections.
292
+
293
+
#### Example Minimal Ingress YAML
294
+
295
+
```yaml
296
+
apiVersion: networking.k8s.io/v1
297
+
kind: Ingress
298
+
metadata:
299
+
name: hyperdx-app-ingress
300
+
annotations:
301
+
nginx.ingress.kubernetes.io/rewrite-target: /$1
302
+
nginx.ingress.kubernetes.io/use-regex: "true"
303
+
spec:
304
+
ingressClassName: nginx
305
+
rules:
306
+
- host: hyperdx.yourdomain.com
307
+
http:
308
+
paths:
309
+
- path: /(.*)
310
+
pathType: ImplementationSpecific
311
+
backend:
312
+
service:
313
+
name: <service-name>
314
+
port:
315
+
number: 3000
316
+
tls:
317
+
- hosts:
318
+
- hyperdx.yourdomain.com
319
+
secretName: hyperdx-tls
320
+
```
321
+
322
+
#### Common Pitfalls
323
+
324
+
- **Path and Rewrite Configuration:**
325
+
- For Next.js and other SPAs, always use a regex path and rewrite annotation as shown above. Do not use just `path: /` without a rewrite, as this will break static asset serving.
326
+
- **Mismatched `appUrl` and `ingress.host`:**
327
+
- If these do not match, you may experience issues with cookies, redirects, and asset loading.
328
+
- **TLS Misconfiguration:**
329
+
- Ensure your TLS secret is valid and referenced correctly in the ingress.
330
+
- Browsers may block insecure content if you access the app over HTTP when TLS is enabled.
331
+
- **Ingress Controller Version:**
332
+
- Some features (like regex paths and rewrites) require recent versions of nginx ingress controller. Check your version with:
333
+
```sh
334
+
kubectl -n ingress-nginx get pods -l app.kubernetes.io/name=ingress-nginx -o jsonpath="{.items[0].spec.containers[0].image}"
335
+
```
336
+
337
+
---
338
+
339
+
### OTEL Collector Ingress
340
+
341
+
If you need to expose your OTEL collector endpoints (for traces, metrics, logs) through ingress, you can use the `additionalIngresses` configuration. This is useful for organizations that want to send telemetry data from outside the cluster or use a custom domain for the collector.
0 commit comments