Add getting-started guide for Spark FIPS container#3384
Open
matthewhelmke wants to merge 1 commit into
Open
Conversation
✅ Deploy Preview for ornate-narwhal-088216 ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Collaborator
Author
|
I'm tagging these people to request they take a look at this:
|
s-stumbo
approved these changes
Jun 4, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
content/chainguard/chainguard-images/getting-started/spark-fips.md, a new getting-started guide for the Chainguard Spark FIPS containercgr.dev/chainguard-private/spark-fips:latest(Spark 4.1.2, Java 21, Bouncy Castle FIPS)Closes chainguard-dev/internal#5596.
Test plan
Prerequisites: Docker with
chainctl auth configure-docker, pluskubectl,helm, andkindfor Example 2.Example 1 — Local Docker
KEY_PASSWORDandTRUSTSTORE_PASSWORDin your shell.bcfksfiles appear inspark-ssl/spark-serverasPrivateKeyEntryspark-submitblock; confirmPi is roughly 3.14...appears in stdoutExample 2 — Kubernetes with Spark Operator
kind create cluster --name spark-fips-test— cluster comes upkind load docker-imagefor both images — no errorskubectl create secret generic spark-ssl-stores— secret created (requiresspark-ssl/from Example 1)helm install spark-operator ...— STATUS: deployedkubectl wait deployment/spark-operator-controller ...— condition metkubectl apply -f spark-pi-fips.yaml(substitute$KEY_PASSWORDand$TRUSTSTORE_PASSWORDwith the values used in Example 1) — SparkApplication createdkubectl get pods --namespace spark-jobs --watch— driver pod reachesCompletedkubectl logs ... | grep "Pi is"— Pi estimate appears in outputkubectl logs ... | grep "JDK_JAVA_OPTIONS"— confirms-Dorg.bouncycastle.fips.approved_only=trueis presentkubectl delete -f spark-pi-fips.yamlandkind delete clusterBugs found in reference repositories
These bugs are in SE reference repos, not in official image documentation. They need attention from the SE or images teams before those repos are shared with customers.
chainguard-dev/ynad—spark-fips-bcfks/README.mdTypo in
--properties-filepath: the README ends with--properties-file /var/run/spark-sslspark-defaults.conf(missing slash). Should be/var/run/spark-ssl/spark-defaults.conf.Inconsistent keystore paths: the "Spark SSL configuration" section shows paths under
/usr/lib/spark/conf/, which the same README's "K8s Cluster Mode Consideration" section correctly explains are overwritten at pod startup. The first section should use the mount-safe path or be scoped to local/non-Kubernetes use.ericbannon/cg-spark-operator-fips—README.mdMissing
-fflag:kubectl apply spark_props_configmap.yamlerrors without-f. Should bekubectl apply -f spark_props_configmap.yaml.Dev-only
values.yamlwithout a warning:pullPolicy: Neverand tag2.2.1-devonly work with images pre-loaded into a local Docker Desktop node. Any other cluster producesImagePullBackOff. Needs a prominent callout.Operator installed in job namespace:
helm install ... -n dist-testputs the operator in the same namespace as the jobs. The Kubeflow Spark Operator design assumes the operator runs in its own namespace and watches separate job namespaces viaspark.jobNamespaces.ericbannon/cg-spark-operator-fips—spark_props_configmap.yamlspark.driver.extraJavaOptionsandspark.executor.extraJavaOptionsare each defined twice. The second definition silently overrides the first. The first definitions (setting only-Dorg.bouncycastle.fips.approved_only=true) are dead code.Created in collaboration with Claude Code running claude-sonnet-4-6[1m] on 2026-06-04.