Fast Install via Quickstart Script
This page covers the one-shot quickstart script that stands up the storage side of the ACP 4.4 logging stack on a fresh cluster. For the manual kubectl apply walkthrough that exposes every field, see Installation.
Pick this path when:
- The target cluster is a fresh ACP 4.4 install (no legacy
logclickhousechart incpaas-system). For upgrade from ACP 4.2 or 4.3, see Fast Upgrade from ACP 4.2 or 4.3 via Quickstart Script. - The backend is ClickHouse (OpenSearch backend is not covered by the script).
- The default topology fits the deployment: 3-node KRaft Kafka + 1 shard × 3 replica ClickHouse + 3-pod ClickHouse Keeper quorum, all on a single
cpaas-systemnamespace on one storage cluster.
If the deployment needs ClickHouse tiered storage, multi-shard scale-out, LocalVolume PVs, or any non-default knob, use the manual flow in Installation instead; the script writes a fixed set of CRs and is not meant to replace manual tuning.
TOC
1. Prerequisites1.1 Dynamic StorageClass1.2 OperatorHub PackageManifests1.3 Jump host2. Get the script bundle3. Configureinstall.env3.1 Optional — pin pods to a dedicated node pool3.2 Optional — passwords4. Install4.1 Render, review, then apply (recommended)4.2 Direct live apply4.3 Acceptance check5. Verify6. Uninstall7. TroubleshootingKAFKA_STORAGE_SIZE must carry a unit suffixA CSV stays Pending and never reaches SucceededPlatformLogForward reports Ready=False with reason ExternalMessageQueueSecretMissing or ExternalStorageSecretMissingA CR stays in Terminating during uninstall8. Related1. Prerequisites
1.1 Dynamic StorageClass
Kafka, ClickHouse, and Keeper all request ReadWriteOnce dynamic PVCs. Verify at least one dynamic SC is available:
Pick one whose PROVISIONER column is not no-provisioner. The script does not support LocalVolume or hand-provisioned PV pools.
1.2 OperatorHub PackageManifests
The script installs three operators through OLM. All three must be registered in the ACP platform CatalogSource:
Verify:
All three rows must report a non-empty AGE.
1.3 Jump host
The script runs from any host with kubectl, bash, envsubst, base64, and sha256sum (all standard on Linux distributions), configured with a kubeconfig that can reach the storage cluster.
2. Get the script bundle
Contact Alauda support to obtain the v4.4 logging quickstart script bundle (install.sh + check.sh + install.env.example + templates/). The download link will be published here once released: TBD.
Unpack it on the jump host:
3. Configure install.env
Copy the sample:
Three required fields; everything else has a working default:
A size without a unit (for example 100 instead of 100Gi) parses as bytes in YAML. On topolvm this truncates to the SC minimum (around 300Mi) and the broker crashes with No space left on device as soon as Kafka writes raft metadata.
Sizing guidance:
KAFKA_STORAGE_SIZE≈ daily ingest × retention days ÷ broker count. Common values:100Gifor small clusters,500Gi+ for large production clusters.CK_STORAGE_SIZE≈ daily ingest × TTL days. Common value:300Gifor a 30-day TTL default.
3.1 Optional — pin pods to a dedicated node pool
For production, pin all logging pods (Keeper, CHI, Kafka broker/controller/entity-operator) to a dedicated pool via nodeAffinity + tolerations:
Before running the script, label and taint the target nodes:
Leaving all five fields empty schedules pods anywhere and emits a fallback tolerations: [{operator: Exists}].
3.2 Optional — passwords
KAFKA_SASL_PASSWORD and CK_ADMIN_PASSWORD default to empty, in which case the script derives a stable 40-hex (Kafka) or 32-hex (ClickHouse) value from NAMESPACE + the resource names via sha256sum. Reruns produce the same password, which keeps the install idempotent.
Fill either one explicitly only when a specific password is required.
On Alauda OS / FIPS-enforced hosts the Kafka SASL password must be at least 32 characters. The derived default (40 hex) satisfies this; a shorter manual value is rejected by the broker with UnacceptableCredential.
4. Install
4.1 Render, review, then apply (recommended)
Render every YAML into ./rendered/ without touching the cluster:
Review the seven files under ./rendered/. Edit anything that needs cluster-specific tweaks (resources, labels, extra annotations). When ready:
The live run reads each stage's YAML from ./rendered/ first and falls back to the template only for files that --render cannot produce. The main case is platform-default-mq-conn, which needs the live strimzi cluster-ca-cert and is therefore always rendered on the fly during the live run.
Stage order:
- Three OLM
Subscriptionobjects (chop + strimzi + log-storage) wait for CSVSucceeded. - ClickHouse Keeper quorum (
StatefulSet) rolls out. ClickHouseInstallation+RdsKafkareachCompleted/ Ready.RdsKafkaUser+ threeRdsTopicCRs reachReadyorActive.platform-default-mq-conn+platform-default-ch-connSecrets are written.PlatformLogForward/platform-defaultreachesReady=True.
4.2 Direct live apply
Skip the render step:
4.3 Acceptance check
The checker runs eight assertions. All must report ✓ for the install to be considered complete.
Rerunning the script with the same install.env against the same cluster is a no-op after the first successful run. Every kubectl apply is server-side, every readiness wait short-circuits when the condition already holds, and derived passwords are stable. On a mid-run failure, fix the configuration and rerun the same command — completed stages pass instantly.
5. Verify
In addition to check.sh, these commands cover the same ground manually:
For an end-to-end verification of the full data path (collector → Kafka → aggregate-vector → ClickHouse → razor-api), continue with the seven-step post-install verification.
6. Uninstall
PVCs stay bound by default. To reclaim storage:
7. Troubleshooting
KAFKA_STORAGE_SIZE must carry a unit suffix
See the warning in Section 3. Add a Mi / Gi / Ti suffix.
A CSV stays Pending and never reaches Succeeded
Inspect the CSV:
Most common causes: the operator's package is not in the ACP platform CatalogSource (fix at the platform level), or an existing OperatorGroup in the target namespace reports InterOperatorGroupOwnerConflict (fix by consolidating or removing the duplicate OperatorGroup).
PlatformLogForward reports Ready=False with reason ExternalMessageQueueSecretMissing or ExternalStorageSecretMissing
The named Secret was not materialized. Confirm:
If platform-default-mq-conn is missing, re-run the live install (./install.sh install.env): the Stage 3 step requires the live cpaas-kafka-cluster-ca-cert from strimzi, and on a first run where RdsKafka has only just become Ready the CA may not be fully written when Stage 3 reads it.
A CR stays in Terminating during uninstall
The owning operator is still reconciling. Confirm the operator Deployment is gone, then clear the finalizer directly:
For a wider troubleshooting index covering ingest, query, and data-path failures, see Troubleshooting the Logging Stack.
8. Related
- Installation — Full manual
kubectl applywalkthrough. - Post-install Verification — Seven-step end-to-end verification after any install path.
- Fast Upgrade from ACP 4.2 or 4.3 via Quickstart Script — Counterpart script for ACP 4.2 or 4.3 → 4.4 upgrade.
- Troubleshooting the Logging Stack — Common failure index.