aicam opened a new pull request, #5932:
URL: https://github.com/apache/texera/pull/5932

   ### What changes were proposed in this PR?
   
   This makes the **application tier's** object-storage target configurable, as 
the first step toward supporting an external S3 store alongside the in-cluster 
MinIO. It is **non-breaking**: the default (on-prem / in-cluster MinIO) install 
renders an identical set of resources.
   
   Today `file-service` and `workflow-computing-unit-manager` hardcode the S3 
endpoint and credentials to the in-cluster MinIO Service (`{{ .Release.Name 
}}-minio`) and its auto-generated Secret. This PR routes both through a new 
`storage.s3` values block:
   
   - **`values.yaml`** — new `storage.s3` block: `endpoint`, `region`, 
`existingSecret`, `accessKeyId`, `secretAccessKey`. All default to empty.
   - **`templates/base/_helpers.tpl`** (new) — helpers that resolve the S3 
endpoint and the credentials Secret name/keys. When `storage.s3.endpoint` is 
empty they fall back to the in-cluster MinIO Service and its `{{ .Release.Name 
}}-minio` Secret (keys `root-user`/`root-password`), so the default render is 
unchanged.
   - **`templates/aws/s3-credentials-secret.yaml`** (new) — a `{{ .Release.Name 
}}-s3-credentials` Secret, rendered **only** when an external `endpoint` is set 
and no `existingSecret` is supplied. Renders nothing on the default install.
   - **`file-service` / `workflow-computing-unit-manager` deployments** — the 
`STORAGE_S3_*` env now comes from the helpers; `STORAGE_S3_REGION` is added 
only in external mode.
   
   How it behaves:
   - **Default (no config):** services point at the in-cluster MinIO exactly as 
before.
   - **External S3:** set `storage.s3.endpoint` + `region` + credentials (or 
`existingSecret`) → both services use that store; the chart materializes the 
credentials Secret unless you bring your own.
   
   **Out of scope (intentionally deferred to keep this PR small and atomic):** 
LakeFS blockstore + Lakekeeper warehouse external-S3 wiring, the 
`minio.enabled` switch to drop the in-cluster MinIO entirely, and a 
`values-aws.yaml` example overlay. Those are the LakeFS/Lakekeeper half of 
"make object storage pluggable" and will land as a follow-up.
   
   ### Any related issues, documentation, discussions?
   
   Closes #5931 (app-tier `storage.s3` task).
   Part of #5891 — unify AWS (EKS) and on-premise Kubernetes deployment under 
`bin/k8s` (parent feature).
   Follows #5757 (Helm template reorg) and the design discussion in #5641.
   
   ### How was this PR tested?
   
   Verified the default install is unchanged and the external path renders 
correctly:
   
   1. **No-op render proof:** `helm template texera bin/k8s` on this branch vs 
on `main` renders the **same 102 resources** — identical after ignoring 
comments. The only textual artifact is one empty `---` document from the 
gated-off `s3-credentials-secret.yaml` (its `# license` header is emitted by 
Helm even though the `{{- if }}` body is empty); it produces no Kubernetes 
object. `helm lint` passes.
   2. **External S3 render:** `helm template ... --set 
storage.s3.endpoint=https://s3.us-west-2.amazonaws.com --set 
storage.s3.accessKeyId=… --set storage.s3.secretAccessKey=…` renders the 
`*-s3-credentials` Secret, repoints both deployments' 
`STORAGE_S3_ENDPOINT`/credentials at it (keys 
`access-key-id`/`secret-access-key`), and adds `STORAGE_S3_REGION`.
   3. **Bring-your-own Secret:** with `--set 
storage.s3.existingSecret=my-creds`, the deployments reference `my-creds` and 
the chart generates **no** Secret.
   4. `helm lint bin/k8s` passes for both the default and the external value 
sets.
   
   No unit tests were added — the change is limited to Helm chart 
values/templates, validated by the render diff and `helm lint` above.
   
   ### Was this PR authored or co-authored using generative AI tooling?
   
   Generated-by: Claude Code (Claude Opus 4.8)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to