@@ -4,7 +4,7 @@ Helm charts for deploying Countly analytics on Kubernetes.
44
55## Architecture
66
7- Five charts, each in its own namespace:
7+ Seven charts, each in its own namespace:
88
99| Chart | Namespace | Purpose |
1010| -------| -----------| ---------|
@@ -13,6 +13,8 @@ Five charts, each in its own namespace:
1313| ` countly-clickhouse ` | clickhouse | ClickHouse via ClickHouse Operator |
1414| ` countly-kafka ` | kafka | Kafka via Strimzi Operator |
1515| ` countly-observability ` | observability | Prometheus, Grafana, Loki, Tempo, Pyroscope |
16+ | ` countly-migration ` | countly-migration | MongoDB to ClickHouse batch migration (with bundled Redis) |
17+ | ` countly-argocd ` | argocd | ArgoCD app-of-apps (AppProject + Applications) |
1618
1719### Architecture Overview
1820
@@ -46,6 +48,11 @@ flowchart TB
4648 mongo["MongoDB\n:27017"]
4749 end
4850
51+ subgraph mig-ns["countly-migration"]
52+ migsvc["Migration Service\n:8080"]
53+ redis["Redis\n:6379"]
54+ end
55+
4956 subgraph obs-ns["observability"]
5057 prom["Prometheus"]
5158 grafana["Grafana"]
@@ -66,6 +73,10 @@ flowchart TB
6673 brokers --> connect --> chserver
6774 keeper -.-> chserver
6875
76+ migsvc -->|read batches| mongo
77+ migsvc -->|insert rows| chserver
78+ migsvc <-.->|hot state| redis
79+
6980 alloy -.-> prom & loki & tempo & pyroscope
7081 prom & loki & tempo & pyroscope --> grafana
7182```
@@ -164,43 +175,69 @@ Install required operators before deploying Countly. See [docs/PREREQUISITES.md]
164175
165176### Manual Installation (without Helmfile)
166177
178+ Substitute your profile choices from ` global.yaml ` into the commands below.
179+ The value file order must match the layering: global → sizing → dimension profiles → security → environment → secrets.
180+
167181``` bash
182+ # Shorthand — substitute these from your environments/<env>/global.yaml
183+ ENV=my-deployment
184+ SIZING=local # local | small | production
185+ SECURITY=open # open | hardened
186+ TLS=selfSigned # none | selfSigned | letsencrypt | provided
187+ OBS=full # disabled | full | external-grafana | external
188+ KC=balanced # throughput | balanced | low-latency
189+
168190helm install countly-mongodb ./charts/countly-mongodb -n mongodb --create-namespace \
169191 --wait --timeout 10m \
170- -f environments/my-deployment/global.yaml \
171- -f profiles/sizing/production/mongodb.yaml \
172- -f environments/my-deployment/mongodb.yaml \
173- -f environments/my-deployment/secrets-mongodb.yaml
192+ -f environments/$ENV /global.yaml \
193+ -f profiles/sizing/$SIZING /mongodb.yaml \
194+ -f profiles/security/$SECURITY /mongodb.yaml \
195+ -f environments/$ENV /mongodb.yaml \
196+ -f environments/$ENV /secrets-mongodb.yaml
174197
175198helm install countly-clickhouse ./charts/countly-clickhouse -n clickhouse --create-namespace \
176199 --wait --timeout 10m \
177- -f environments/my-deployment/global.yaml \
178- -f profiles/sizing/production/clickhouse.yaml \
179- -f environments/my-deployment/clickhouse.yaml \
180- -f environments/my-deployment/secrets-clickhouse.yaml
200+ -f environments/$ENV /global.yaml \
201+ -f profiles/sizing/$SIZING /clickhouse.yaml \
202+ -f profiles/security/$SECURITY /clickhouse.yaml \
203+ -f environments/$ENV /clickhouse.yaml \
204+ -f environments/$ENV /secrets-clickhouse.yaml
181205
182206helm install countly-kafka ./charts/countly-kafka -n kafka --create-namespace \
183207 --wait --timeout 10m \
184- -f environments/my-deployment/global.yaml \
185- -f profiles/sizing/production/kafka.yaml \
186- -f profiles/kafka-connect/balanced/kafka.yaml \
187- -f environments/my-deployment/kafka.yaml \
188- -f environments/my-deployment/secrets-kafka.yaml
208+ -f environments/$ENV /global.yaml \
209+ -f profiles/sizing/$SIZING /kafka.yaml \
210+ -f profiles/kafka-connect/$KC /kafka.yaml \
211+ -f profiles/observability/$OBS /kafka.yaml \
212+ -f profiles/security/$SECURITY /kafka.yaml \
213+ -f environments/$ENV /kafka.yaml \
214+ -f environments/$ENV /secrets-kafka.yaml
189215
190216helm install countly ./charts/countly -n countly --create-namespace \
191217 --wait --timeout 10m \
192- -f environments/my-deployment/global.yaml \
193- -f profiles/sizing/production/countly.yaml \
194- -f profiles/tls/letsencrypt/countly.yaml \
195- -f environments/my-deployment/countly.yaml \
196- -f environments/my-deployment/secrets-countly.yaml
218+ -f environments/$ENV /global.yaml \
219+ -f profiles/sizing/$SIZING /countly.yaml \
220+ -f profiles/tls/$TLS /countly.yaml \
221+ -f profiles/observability/$OBS /countly.yaml \
222+ -f profiles/security/$SECURITY /countly.yaml \
223+ -f environments/$ENV /countly.yaml \
224+ -f environments/$ENV /secrets-countly.yaml
197225
198226helm install countly-observability ./charts/countly-observability -n observability --create-namespace \
199227 --wait --timeout 10m \
200- -f environments/my-deployment/global.yaml \
201- -f profiles/sizing/production/observability.yaml \
202- -f profiles/observability/full/observability.yaml \
203- -f environments/my-deployment/observability.yaml
228+ -f environments/$ENV /global.yaml \
229+ -f profiles/sizing/$SIZING /observability.yaml \
230+ -f profiles/observability/$OBS /observability.yaml \
231+ -f profiles/security/$SECURITY /observability.yaml \
232+ -f environments/$ENV /observability.yaml \
233+ -f environments/$ENV /secrets-observability.yaml
234+
235+ # Optional: MongoDB to ClickHouse batch migration (includes bundled Redis)
236+ helm install countly-migration ./charts/countly-migration -n countly-migration --create-namespace \
237+ --wait --timeout 5m \
238+ -f environments/$ENV /global.yaml \
239+ -f environments/$ENV /migration.yaml \
240+ -f environments/$ENV /secrets-migration.yaml
204241```
205242
206243## Configuration Model
@@ -247,6 +284,7 @@ Environments contain deployment-specific choices:
247284- [ VERIFICATION.md] ( docs/VERIFICATION.md ) — Chart signature verification, SBOM, provenance
248285- [ TROUBLESHOOTING.md] ( docs/TROUBLESHOOTING.md ) — Common issues and fixes
249286- [ VERSION-MATRIX.md] ( docs/VERSION-MATRIX.md ) — Pinned operator and image versions
287+ - [ ARGOCD.md] ( docs/ARGOCD.md ) — ArgoCD deployment, sync waves, custom health checks
250288
251289## Repository Structure
252290
@@ -258,6 +296,8 @@ helm/
258296 countly-clickhouse/
259297 countly-kafka/
260298 countly-observability/
299+ countly-migration/
300+ countly-argocd/
261301 profiles/ # Composable profile dimensions
262302 sizing/ # local | small | production
263303 observability/ # disabled | full | external-grafana | external
0 commit comments