Skip to content

Commit ff040a6

Browse files
authored
Merge branch 'main' into use_remote_mongodb
2 parents 3a72468 + 4e246da commit ff040a6

15 files changed

+533
-35
lines changed

.changeset/fair-houses-begin.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"helm-charts": patch
3+
---
4+
5+
fix: relocate mongodb volume persistence field + handle the case when CH pvc is disabled

.changeset/fresh-papers-roll.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"helm-charts": patch
3+
---
4+
5+
feat: add 'clickhouseUser' and 'clickhousePassword' otel settings

.github/workflows/chart-test.yml

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
name: Helm Chart Integration Test
2+
3+
on:
4+
# Run on merge to main
5+
push:
6+
branches: [ main ]
7+
# Run on pull requests
8+
pull_request:
9+
branches: [ main ]
10+
# Run nightly at 2 AM UTC
11+
schedule:
12+
- cron: '0 2 * * *'
13+
# Allow manual trigger
14+
workflow_dispatch:
15+
16+
jobs:
17+
test-helm-chart:
18+
runs-on: ubuntu-latest
19+
20+
steps:
21+
- name: Checkout code
22+
uses: actions/checkout@v4
23+
24+
- name: Set up Helm
25+
uses: azure/setup-helm@v3
26+
with:
27+
version: '3.12.0'
28+
29+
- name: Create kind cluster config
30+
run: |
31+
cat > kind-config.yaml << EOF
32+
kind: Cluster
33+
apiVersion: kind.x-k8s.io/v1alpha4
34+
nodes:
35+
- role: control-plane
36+
extraPortMappings:
37+
- containerPort: 30000
38+
hostPort: 3000
39+
protocol: TCP
40+
- containerPort: 30001
41+
hostPort: 4318
42+
protocol: TCP
43+
EOF
44+
45+
- name: Create kind cluster
46+
uses: helm/kind-action@v1
47+
with:
48+
cluster_name: hyperdx-test
49+
config: kind-config.yaml
50+
51+
- name: Install local-path-provisioner
52+
run: |
53+
kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.24/deploy/local-path-storage.yaml
54+
kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
55+
56+
- name: Run Helm unit tests
57+
run: |
58+
helm plugin install https://github.com/quintush/helm-unittest || true
59+
helm unittest charts/hdx-oss-v2
60+
61+
- name: Deploy HyperDX chart
62+
run: |
63+
# Create test values for faster deployment
64+
cat > test-values.yaml << EOF
65+
hyperdx:
66+
apiKey: "test-api-key-for-ci"
67+
appUrl: "http://localhost:3000"
68+
replicas: 1
69+
70+
clickhouse:
71+
persistence:
72+
enabled: true
73+
dataSize: 2Gi
74+
logSize: 1Gi
75+
76+
persistence:
77+
mongodb:
78+
enabled: true
79+
size: 2Gi
80+
81+
# Enable NodePort services for testing
82+
hyperdx:
83+
service:
84+
type: NodePort
85+
nodePort: 30000
86+
87+
otel:
88+
service:
89+
type: NodePort
90+
nodePort: 30001
91+
EOF
92+
93+
# Install the chart
94+
helm install hyperdx-test ./charts/hdx-oss-v2 -f test-values.yaml --timeout=2m
95+
96+
# Give services time to initialize after pods are running
97+
echo "Waiting for services to initialize..."
98+
sleep 20
99+
100+
- name: Verify deployment
101+
run: |
102+
# Wait for all pods to be ready
103+
kubectl wait --for=condition=Ready pods --all --timeout=300s
104+
105+
# Check pod status
106+
kubectl get pods -o wide
107+
108+
# Check services
109+
kubectl get services
110+
111+
- name: Run comprehensive smoke tests
112+
run: |
113+
# Make smoke test script executable
114+
chmod +x ./scripts/smoke-test.sh
115+
116+
# Run the smoke test with CI-specific environment
117+
RELEASE_NAME=hyperdx-test NAMESPACE=default ./scripts/smoke-test.sh
118+
119+
- name: Collect logs on failure
120+
if: failure()
121+
run: |
122+
echo "=== Pod Status ==="
123+
kubectl get pods -o wide
124+
125+
echo "=== Events ==="
126+
kubectl get events --sort-by=.metadata.creationTimestamp
127+
128+
echo "=== HyperDX App Logs ==="
129+
kubectl logs -l app=app --tail=100 || true
130+
131+
echo "=== ClickHouse Logs ==="
132+
kubectl logs -l app=clickhouse --tail=100 || true
133+
134+
echo "=== MongoDB Logs ==="
135+
kubectl logs -l app=mongodb --tail=100 || true
136+
137+
echo "=== OTEL Collector Logs ==="
138+
kubectl logs -l app=otel-collector --tail=100 || true
139+
140+
- name: Cleanup
141+
if: always()
142+
run: |
143+
helm uninstall hyperdx-test || true
144+
kind delete cluster --name hyperdx-test || true

charts/hdx-oss-v2/data/users.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@
4242
<query>GRANT SELECT ON default.*</query>
4343
</grants>
4444
</app>
45-
<otelcollector>
46-
<password>{{ .Values.clickhouse.config.users.otelUserPassword }}</password>
45+
<{{ .Values.otel.clickhouseUser | default .Values.clickhouse.config.users.otelUserName }}>
46+
<password>{{ .Values.otel.clickhousePassword | default .Values.clickhouse.config.users.otelUserPassword }}</password>
4747
<networks>
4848
{{- if .Values.clickhouse.config.clusterCidrs }}
4949
{{- range .Values.clickhouse.config.clusterCidrs }}
@@ -59,7 +59,7 @@
5959
<grants>
6060
<query>GRANT SELECT,INSERT,CREATE,SHOW ON default.*</query>
6161
</grants>
62-
</otelcollector>
62+
</{{ .Values.otel.clickhouseUser | default .Values.clickhouse.config.users.otelUserName }}>
6363
</users>
6464

6565
<quotas>

charts/hdx-oss-v2/templates/claims/persistent-volume-claims.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{{- if .Values.persistence.mongodb.enabled }}
1+
{{- if .Values.mongodb.persistence.enabled }}
22
apiVersion: v1
33
kind: PersistentVolumeClaim
44
metadata:
@@ -13,6 +13,6 @@ spec:
1313
{{- end }}
1414
resources:
1515
requests:
16-
storage: {{ .Values.persistence.mongodb.size }}
16+
storage: {{ .Values.mongodb.persistence.dataSize }}
1717
---
18-
{{- end }}
18+
{{- end }}

charts/hdx-oss-v2/templates/clickhouse-deployment.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,19 @@ spec:
4646
configMap:
4747
name: {{ include "hdx-oss.fullname" . }}-clickhouse-users
4848
- name: data
49+
{{- if .Values.clickhouse.persistence.enabled }}
50+
persistentVolumeClaim:
51+
claimName: {{ include "hdx-oss.fullname" . }}-clickhouse-data
52+
{{- else }}
4953
emptyDir: {}
54+
{{- end }}
5055
- name: logs
56+
{{- if .Values.clickhouse.persistence.enabled }}
57+
persistentVolumeClaim:
58+
claimName: {{ include "hdx-oss.fullname" . }}-clickhouse-logs
59+
{{- else }}
5160
emptyDir: {}
61+
{{- end }}
5262
---
5363
apiVersion: v1
5464
kind: Service

charts/hdx-oss-v2/templates/mongodb-deployment.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,12 @@ spec:
2828
mountPath: /data/db
2929
volumes:
3030
- name: mongodb-data
31+
{{- if .Values.mongodb.persistence.enabled }}
3132
persistentVolumeClaim:
3233
claimName: {{ include "hdx-oss.fullname" . }}-mongodb
34+
{{- else }}
35+
emptyDir: {}
36+
{{- end }}
3337
---
3438
apiVersion: v1
3539
kind: Service

charts/hdx-oss-v2/templates/otel-collector-deployment.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ spec:
4848
name: {{ include "hdx-oss.fullname" . }}-app-secrets
4949
key: api-key
5050
- name: CLICKHOUSE_USER
51-
value: "otelcollector"
51+
value: {{ .Values.otel.clickhouseUser | default .Values.clickhouse.config.users.otelUserName }}
5252
- name: CLICKHOUSE_PASSWORD
53-
value: {{ .Values.clickhouse.config.users.otelUserPassword }}
53+
value: {{ .Values.otel.clickhousePassword | default .Values.clickhouse.config.users.otelUserPassword }}
5454
---
5555
apiVersion: v1
5656
kind: Service
@@ -78,4 +78,4 @@ spec:
7878
selector:
7979
{{- include "hdx-oss.selectorLabels" . | nindent 4 }}
8080
app: otel-collector
81-
{{- end }}
81+
{{- end }}

charts/hdx-oss-v2/tests/clickhouse-deployment_test.yaml

Lines changed: 75 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,4 +71,78 @@ tests:
7171
path: spec.storageClassName
7272
- documentIndex: 5
7373
isNull:
74-
path: spec.storageClassName
74+
path: spec.storageClassName
75+
76+
- it: should use PVCs when persistence is enabled
77+
set:
78+
clickhouse:
79+
enabled: true
80+
persistence:
81+
enabled: true
82+
dataSize: 10Gi
83+
logSize: 5Gi
84+
asserts:
85+
- documentIndex: 0
86+
isKind:
87+
of: Deployment
88+
- documentIndex: 0
89+
equal:
90+
path: spec.template.spec.volumes[2].name
91+
value: data
92+
- documentIndex: 0
93+
isNotNull:
94+
path: spec.template.spec.volumes[2].persistentVolumeClaim
95+
- documentIndex: 0
96+
matchRegex:
97+
path: spec.template.spec.volumes[2].persistentVolumeClaim.claimName
98+
pattern: .*-clickhouse-data$
99+
- documentIndex: 0
100+
isNull:
101+
path: spec.template.spec.volumes[2].emptyDir
102+
- documentIndex: 0
103+
equal:
104+
path: spec.template.spec.volumes[3].name
105+
value: logs
106+
- documentIndex: 0
107+
isNotNull:
108+
path: spec.template.spec.volumes[3].persistentVolumeClaim
109+
- documentIndex: 0
110+
matchRegex:
111+
path: spec.template.spec.volumes[3].persistentVolumeClaim.claimName
112+
pattern: .*-clickhouse-logs$
113+
- documentIndex: 0
114+
isNull:
115+
path: spec.template.spec.volumes[3].emptyDir
116+
117+
- it: should use emptyDir when persistence is disabled
118+
set:
119+
clickhouse:
120+
enabled: true
121+
persistence:
122+
enabled: false
123+
asserts:
124+
- hasDocuments:
125+
count: 4
126+
- documentIndex: 0
127+
isKind:
128+
of: Deployment
129+
- documentIndex: 0
130+
equal:
131+
path: spec.template.spec.volumes[2].name
132+
value: data
133+
- documentIndex: 0
134+
isNotNull:
135+
path: spec.template.spec.volumes[2].emptyDir
136+
- documentIndex: 0
137+
isNull:
138+
path: spec.template.spec.volumes[2].persistentVolumeClaim
139+
- documentIndex: 0
140+
equal:
141+
path: spec.template.spec.volumes[3].name
142+
value: logs
143+
- documentIndex: 0
144+
isNotNull:
145+
path: spec.template.spec.volumes[3].emptyDir
146+
- documentIndex: 0
147+
isNull:
148+
path: spec.template.spec.volumes[3].persistentVolumeClaim

charts/hdx-oss-v2/tests/mongodb-deployment_test.yaml

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,50 @@ tests:
2424
enabled: false
2525
asserts:
2626
- hasDocuments:
27-
count: 0
27+
count: 0
28+
29+
- it: should use PVC when persistence is enabled
30+
set:
31+
mongodb:
32+
enabled: true
33+
persistence:
34+
enabled: true
35+
asserts:
36+
- documentIndex: 0
37+
isKind:
38+
of: Deployment
39+
- documentIndex: 0
40+
equal:
41+
path: spec.template.spec.volumes[0].name
42+
value: mongodb-data
43+
- documentIndex: 0
44+
isNotNull:
45+
path: spec.template.spec.volumes[0].persistentVolumeClaim
46+
- documentIndex: 0
47+
matchRegex:
48+
path: spec.template.spec.volumes[0].persistentVolumeClaim.claimName
49+
pattern: .*-mongodb$
50+
- documentIndex: 0
51+
isNull:
52+
path: spec.template.spec.volumes[0].emptyDir
53+
54+
- it: should use emptyDir when persistence is disabled
55+
set:
56+
mongodb:
57+
enabled: true
58+
persistence:
59+
enabled: false
60+
asserts:
61+
- documentIndex: 0
62+
isKind:
63+
of: Deployment
64+
- documentIndex: 0
65+
equal:
66+
path: spec.template.spec.volumes[0].name
67+
value: mongodb-data
68+
- documentIndex: 0
69+
isNotNull:
70+
path: spec.template.spec.volumes[0].emptyDir
71+
- documentIndex: 0
72+
isNull:
73+
path: spec.template.spec.volumes[0].persistentVolumeClaim

0 commit comments

Comments
 (0)