Skip to content

adds back runAsRoot in helm chart (explicit disable for OpenShift deployments) - #5215

Merged
akshaydeo merged 1 commit into
devfrom
07-14-adds_back_runasroot_in_helm_chart_explicit_disable_for_openshift_deployments_
Jul 14, 2026
Merged

adds back runAsRoot in helm chart (explicit disable for OpenShift deployments)#5215
akshaydeo merged 1 commit into
devfrom
07-14-adds_back_runasroot_in_helm_chart_explicit_disable_for_openshift_deployments_

Conversation

@akshaydeo

@akshaydeo akshaydeo commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Summary

Restores runAsUser: 1000 defaults that were dropped in v2.1.27, fixing CreateContainerConfigError on Bifrost images before v1.6.4 (which use a non-numeric USER appuser, preventing kubelet from verifying runAsNonRoot: true without an explicit UID). Also adds project_id support to Bedrock and Bedrock Mantle key configs for AWS project scoping.

Changes

  • Restored runAsUser: 1000 in both podSecurityContext and securityContext defaults in values.yaml. Without this, kubelet cannot resolve runAsNonRoot for images with a non-numeric USER directive and pods fail at container creation.
  • OpenShift (restricted-v2) users can unset the UID pins by passing explicit nulls (podSecurityContext.runAsUser: null, podSecurityContext.fsGroup: null, securityContext.runAsUser: null) so the SCC can assign an arbitrary UID.
  • Added project_id to bifrost.providers.bedrock.keys[*].bedrock_key_config — sent as the OpenAI-Project header (OpenAI-compatible surface) and anthropic-workspace-id header (native Anthropic/Claude surface).
  • Added project_id to bifrost.providers.bedrock_mantle.keys[*].bedrock_mantle_key_config — sent as the OpenAI-Project header on the Mantle sub-surface.
  • Updated the per-alias project_id description to reflect it is now a shared cross-provider override (Vertex GCP project; Bedrock/Bedrock Mantle AWS project header).
  • Updated Helm validation tests to assert runAsUser: 1000 is present in default and postgres-mode renders, and added a new test verifying that null overrides correctly remove UID pins for OpenShift.
  • Bumped chart version to 2.1.28 and added the corresponding changelog entry.

Type of change

  • Bug fix
  • Feature
  • Refactor
  • Documentation
  • Chore/CI

Affected areas

  • Core (Go)
  • Transports (HTTP)
  • Providers/Integrations
  • Plugins
  • UI (React)
  • Docs

How to test

# Validate Helm templates (includes the updated security context assertions)
bash .github/workflows/scripts/validate-helm-templates.sh

# Confirm runAsUser: 1000 appears in the default render
helm template bifrost ./helm-charts/bifrost --set image.tag=v1.0.0 \
  | grep -E 'runAsUser|fsGroup'

# Confirm null overrides remove UID pins (OpenShift path)
helm template bifrost ./helm-charts/bifrost \
  --set image.tag=v1.0.0 \
  --set podSecurityContext.runAsUser=null \
  --set podSecurityContext.fsGroup=null \
  --set securityContext.runAsUser=null \
  | grep -E 'runAsUser|fsGroup'
# Expected: no output

Breaking changes

  • Yes
  • No

Users who upgraded to v2.1.27 and relied on the absence of runAsUser for OpenShift compatibility must now explicitly set podSecurityContext.runAsUser: null, podSecurityContext.fsGroup: null, and securityContext.runAsUser: null in their values to restore SCC-assigned UID behaviour.

Related issues

Regression introduced in v2.1.27.

Security considerations

Pinning runAsUser: 1000 enforces non-root execution on vanilla Kubernetes for pre-v1.6.4 images where kubelet cannot infer the UID from the image manifest. OpenShift users delegating UID assignment to the SCC must explicitly null out the pins; the image supports arbitrary UIDs with group 0 and requires no custom SCC.

Checklist

  • I read docs/contributing/README.md and followed the guidelines
  • I added/updated tests where appropriate
  • I updated documentation where needed
  • I verified builds succeed (Go and UI)
  • I verified the CI pipeline passes locally if applicable

@akshaydeo
akshaydeo marked this pull request as ready for review July 14, 2026 22:17
@akshaydeo
akshaydeo requested a review from a team as a code owner July 14, 2026 22:17
@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

Copy link
Copy Markdown
Contributor Author

This stack of pull requests is managed by Graphite. Learn more about stacking.

@coderabbitai

coderabbitai Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Summary by CodeRabbit

  • New Features

    • Added project_id configuration support for AWS Bedrock and Bedrock Mantle providers.
    • Clarified that per-alias project_id settings can apply across supported providers.
  • Bug Fixes

    • Restored default numeric user ID settings to improve compatibility with OpenShift and non-root container validation.
    • Added documented options to clear security context pins when required.
  • Documentation

    • Published Helm chart v2.1.28 release notes and updated installation guidance.
    • Added a warning for the known security-context issue in v2.1.27.

Walkthrough

Helm chart version 2.1.28 restores runAsUser: 1000 defaults with null override validation, adds Bedrock project scoping fields, and updates chart metadata and documentation.

Changes

Helm chart behavior and release

Layer / File(s) Summary
Security context defaults and validation
.github/workflows/scripts/validate-helm-templates.sh, helm-charts/bifrost/values.yaml, helm-charts/bifrost/README.md
Security contexts now render UID 1000 by default, while explicit null overrides remove UID and GID pins. OpenShift guidance documents the corresponding image and SCC behavior.
Bedrock project configuration
helm-charts/bifrost/values.yaml, helm-charts/bifrost/values.schema.json
Adds project_id configuration for Bedrock and Bedrock Mantle and documents shared alias behavior across providers.
Chart release metadata and documentation
helm-charts/bifrost/Chart.yaml, helm-charts/bifrost/README.md, docs/changelogs/*, docs/docs.json
Bumps the chart to 2.1.28 and publishes matching changelog and navigation entries, including a warning for v2.1.27.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

  • maximhq/bifrost#4902: Modifies the same Helm security context values and validation assertions.
  • maximhq/bifrost#5131: Implements Bedrock project resolution and related request headers.
  • maximhq/bifrost#5134: Adds corresponding Bedrock and Bedrock Mantle project_id configuration outside the Helm chart.

Suggested reviewers: bearts, impoiler, danpiths

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title is tied to the main change, though it says runAsRoot instead of the actual runAsUser setting.
Description check ✅ Passed The description covers the summary, changes, test steps, breaking change, security considerations, and checklist required by the template.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 07-14-adds_back_runasroot_in_helm_chart_explicit_disable_for_openshift_deployments_

Comment @coderabbitai help to get the list of available commands.

@coderabbitai
coderabbitai Bot requested review from BearTS and impoiler July 14, 2026 22:18
@greptile-apps

greptile-apps Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Confidence Score: 5/5

This looks safe to merge.

  • No blocking issues found in the changed code.

Important Files Changed

Filename Overview
helm-charts/bifrost/values.yaml Restores the UID defaults and documents how OpenShift users can remove the pins with null overrides.
.github/workflows/scripts/validate-helm-templates.sh Adds Helm render checks for the restored UID defaults and the OpenShift null-override path.
helm-charts/bifrost/values.schema.json Adds Helm schema entries for Bedrock and Bedrock Mantle project_id configuration.
helm-charts/bifrost/README.md Updates chart version notes and OpenShift deployment guidance.
docs/changelogs/helm-v2.1.27.mdx Documents the known Helm 2.1.27 security context regression and workaround.
docs/changelogs/helm-v2.1.28.mdx Adds the Helm 2.1.28 changelog entry.
docs/docs.json Adds the new Helm changelog page to the docs navigation.
helm-charts/bifrost/Chart.yaml Bumps the Helm chart version to 2.1.28.

Reviews (3): Last reviewed commit: "adds back runAsRoot in helm chart (expli..." | Re-trigger Greptile

Comment thread helm-charts/bifrost/values.yaml

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@helm-charts/bifrost/values.schema.json`:
- Around line 5201-5203: Update the project_id description in the schema to
distinguish provider-specific behavior: standard Bedrock supports OpenAI-Project
for its OpenAI-compatible path and anthropic-workspace-id for its
Anthropic/Converse path, while Bedrock Mantle is OpenAI-compatible-only, uses
OpenAI-Project, and has no effect on Converse/runtime paths.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 0b46314e-b772-4875-995f-bf432f371964

📥 Commits

Reviewing files that changed from the base of the PR and between da4785d and 8435d8e.

📒 Files selected for processing (7)
  • .github/workflows/scripts/validate-helm-templates.sh
  • docs/changelogs/helm-v2.1.28.mdx
  • docs/docs.json
  • helm-charts/bifrost/Chart.yaml
  • helm-charts/bifrost/README.md
  • helm-charts/bifrost/values.schema.json
  • helm-charts/bifrost/values.yaml

Comment thread helm-charts/bifrost/values.schema.json
@akshaydeo
akshaydeo force-pushed the 07-14-adds_back_runasroot_in_helm_chart_explicit_disable_for_openshift_deployments_ branch from 8435d8e to c1225d4 Compare July 14, 2026 22:23
@coderabbitai
coderabbitai Bot requested a review from danpiths July 14, 2026 22:24

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/scripts/validate-helm-templates.sh:
- Line 437: Update the security-context validation around the runAsUser check to
inspect only the intended workload’s pod securityContext rather than the entire
multi-document Helm output. Parse that target pod field and compare its value
numerically or exactly to 1000, ensuring values such as 10000 do not match.

In `@helm-charts/bifrost/README.md`:
- Around line 11-15: The README release notes incorrectly name the native
Anthropic header as anthropic-workspace-id. Update the project_id documentation
in the 2.1.28 entry to use anthropic-workspace, keeping OpenAI-Project for the
OpenAI-compatible surface and matching the corresponding values configuration.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 95db6944-e49d-4308-96a7-6521f8d7f5f8

📥 Commits

Reviewing files that changed from the base of the PR and between 8435d8e and c1225d4.

📒 Files selected for processing (8)
  • .github/workflows/scripts/validate-helm-templates.sh
  • docs/changelogs/helm-v2.1.27.mdx
  • docs/changelogs/helm-v2.1.28.mdx
  • docs/docs.json
  • helm-charts/bifrost/Chart.yaml
  • helm-charts/bifrost/README.md
  • helm-charts/bifrost/values.schema.json
  • helm-charts/bifrost/values.yaml
🚧 Files skipped from review as they are similar to previous changes (4)
  • helm-charts/bifrost/Chart.yaml
  • docs/changelogs/helm-v2.1.28.mdx
  • docs/docs.json
  • helm-charts/bifrost/values.schema.json

Comment thread .github/workflows/scripts/validate-helm-templates.sh Outdated
Comment on lines +11 to +15
### 2.1.28

- Restored `runAsUser: 1000` defaults in `podSecurityContext` and `securityContext` (dropped in 2.1.27). Images before v1.6.4 use a non-numeric `USER appuser`, so kubelet could not verify `runAsNonRoot: true` and pods failed with CreateContainerConfigError. OpenShift (restricted-v2) users unset the pins with explicit nulls: `podSecurityContext.runAsUser: null`, `podSecurityContext.fsGroup: null`, `securityContext.runAsUser: null`.
- Added `project_id` to `bifrost.providers.bedrock.keys[*].bedrock_key_config` (renders into `bedrock_key_config.project_id`) and `bifrost.providers.bedrock_mantle.keys[*].bedrock_mantle_key_config` (renders into `bedrock_mantle_key_config.project_id`) for AWS project scoping via the OpenAI-Project / anthropic-workspace-id headers.
- Updated the per-alias `project_id` description: it is now a shared cross-provider override (Vertex GCP project; Bedrock/Bedrock Mantle AWS project header).

@coderabbitai coderabbitai Bot Jul 14, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n## README excerpt\n'
sed -n '1,40p' helm-charts/bifrost/README.md

printf '\n## values.yaml around line 444\n'
sed -n '420,470p' helm-charts/bifrost/values.yaml

printf '\n## Search for anthropic-workspace strings\n'
rg -n "anthropic-workspace|OpenAI-Project|project_id|workspace-id" helm-charts/bifrost -S

Repository: maximhq/bifrost

Length of output: 11897


🌐 Web query:

AWS Bedrock workspace anthropic-work header OpenAI-Project anthropic-workspace docs

💡 Result:

In Amazon Bedrock, the headers anthropic-workspace and OpenAI-Project are used to associate inference requests with specific Amazon Bedrock projects [1][2]. These headers are primarily utilized when interacting with the Bedrock Mantle (Anthropic-compatible) or OpenAI-compatible API endpoints [2][3]. Specifically: - anthropic-workspace: This header is used on the Anthropic Messages API (e.g., when calling /anthropic/v1/messages) to associate a request with a Bedrock workspace or project [2][3]. - OpenAI-Project: This header is used similarly on OpenAI-compatible API endpoints within Amazon Bedrock to associate requests with a project [2]. In the context of Amazon Bedrock, projects and workspaces are effectively the same resource [2]. These identifiers allow users to manage, organize, and track inference workloads [1][2]. It is important to distinguish this from the anthropic-beta header. While native Anthropic APIs use the anthropic-beta header, Amazon Bedrock typically requires beta features to be handled differently. For instance, many integrations and AWS SDK implementations move beta parameters into the request body (e.g., under additionalModelRequestFields or specific JSON fields) rather than passing them as HTTP headers, as headers may conflict with AWS SigV4 signing requirements [4][5].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n## Search for anthropic-workspace-id in templates/schema\n'
rg -n "anthropic-workspace-id|anthropic-workspace|OpenAI-Project" helm-charts/bifrost/templates helm-charts/bifrost/values.schema.json helm-charts/bifrost/values.yaml -S

printf '\n## Relevant schema section\n'
sed -n '5048,5070p' helm-charts/bifrost/values.schema.json

printf '\n## Relevant schema section for shared project_id override\n'
sed -n '5196,5210p' helm-charts/bifrost/values.schema.json

Repository: maximhq/bifrost

Length of output: 3385


Use anthropic-workspace here, not anthropic-workspace-id. Keep the README and helm-charts/bifrost/values.yaml:444 aligned with AWS’s header names: OpenAI-Project for the OpenAI-compatible surface and anthropic-workspace for native Anthropic requests.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@helm-charts/bifrost/README.md` around lines 11 - 15, The README release notes
incorrectly name the native Anthropic header as anthropic-workspace-id. Update
the project_id documentation in the 2.1.28 entry to use anthropic-workspace,
keeping OpenAI-Project for the OpenAI-compatible surface and matching the
corresponding values configuration.

Sources: Path instructions, MCP tools

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're right that AWS documents the header as anthropic-workspace (https://docs.aws.amazon.com/bedrock/latest/userguide/workspaces.html: "reference them in Messages API requests using the anthropic-workspace header"). However, this README line intentionally documents the header Bifrost core actually sends today: core/providers/bedrock/mantle.go defines MantleAnthropicProjectHeader = "anthropic-workspace-id", used on all native-Anthropic Mantle calls.

Changing only the README would make the docs describe behavior the shipped code doesn't have. The header-name discrepancy needs to be verified and fixed core-side first (this PR only touches the helm chart); the README will be updated in lockstep with that core change. Flagging the anthropic-workspace-id vs anthropic-workspace question for a follow-up core PR.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@akshaydeo, that makes sense — thanks for tracing it to MantleAnthropicProjectHeader in core/providers/bedrock/mantle.go. Agreed this is a core-side fix, and keeping the README aligned with actual shipped behavior for now is the right call. This PR is scoped to the Helm chart, so I won't push further on this here.

Would you like me to open a follow-up issue to track reconciling anthropic-workspace-id with AWS's documented anthropic-workspace header in core/providers/bedrock/mantle.go (and updating the Helm README/values docs once that lands)? Happy to file it if so.


✏️ Learnings added
Learnt from: akshaydeo
Repo: maximhq/bifrost PR: 5215
File: helm-charts/bifrost/README.md:11-15
Timestamp: 2026-07-14T22:36:15.527Z
Learning: In maximhq/bifrost, the Bedrock Mantle native-Anthropic header name sent by core is `anthropic-workspace-id`, defined as `MantleAnthropicProjectHeader` in `core/providers/bedrock/mantle.go`. This differs from AWS's documented header name `anthropic-workspace`. The Helm chart README (`helm-charts/bifrost/README.md`) and `values.yaml` intentionally document `anthropic-workspace-id` to match current shipped core behavior; reconciling the naming requires a core-side change first, to be followed by a docs update.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

@akshaydeo
akshaydeo force-pushed the 07-14-adds_back_runasroot_in_helm_chart_explicit_disable_for_openshift_deployments_ branch from c1225d4 to 9405a82 Compare July 14, 2026 22:36

akshaydeo commented Jul 14, 2026

Copy link
Copy Markdown
Contributor Author

Merge activity

  • Jul 14, 10:38 PM UTC: A user started a stack merge that includes this pull request via Graphite.
  • Jul 14, 10:39 PM UTC: @akshaydeo merged this pull request with Graphite.

@akshaydeo
akshaydeo merged commit f1b39c7 into dev Jul 14, 2026
13 of 15 checks passed
@akshaydeo
akshaydeo deleted the 07-14-adds_back_runasroot_in_helm_chart_explicit_disable_for_openshift_deployments_ branch July 14, 2026 22:39

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
.github/workflows/scripts/validate-helm-templates.sh (1)

434-480: 🔒 Security & Privacy | 🔵 Trivial | 💤 Low value

Reused predictable /tmp path across test invocations.

Static analysis flags the hardcoded /tmp/helm-template-output.yaml reused across all three helm template invocations as CWE-377 (symlink/TOCTOU). Exploitability is low here since this only runs in ephemeral GitHub Actions runners, but switching to mktemp is a trivial hardening.

🛡️ Proposed fix
+tmpfile="$(mktemp)"
+trap 'rm -f "$tmpfile"' EXIT
+
 test_name="default Bifrost pod sets runAsUser: 1000 (kubelet runAsNonRoot verification)"
 if helm template bifrost ./helm-charts/bifrost \
   --set image.tag=v1.0.0 \
   -s templates/stateful.yaml \
-  > /tmp/helm-template-output.yaml 2>&1; then
-  if grep -Eq '^[[:space:]]*runAsUser:[[:space:]]*1000$' /tmp/helm-template-output.yaml; then
+  > "$tmpfile" 2>&1; then
+  if grep -Eq '^[[:space:]]*runAsUser:[[:space:]]*1000$' "$tmpfile"; then

Apply the same substitution for the other two helm template ... > /tmp/helm-template-output.yaml blocks.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/scripts/validate-helm-templates.sh around lines 434 - 480,
Replace the reused hardcoded /tmp/helm-template-output.yaml path in all three
helm template test blocks with a unique mktemp-created file, and use that
variable for redirection and subsequent grep/head reads. Apply the same change
to the default render, postgres-mode render, and OpenShift override checks while
preserving their existing validation behavior.

Source: Linters/SAST tools

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@helm-charts/bifrost/README.md`:
- Around line 19-29: Update the OpenShift guidance in the 2.1.27 known-issue
paragraph to remove “works as-is” and state that OpenShift restricted-v2
requires podSecurityContext.fsGroup: null, together with image v1.6.4+; keep the
existing SCC and installation-section references.

---

Nitpick comments:
In @.github/workflows/scripts/validate-helm-templates.sh:
- Around line 434-480: Replace the reused hardcoded
/tmp/helm-template-output.yaml path in all three helm template test blocks with
a unique mktemp-created file, and use that variable for redirection and
subsequent grep/head reads. Apply the same change to the default render,
postgres-mode render, and OpenShift override checks while preserving their
existing validation behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 422e87b9-dee5-47d8-8421-ca20d45f357c

📥 Commits

Reviewing files that changed from the base of the PR and between c1225d4 and 9405a82.

📒 Files selected for processing (8)
  • .github/workflows/scripts/validate-helm-templates.sh
  • docs/changelogs/helm-v2.1.27.mdx
  • docs/changelogs/helm-v2.1.28.mdx
  • docs/docs.json
  • helm-charts/bifrost/Chart.yaml
  • helm-charts/bifrost/README.md
  • helm-charts/bifrost/values.schema.json
  • helm-charts/bifrost/values.yaml
🚧 Files skipped from review as they are similar to previous changes (6)
  • docs/docs.json
  • docs/changelogs/helm-v2.1.28.mdx
  • helm-charts/bifrost/Chart.yaml
  • docs/changelogs/helm-v2.1.27.mdx
  • helm-charts/bifrost/values.yaml
  • helm-charts/bifrost/values.schema.json

Comment on lines +19 to +29
> **Known issue - use 2.1.28 instead.** This version dropped `runAsUser: 1000`
> from the default security contexts. With any image before v1.6.4 (including
> the chart's default), kubelet cannot verify `runAsNonRoot: true` against the
> image's non-numeric `USER appuser` and pods fail with
> `CreateContainerConfigError: container has runAsNonRoot and image has
> non-numeric user (appuser)`. If you must stay on 2.1.27, set
> `podSecurityContext.runAsUser: 1000` and `securityContext.runAsUser: 1000`
> in your values, or use image v1.6.4+. On OpenShift (restricted-v2), 2.1.27
> works as-is since the SCC injects a numeric UID; pair it with image v1.6.4+
> and `podSecurityContext.fsGroup: null` (see the OpenShift section under
> Installation).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Correct the 2.1.27 OpenShift guidance.

This says 2.1.27 “works as-is,” but the next lines require podSecurityContext.fsGroup: null; restricted-v2 rejects the chart’s pinned fsGroup: 1000, so users following the “as-is” wording can still fail admission. Change this to state that 2.1.27 requires the fsGroup override (and the compatible image) on OpenShift.

Proposed wording
-> On OpenShift (restricted-v2), 2.1.27
-> works as-is since the SCC injects a numeric UID; pair it with image v1.6.4+
-> and `podSecurityContext.fsGroup: null` (see the OpenShift section under
-> Installation).
+> On OpenShift (restricted-v2), 2.1.27 still requires
+> `podSecurityContext.fsGroup: null` because its default `fsGroup: 1000` may
+> be rejected by the SCC. Use image v1.6.4+ as described in the OpenShift
+> section under Installation.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
> **Known issue - use 2.1.28 instead.** This version dropped `runAsUser: 1000`
> from the default security contexts. With any image before v1.6.4 (including
> the chart's default), kubelet cannot verify `runAsNonRoot: true` against the
> image's non-numeric `USER appuser` and pods fail with
> `CreateContainerConfigError: container has runAsNonRoot and image has
> non-numeric user (appuser)`. If you must stay on 2.1.27, set
> `podSecurityContext.runAsUser: 1000` and `securityContext.runAsUser: 1000`
> in your values, or use image v1.6.4+. On OpenShift (restricted-v2), 2.1.27
> works as-is since the SCC injects a numeric UID; pair it with image v1.6.4+
> and `podSecurityContext.fsGroup: null` (see the OpenShift section under
> Installation).
> **Known issue - use 2.1.28 instead.** This version dropped `runAsUser: 1000`
> from the default security contexts. With any image before v1.6.4 (including
> the chart's default), kubelet cannot verify `runAsNonRoot: true` against the
> image's non-numeric `USER appuser` and pods fail with
> `CreateContainerConfigError: container has runAsNonRoot and image has
> non-numeric user (appuser)`. If you must stay on 2.1.27, set
> `podSecurityContext.runAsUser: 1000` and `securityContext.runAsUser: 1000`
> in your values, or use image v1.6.4+. On OpenShift (restricted-v2), 2.1.27
> still requires `podSecurityContext.fsGroup: null` because its default
> `fsGroup: 1000` may be rejected by the SCC. Use image v1.6.4+ as described
> in the OpenShift section under Installation.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@helm-charts/bifrost/README.md` around lines 19 - 29, Update the OpenShift
guidance in the 2.1.27 known-issue paragraph to remove “works as-is” and state
that OpenShift restricted-v2 requires podSecurityContext.fsGroup: null, together
with image v1.6.4+; keep the existing SCC and installation-section references.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants