Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 36 additions & 9 deletions .github/workflows/scripts/validate-helm-templates.sh
Original file line number Diff line number Diff line change
Expand Up @@ -426,15 +426,20 @@ echo ""
echo -e "${CYAN}🔒 7/7 - Validating OpenShift-compatible Security Contexts...${NC}"
echo "----------------------------------------------------------------"

test_name="default Bifrost pod does not set runAsUser (SCC assigns UID)"
# Images before v1.6.4 use a non-numeric `USER appuser`, so kubelet can only
# verify runAsNonRoot when the chart pins runAsUser. The default render must
# carry runAsUser: 1000; OpenShift users unset it with explicit nulls (tested
# below).
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:' /tmp/helm-template-output.yaml; then
report_result "$test_name" 1
echo -e "${YELLOW} runAsUser found in default render (must stay unset so OpenShift can assign a UID)${NC}"
else
if grep -Eq '^[[:space:]]*runAsUser:[[:space:]]*1000$' /tmp/helm-template-output.yaml; then
report_result "$test_name" 0
else
report_result "$test_name" 1
echo -e "${YELLOW} runAsUser: 1000 missing from default render (pre-v1.6.4 images have non-numeric USER, so runAsNonRoot fails without it)${NC}"
fi
else
report_result "$test_name" 1
Expand All @@ -443,17 +448,39 @@ else
fi

# Postgres mode renders a Deployment (not the sqlite StatefulSet); assert the
# pinned-UID regression can't sneak in on that code path either.
test_name="postgres-mode Bifrost pod does not set runAsUser (SCC assigns UID)"
# UID pin holds on that code path too.
test_name="postgres-mode Bifrost pod sets runAsUser: 1000 (kubelet runAsNonRoot verification)"
if helm template bifrost ./helm-charts/bifrost \
--set image.tag=v1.0.0 \
--set storage.mode=postgres \
--set postgresql.enabled=true \
--set postgresql.auth.password=testpass \
-s templates/deployment.yaml \
> /tmp/helm-template-output.yaml 2>&1; then
if grep -Eq '^[[:space:]]*runAsUser:[[:space:]]*1000$' /tmp/helm-template-output.yaml; then
report_result "$test_name" 0
else
report_result "$test_name" 1
echo -e "${YELLOW} runAsUser: 1000 missing from postgres render (pre-v1.6.4 images have non-numeric USER, so runAsNonRoot fails without it)${NC}"
fi
else
report_result "$test_name" 1
echo -e "${YELLOW} Error output:${NC}"
head -10 /tmp/helm-template-output.yaml | sed 's/^/ /'
fi

# OpenShift path: explicit nulls must unset the UID pins so the SCC can
# assign an arbitrary UID.
test_name="OpenShift override (runAsUser/fsGroup null) removes UID pins"
if helm template bifrost ./helm-charts/bifrost \
--set image.tag=v1.0.0 \
--set podSecurityContext.runAsUser=null \
--set podSecurityContext.fsGroup=null \
--set securityContext.runAsUser=null \
> /tmp/helm-template-output.yaml 2>&1; then
if grep -Eq '^[[:space:]]*runAsUser:' /tmp/helm-template-output.yaml; then
if grep -Eq '^[[:space:]]*(runAsUser|fsGroup):' /tmp/helm-template-output.yaml; then
report_result "$test_name" 1
echo -e "${YELLOW} runAsUser found in postgres render (must stay unset so OpenShift can assign a UID)${NC}"
echo -e "${YELLOW} runAsUser/fsGroup still rendered with null overrides (OpenShift SCC cannot assign a UID)${NC}"
else
report_result "$test_name" 0
fi
Expand Down
4 changes: 4 additions & 0 deletions docs/changelogs/helm-v2.1.27.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ description: "Helm v2.1.27 changelog - 2026-07-09"

<Update label="Bifrost Helm" description="v2.1.27">

<Warning>
**Known issue - use v2.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 v2.1.27, set `podSecurityContext.runAsUser: 1000` and `securityContext.runAsUser: 1000` in your values, or use image v1.6.4+. On OpenShift (restricted-v2), v2.1.27 works as-is since the SCC injects a numeric UID; pair it with image v1.6.4+ and `podSecurityContext.fsGroup: null`.
</Warning>

## Changelog

- `bifrost.schemaUrl` — override the generated `config.json` `$schema` location for isolated or air-gapped deployments. Accepts an HTTP(S) URL, `file://` URL, or filesystem path. When set, the value is also exported as `BIFROST_SCHEMA_URL` in the pod; when empty (default), the env var is not injected and the public schema URL is used. Renders into `$schema`.
Expand Down
14 changes: 14 additions & 0 deletions docs/changelogs/helm-v2.1.28.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
title: "v2.1.28"
description: "Helm v2.1.28 changelog - 2026-07-14"
---

<Update label="Bifrost Helm" description="v2.1.28">

## Changelog

- 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).

</Update>
1 change: 1 addition & 0 deletions docs/docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -1003,6 +1003,7 @@
"item": "Helm",
"icon": "box",
"pages": [
"changelogs/helm-v2.1.28",
"changelogs/helm-v2.1.27",
"changelogs/helm-v2.1.26",
"changelogs/helm-v2.1.25",
Expand Down
2 changes: 1 addition & 1 deletion helm-charts/bifrost/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ apiVersion: v2
name: bifrost
description: A Helm chart for deploying Bifrost - AI Gateway with unified interface for multiple providers
type: application
version: 2.1.27
version: 2.1.28
appVersion: "1.5.12"
keywords:
- ai
Expand Down
60 changes: 54 additions & 6 deletions helm-charts/bifrost/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,30 @@

Official Helm charts for deploying [Bifrost](https://github.com/maximhq/bifrost) - a high-performance AI gateway with unified interface for multiple providers.

**Latest Version:** 2.1.27
**Latest Version:** 2.1.28

## Changelog

### 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).
Comment on lines +11 to +15

@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.


### 2.1.27

> **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).
Comment on lines +19 to +29

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.


- Added `bifrost.auditLogs.objectStorage` for archiving audit events to S3/GCS. Supports `type` (s3/gcs), `bucket`, `prefix`, `compress`, and full S3 credential fields (`region`, `endpoint`, `accessKeyId`, `secretAccessKey`, `sessionToken`, `roleArn`, `forcePathStyle`) and GCS fields (`projectId`, `credentialsJson`). Renders into `audit_logs.object_storage`.
- Added `bifrost.schemaUrl` to override the generated `config.json` `$schema` location for isolated deployments. It accepts HTTP(S), `file://`, or filesystem paths. When set, it is also exported as `BIFROST_SCHEMA_URL` in the pod; when empty (default), the env var is not injected and the public schema URL is used.
- Added `force_single_region` to `bifrost.providers.vertex.keys[*].vertex_key_config`. When `true`, skips automatic promotion of multi-region-only models to a multi-region endpoint. Enable for provisioned throughput. Renders into `vertex_key_config.force_single_region`.
Expand Down Expand Up @@ -458,24 +476,54 @@ cd bifrost/helm-charts/bifrost

### OpenShift (restricted-v2 SCC)

The default install sets `podSecurityContext.fsGroup: 1000`. OpenShift's
`restricted-v2` SCC enforces `MustRunAs` against the namespace's allocated
group range and rejects that value at admission:
The default install pins `runAsUser: 1000` (pod and container level) and
`podSecurityContext.fsGroup: 1000`. The UID pin is required on vanilla
Kubernetes: images before v1.6.4 declare a non-numeric `USER appuser`, so
kubelet cannot verify `runAsNonRoot: true` without an explicit numeric UID and
rejects the container with:

```text
container has runAsNonRoot and image has non-numeric user (appuser), cannot verify user is non-root
```

OpenShift's `restricted-v2` SCC enforces `MustRunAsRange` / `MustRunAs`
against the namespace's allocated UID/GID ranges and rejects those pinned
values at admission:

```text
fsGroup: Invalid value: []int64{1000}: 1000 is not an allowed group
```

To deploy on OpenShift, clear the default `fsGroup` so the SCC can assign an
To deploy on OpenShift, clear all three pins so the SCC can assign an
in-range UID/GID:

```yaml
podSecurityContext:
# Helm merges maps, so `{}` does NOT clear this — you must use null.
# Helm merges maps, so `{}` does NOT clear these - you must use null.
runAsUser: null
fsGroup: null
runAsNonRoot: true

securityContext:
runAsUser: null
```

Or equivalently on the command line:

```bash
helm install bifrost bifrost/bifrost \
--set image.tag=v1.6.4 \
--set podSecurityContext.runAsUser=null \
--set podSecurityContext.fsGroup=null \
--set securityContext.runAsUser=null
```

Use image v1.6.4 or later on OpenShift. The SCC injects an arbitrary in-range
UID at admission (so `runAsNonRoot` verification always passes there), but
only v1.6.4+ images make the data directory group-0-owned and group-writable
at build time; earlier images assume UID 1000 owns `/app/data` and fail to
write `config.db` under an arbitrary UID.

The Bifrost image supports arbitrary UIDs with group 0: the data directory is
owned by group 0 and group-writable at build time, so the restricted-v2 UID
(with GID 0) can write `config.db` and `logs.db` — no custom SCC or `anyuid` is
Expand Down
10 changes: 9 additions & 1 deletion helm-charts/bifrost/values.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -5054,6 +5054,10 @@
"type": "string",
"description": "Role session name for AssumeRole (can use env. prefix)"
},
"project_id": {
"type": "string",
"description": "Bedrock project ID scoping inference and model listing. Sent as the OpenAI-Project header on the OpenAI-compatible surface and the anthropic-workspace-id header on the native-Anthropic (Claude) surface. When empty, AWS routes to the account's default project (can use env. prefix)"
},
"deployments": {
"type": "object",
"additionalProperties": {
Expand Down Expand Up @@ -5125,6 +5129,10 @@
"session_name": {
"type": "string",
"description": "Role session name for AssumeRole (can use env. prefix)"
},
"project_id": {
"type": "string",
"description": "Bedrock project ID scoping the Mantle sub-surface (OpenAI-compatible gpt-*/Gemma routing) via the OpenAI-Project header. When empty, AWS routes to the account's default project. No effect on the Converse/bedrock-runtime paths (can use env. prefix)"
}
},
"required": ["region"],
Expand Down Expand Up @@ -5192,7 +5200,7 @@
},
"project_id": {
"type": "string",
"description": "Per-alias Vertex project ID override (can use env. prefix)."
"description": "Per-alias project override shared across providers: Vertex uses it as the GCP project; Bedrock and Bedrock Mantle send it as the AWS project via the OpenAI-Project / anthropic-workspace-id header (can use env. prefix)."
Comment thread
coderabbitai[bot] marked this conversation as resolved.
},
"project_number": {
"type": "string",
Expand Down
20 changes: 15 additions & 5 deletions helm-charts/bifrost/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -57,20 +57,28 @@ deploymentLabels: {}
podAnnotations: {}
podLabels: {}

# Pod-level security context. Defaults chown freshly provisioned PVCs (fsGroup)
# and forbid running as root, which vanilla Kubernetes needs for restrictive
# storage classes. On OpenShift (restricted-v2), set `podSecurityContext.fsGroup: null`
# (Helm merges maps, so `{}` would keep this default) — the image supports
# arbitrary UIDs with group 0, so no custom SCC is needed.
# Pod-level security context. Defaults pin UID 1000 and chown freshly
# provisioned PVCs (fsGroup), which vanilla Kubernetes needs for restrictive
# storage classes. runAsUser is also required by kubelet to verify
# runAsNonRoot against images whose USER is non-numeric (bifrost images
# before v1.6.4 use `USER appuser`).
# On OpenShift (restricted-v2), unset the UID pins so the SCC can assign an
# arbitrary UID: set `podSecurityContext.runAsUser: null`,
# `podSecurityContext.fsGroup: null`, and `securityContext.runAsUser: null`
# (Helm merges maps, so explicit `null` is required; `{}` keeps these
# defaults). The image supports arbitrary UIDs with group 0, so no custom
Comment thread
greptile-apps[bot] marked this conversation as resolved.
# SCC is needed.
podSecurityContext:
fsGroup: 1000
runAsUser: 1000
runAsNonRoot: true

securityContext:
capabilities:
drop:
- ALL
readOnlyRootFilesystem: false
runAsUser: 1000
runAsNonRoot: true

service:
Expand Down Expand Up @@ -421,6 +429,7 @@ bifrost:
# region: "us-east-1"
# access_key: "env.AWS_ACCESS_KEY_ID"
# secret_key: "env.AWS_SECRET_ACCESS_KEY"
# project_id: "" # Optional: Bedrock project ID scoping inference and model listing (can use env. prefix)
#
# # AWS Bedrock Mantle example (requires bedrock_mantle_key_config)
# bedrock_mantle:
Expand All @@ -432,6 +441,7 @@ bifrost:
# region: "us-east-1" # Required
# access_key: "env.AWS_ACCESS_KEY_ID"
# secret_key: "env.AWS_SECRET_ACCESS_KEY"
# project_id: "" # Optional: Bedrock project ID sent as the OpenAI-Project header (can use env. prefix)
# # session_token: "env.AWS_SESSION_TOKEN"
# # role_arn: "" # For AssumeRole
# # external_id: ""
Expand Down
Loading