Repository navigation
feat(operator,chart): pass PageBroker's S3 connection and transfer settings through the chart - #694
Draft
oleg-kushniriov wants to merge 1 commit into
Draft
oleg-kushniriov wants to merge 1 commit into
oleg-kushniriov wants to merge 1 commit into
Conversation
…ttings through the chart PageBroker's S3 configuration accepts addressing, caFile, allowHttp and a limits object in the JSON it reads at --storage-config, checks addressing and caFile against RUNAI_STREAMER_S3_USE_VIRTUAL_ADDRESSING and AWS_CA_BUNDLE in its environment, and takes Model Streamer reader tuning from a second file at --model-streamer-config. The chart rendered none of these, so PageBroker always ran on its defaults and an endpoint needing path-style addressing, a private CA or plain HTTP could not be configured. The chart now renders the connection and transfer settings into pagebroker-s3.yaml next to storage.yaml, from storage.s3.addressing, storage.s3.allowHttp, storage.s3.caBundleConfigMapRef and pageBroker.s3.limits. The operator reads that file through --pagebroker-s3-settings and merges it into the JSON it writes, so the store identity fields keep their one author. The DaemonSet sets the two environment variables from the same values, mounts the CA bundle into PageBroker and the operator, and passes the operator its --artifact-cleanup-s3-ca-bundle-path. pageBroker.modelStreamer is rendered to its own file and passed with --model-streamer-config when set. stagingBytes defaults to the staging volume cap, so PageBroker refuses a staged restore the volume cannot hold instead of filling it. The chart rejects an unknown limit key, an activeTransactions at or above maxConcurrentRequests, an addressing other than path or virtual, and a plain-http endpoint without allowHttp; PageBroker enforces the remaining bounds. A PVC install renders none of this. Signed-off-by: Oleg Kushniriov <okushniriov@nvidia.com>
oleg-kushniriov
added this pull request to stack #691
October 22, 2026 16:54
Contributor
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Comment |
This branch has not been deployed
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.
What this PR does / why we need it
PageBroker's S3 configuration accepts more than the store identity:
addressing,caFile,allowHttpand alimitsobject in the JSON it reads at--storage-config, two environment variables it checks that JSON against (RUNAI_STREAMER_S3_USE_VIRTUAL_ADDRESSINGandAWS_CA_BUNDLE), and Model Streamer reader tuning from a second file at--model-streamer-config. The chart rendered none of these, so PageBroker always ran on its defaults, and an endpoint that needs path-style addressing, a private CA or plain HTTP could not be configured through the chart.This adds the values and routes each one the way PageBroker expects:
storage.s3.addressing,storage.s3.allowHttp, the CA file path andpageBroker.s3.limitsare rendered intopagebroker-s3.yamlnext tostorage.yaml, kept out ofapi/storage.S3because none of them is a store identity input. The operator reads that file through a new--pagebroker-s3-settingsflag and merges it into the JSON it already writes, so the file keeps one author. Absent members are omitted, so an install that sets none of them produces the same JSON as before.RUNAI_STREAMER_S3_USE_VIRTUAL_ADDRESSINGfromstorage.s3.addressing(0forpath,1forvirtual) andAWS_CA_BUNDLEfrom the CA mount path, from the same values, since PageBroker refuses to start when they disagree with the JSON.storage.s3.caBundleConfigMapRefandcaBundleConfigMapKeyare mounted read-only at/etc/snapshot-s3-ca/<key>into PageBroker and the operator. The operator also receives its existing--artifact-cleanup-s3-ca-bundle-path, which the base PR added but did not wire.pageBroker.modelStreameris written as given tomodel-streamer.jsonin the config ConfigMap, mounted, and passed with--model-streamer-config, only when set.Two values are derived rather than typed.
limits.stagingBytesdefaults to the staging volume cap the chart already computes, so PageBroker refuses a staged restore the volume cannot hold instead of filling it; PageBroker's own default is 1 TiB.caFileis the fixed mount path whenever the CA reference is set.The chart rejects what PageBroker would refuse at startup where it can say so more clearly: a limit key PageBroker does not know, an
activeTransactionsat or abovepageBroker.maxConcurrentRequests, anaddressingother thanpathorvirtual, and a plain-http endpoint withoutallowHttp. PageBroker enforces the remaining bounds. A PVC install renders none of this.Which issue(s) this PR addresses
Part of #237.
How was this tested?
operator:go build,go vet,go test ./...,golangci-lint(0 issues). New tests cover settings loading and validation, and the merged JSON with and without settings.helm unittest(103 cases, 18 new ins3_tuning_test.yaml),helm lintin PVC and S3 mode.make verify-license-headers.helm templatein S3 mode with path addressing, a CA bundle, limits and Model Streamer tuning, confirming the rendered file, environment, mounts and flags; and in PVC mode, confirming nothing new is rendered.Special notes for your reviewer
Base is #663, which writes the identity fields of the JSON; this PR only adds the non-identity members and their environment and mounts.
Naming follows PageBroker's own vocabulary (
addressing: path | virtual) rather than SNEP-237'saddressingMode: path | virtual-host, and the default when unset is PageBroker's (virtual). SNEP-237 proposespathwhenever an endpoint is set, which with the chart requiring an endpoint would make every install path-style; that choice is left for the SNEP to settle and is a one-line change here.The README rows for the base PR's
storage.s3.*values were missing, so they are added alongside the new ones.Does this PR introduce an API change?