Skip to content

Commit 4274b01

Browse files
authored
chore: Update and organize README (#22)
1 parent 7e2e2f4 commit 4274b01

File tree

1 file changed

+219
-39
lines changed

1 file changed

+219
-39
lines changed

README.md

Lines changed: 219 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -2,78 +2,147 @@
22

33
Welcome to the official HyperDX Helm charts repository. This guide provides instructions on how to install, configure, and manage your HyperDX V2 deployment using Helm.
44

5-
## Prerequisites
5+
## Table of Contents
6+
7+
- [Quick Start](#quick-start)
8+
- [Deployment Options](#deployment-options)
9+
- [Full Stack (Default)](#full-stack-default)
10+
- [External ClickHouse](#external-clickhouse)
11+
- [External OTEL Collector](#external-otel-collector)
12+
- [Minimal Deployment](#minimal-deployment)
13+
- [Cloud Deployment](#cloud-deployment)
14+
- [Google Kubernetes Engine (GKE)](#google-kubernetes-engine-gke)
15+
- [Amazon EKS](#amazon-eks)
16+
- [Azure AKS](#azure-aks)
17+
- [Configuration](#configuration)
18+
- [API Key Setup](#api-key-setup)
19+
- [Task Configuration](#task-configuration)
20+
- [Using Secrets](#using-secrets)
21+
- [Operations](#operations)
22+
- [Upgrading](#upgrading-the-chart)
23+
- [Uninstalling](#uninstalling-hyperdx)
24+
- [Troubleshooting](#troubleshooting)
25+
- [Contributing](#contributing)
26+
27+
## Quick Start
28+
29+
### Prerequisites
630

731
- [Helm](https://helm.sh/) v3+
832
- Kubernetes cluster (v1.20+ recommended)
933
- `kubectl` configured to interact with your cluster
1034

11-
## Adding the HyperDX Helm Repository
12-
13-
First, add the HyperDX Helm repository:
35+
### Install HyperDX (Full Stack)
1436

1537
```sh
38+
# Add the HyperDX Helm repository
1639
helm repo add hyperdx https://hyperdxio.github.io/helm-charts
1740
helm repo update
41+
42+
# Install with default values (includes ClickHouse, OTEL collector, MongoDB)
43+
helm install my-hyperdx hyperdx/hdx-oss-v2
44+
45+
# Get the external IP (for cloud deployments)
46+
kubectl get services
47+
48+
# Access the UI at http://<EXTERNAL-IP>:3000
1849
```
1950

20-
## Installing HyperDX
51+
**That's it!** HyperDX is now running with all components included.
2152

22-
To install the HyperDX chart with default values:
53+
## Deployment Options
54+
55+
### Full Stack (Default)
56+
57+
By default, this Helm chart deploys the complete HyperDX stack including:
58+
- **HyperDX Application** (API, UI, and OpAMP server)
59+
- **ClickHouse** (for storing logs, traces, and metrics)
60+
- **OTEL Collector** (for receiving and processing telemetry data)
61+
- **MongoDB** (for application metadata)
62+
63+
To install the full stack with default values:
2364

2465
```sh
2566
helm install my-hyperdx hyperdx/hdx-oss-v2
2667
```
2768

28-
You can customize settings by editing `values.yaml` or using `--set` flags.
69+
### External ClickHouse
2970

30-
```sh
31-
helm install my-hyperdx hyperdx/hdx-oss-v2 -f values.yaml
32-
```
71+
If you have an existing ClickHouse cluster:
72+
73+
```yaml
74+
# values-external-clickhouse.yaml
75+
clickhouse:
76+
enabled: false # Disable the built-in ClickHouse
3377

34-
or
78+
otel:
79+
clickhouseEndpoint: "tcp://your-clickhouse-server:9000"
80+
clickhousePrometheusEndpoint: "http://your-clickhouse-server:9363" # Optional
3581

36-
```sh
37-
helm install my-hyperdx hyperdx/hdx-oss-v2 --set key=value
82+
hyperdx:
83+
defaultConnections: |
84+
[
85+
{
86+
"name": "External ClickHouse",
87+
"host": "http://your-clickhouse-server:8123",
88+
"port": 8123,
89+
"username": "your-username",
90+
"password": "your-password"
91+
}
92+
]
3893
```
3994
40-
To retrieve the default values:
95+
### External OTEL Collector
4196
42-
```sh
43-
helm show values hyperdx/hdx-oss-v2 > values.yaml
97+
If you have an existing OTEL collector setup:
98+
99+
```yaml
100+
# values-external-otel.yaml
101+
otel:
102+
enabled: false # Disable the built-in OTEL collector
103+
104+
hyperdx:
105+
# Point to your external OTEL collector endpoint
106+
otelExporterEndpoint: "http://your-otel-collector:4318"
44107
```
45108
46-
### Example Configuration
109+
### Minimal Deployment
110+
111+
For organizations with existing infrastructure:
47112
48113
```yaml
49-
replicaCount: 2
50-
resources:
51-
limits:
52-
cpu: 500m
53-
memory: 512Mi
54-
requests:
55-
cpu: 250m
56-
memory: 256Mi
57-
ingress:
58-
enabled: true
59-
annotations:
60-
kubernetes.io/ingress.class: nginx
61-
hosts:
62-
- host: hyperdx.example.com
63-
paths:
64-
- path: /
65-
pathType: ImplementationSpecific
114+
# values-minimal.yaml
115+
clickhouse:
116+
enabled: false
117+
118+
otel:
119+
enabled: false
120+
121+
hyperdx:
122+
otelExporterEndpoint: "http://your-otel-collector:4318"
123+
defaultConnections: |
124+
[
125+
{
126+
"name": "External ClickHouse",
127+
"host": "http://your-clickhouse-server:8123",
128+
"port": 8123,
129+
"username": "your-username",
130+
"password": "your-password"
131+
}
132+
]
66133
```
67134
68-
## Post-Installation: Configuring Telemetry API Key
135+
## Configuration
136+
137+
### API Key Setup
69138
70139
After successfully deploying HyperDX, you'll need to configure the API key to enable the app's telemetry data collection:
71140
72141
1. **Access your HyperDX instance** via the configured ingress or service endpoint
73142
2. **Log into the HyperDX dashboard** and navigate to Team settings to generate or retrieve your API key
74143
3. **Update your deployment** with the API key using one of the following methods:
75144
76-
### Method 1: Update via Helm upgrade with values file
145+
#### Method 1: Update via Helm upgrade with values file
77146
78147
Add the API key to your `values.yaml`:
79148

@@ -88,7 +157,7 @@ Then upgrade your deployment:
88157
helm upgrade my-hyperdx hyperdx/hdx-oss-v2 -f values.yaml
89158
```
90159

91-
### Method 2: Update via Helm upgrade with --set flag
160+
#### Method 2: Update via Helm upgrade with --set flag
92161

93162
```sh
94163
helm upgrade my-hyperdx hyperdx/hdx-oss-v2 --set hyperdx.apiKey="your-api-key-here"
@@ -161,7 +230,9 @@ By default, there is one task in the chart setup as a cronjob, responsible for c
161230
| `tasks.checkAlerts.schedule` | Cron schedule for the check-alerts task | `*/1 * * * *` |
162231
| `tasks.checkAlerts.resources` | Resource requests and limits for the check-alerts task | See `values.yaml` |
163232

164-
## Upgrading the Chart
233+
## Operations
234+
235+
### Upgrading the Chart
165236

166237
To upgrade to a newer version:
167238

@@ -175,7 +246,7 @@ To check available chart versions:
175246
helm search repo hyperdx
176247
```
177248

178-
## Uninstalling HyperDX
249+
### Uninstalling HyperDX
179250

180251
To remove the deployment:
181252

@@ -185,6 +256,103 @@ helm uninstall my-hyperdx
185256

186257
This will remove all resources associated with the release, but persistent data (if any) may remain.
187258

259+
## Cloud Deployment
260+
261+
### Google Kubernetes Engine (GKE)
262+
263+
When deploying to GKE, you may need to override certain values due to cloud-specific networking behavior:
264+
265+
#### LoadBalancer DNS Resolution Issue
266+
267+
GKE's LoadBalancer service can cause internal DNS resolution issues where pod-to-pod communication resolves to external IPs instead of staying within the cluster network. This specifically affects the OTEL collector's connection to the OpAMP server.
268+
269+
**Symptoms:**
270+
- OTEL collector logs showing "connection refused" errors with cluster IP addresses
271+
- OpAMP connection failures like: `dial tcp 34.118.227.30:4320: connect: connection refused`
272+
273+
**Solution:**
274+
Use the fully qualified domain name (FQDN) for the OpAMP server URL:
275+
276+
```bash
277+
helm install my-hyperdx hyperdx/hdx-oss-v2 \
278+
--set hyperdx.appUrl="http://your-external-ip-or-domain.com" \
279+
--set otel.opampServerUrl="http://my-hyperdx-hdx-oss-v2-app.default.svc.cluster.local:4320"
280+
```
281+
282+
#### Other GKE Considerations
283+
284+
```yaml
285+
# values-gke.yaml
286+
hyperdx:
287+
appUrl: "http://34.123.61.99" # Use your LoadBalancer external IP
288+
289+
otel:
290+
opampServerUrl: "http://my-hyperdx-hdx-oss-v2-app.default.svc.cluster.local:4320"
291+
292+
# Adjust for GKE pod networking if needed
293+
clickhouse:
294+
config:
295+
clusterCidrs:
296+
- "10.8.0.0/16" # GKE commonly uses this range
297+
- "10.0.0.0/8" # Fallback for other configurations
298+
```
299+
300+
### Amazon EKS
301+
302+
For EKS deployments, consider these common configurations:
303+
304+
```yaml
305+
# values-eks.yaml
306+
hyperdx:
307+
appUrl: "http://your-alb-domain.com"
308+
309+
# EKS typically uses these pod CIDRs
310+
clickhouse:
311+
config:
312+
clusterCidrs:
313+
- "192.168.0.0/16"
314+
- "10.0.0.0/8"
315+
316+
# Enable ingress for production
317+
hyperdx:
318+
ingress:
319+
enabled: true
320+
host: "hyperdx.yourdomain.com"
321+
tls:
322+
enabled: true
323+
```
324+
325+
### Azure AKS
326+
327+
For AKS deployments:
328+
329+
```yaml
330+
# values-aks.yaml
331+
hyperdx:
332+
appUrl: "http://your-azure-lb.com"
333+
334+
# AKS pod networking
335+
clickhouse:
336+
config:
337+
clusterCidrs:
338+
- "10.244.0.0/16" # Common AKS pod CIDR
339+
- "10.0.0.0/8"
340+
```
341+
342+
### Production Cloud Deployment Checklist
343+
344+
- [ ] Configure proper `appUrl` with your external domain/IP
345+
- [ ] Set up ingress with TLS for HTTPS access
346+
- [ ] Override `otel.opampServerUrl` with FQDN if experiencing connection issues
347+
- [ ] Adjust `clickhouse.config.clusterCidrs` for your pod network CIDR
348+
- [ ] Configure persistent storage for production workloads
349+
- [ ] Set appropriate resource requests and limits
350+
- [ ] Enable monitoring and alerting
351+
352+
### Browser Compatibility Notes
353+
354+
For HTTP-only deployments (development/testing), some browsers may show crypto API errors due to secure context requirements. For production deployments, use HTTPS with proper TLS certificates through ingress configuration.
355+
188356
## Troubleshooting
189357

190358
### Checking Logs
@@ -193,6 +361,18 @@ This will remove all resources associated with the release, but persistent data
193361
kubectl logs -l app.kubernetes.io/name=hdx-oss-v2
194362
```
195363

364+
### OTEL Collector OpAMP Connection Issues
365+
366+
If you see connection refused errors in OTEL collector logs:
367+
368+
```sh
369+
# Check OTEL collector logs
370+
kubectl logs -l app=otel-collector
371+
372+
# Verify service DNS resolution
373+
kubectl exec -it deployment/my-hyperdx-hdx-oss-v2-otel-collector -- nslookup my-hyperdx-hdx-oss-v2-app
374+
```
375+
196376
### Debugging a Failed Install
197377

198378
```sh

0 commit comments

Comments
 (0)