Deploying on GKE?The FIPS-specific Kubernetes steps below — certificate generation, certificate secrets, and the
openSSL Helm flags — are cloud-agnostic. For GCP, provision the infrastructure with Deploy on GCP GKE, then apply those steps here, substituting the GCS storage settings and Workload Identity from the GCP guide.Prerequisites
Before starting this tutorial, you must have completed the following from tutorials/deploy-aws.md:- Step 1: IAM role for ECR access
- Step 2: Container images copied to your ECR (using FIPS version tags — see below)
- Step 3: VPC created
- Step 4: EKS cluster created
- Step 5: Node groups created
- Step 6: S3 bucket and IAM roles created
FIPS Version Tags
Use the following FIPS-specific image tags when copying artifacts:S3 Bucket Naming Restriction
The S3 bucket name cannot contain any periods (.) when using FIPS. The S3 FIPS endpoints require virtual-host-style addressing, which does not work when the bucket name contains periods.
Step 1: Create FIPS Certificates
FIPS compliance requires TLS certificates generated using FIPS-approved algorithms in a FIPS-enabled environment. You need three sets of certificates:
You also need a CA certificate (
ca.crt and ca.key), either self-signed or from your organization’s certificate authority.
Requirements:
- Minimum RSA 3072-bit key size
- SHA-256 or higher signature algorithm
- Generated in a FIPS-enabled environment
- A unique set of certificates (excluding CA) must be created for each ClickHouse cluster
Step 2: Install Kubernetes Prerequisites
Install VolumeSnapshot CRDs
Install StorageClass (Optional)
Only if you do not have a custom or existing StorageClass:Step 3: Install Operator
Note the FIPS ECR endpoint format:0000000000.dkr-ecr-fips.us-west-2.on.aws (not the standard .amazonaws.com endpoint).
Step 4: Create Certificate Secrets
Secrets must be installed in the same Kubernetes namespace where the ClickHouse cluster will run. If your cluster name isdefault-xx-01, the namespace will be ns-default-xx-01.
Ensure the namespace exists, then create the secrets. Do not change the secret names or key names.
Step 5: Deploy ClickHouse Cluster
Use the correct FIPS version of the endpoints for ECR and S3. FIPS endpoints can be found at https://aws.amazon.com/compliance/fips/.Guaranteed QoS (recommended)ClickHouse workloads should run with matching
requests and limits for
both CPU and memory. The single SERVER_CPU/SERVER_MEMORY/KEEPER_CPU/
KEEPER_MEMORY values below are applied to both resources.requests
and resources.limits in the helm invocation that follows, which places
the pods in the Guaranteed
QoS class. If you need to run with a different QoS class, review
Pod QoS: Guaranteed (recommended)
first for the trade-offs.Step 6: Verify Installation
Port-forward on TLS Port
With FIPS mode, ClickHouse uses TLS on port 9440 instead of the standard port 9000.Create Client Configuration
Create aclient-config.xml file to tell the ClickHouse client where to find the CA certificate. Update the path to your ca.crt file:
Connect and Run a Query
openSSL.required=true. Use port 9440 (native TLS) or port 8443 (HTTPS) instead.
Next Steps
- Teleport integration (optional): For secure database access via Teleport Enterprise, see Integrate Teleport with ClickHouse Private. This requires
SERVER_VERIFICATION_MODE=relaxedandKEEPER_VERIFICATION_MODE=relaxed.