rstudio / rstudio/helm

`session.image.tag` can conflict with `container-images` in group profiles

Open
#778 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

team: workbench
Dominant language
Markdown
Stars
46
Forks
40
Avg merge
4h 3m
Merged PRs (30d)
6

Description

Description

The Workbench Helm chart unconditionally injects default-container-image into the [*] profile from session.image.tag, with no conditional, no configuration knob, and no escape hatch. This causes a configuration desync when group profiles define their own container-images but do not override default-container-image.

Problem

In configmap-general.yaml, the chart constructs $defaultProfiles with default-container-image set from the session image tag:

$sessionTag := .Values.session.image.tag | default (printf "%s%s" .Values.session.image.tagPrefix $defaultVersion)

This value is injected into [*] unconditionally. The mergeOverwrite at line 95 preserves it unless the user explicitly sets default-container-image in their [*] profile override.

When group profiles (e.g., @clinical, @research) define their own container-images with allow-unknown-images=0, they inherit default-container-image from [*]. The inherited default is not in the group's allowed images, causing authorization errors when users try to start sessions.

Rendered example

Given this values.yaml:

session:
  image:
    repository: "my-ecr-repo"
    tag: "my-session-image"

config:
  profiles:
    launcher.kubernetes.profiles.conf:
      "*":
        allow-unknown-images: 0
        container-images:
          - "my-session-image"
      "@test-group":
        allow-unknown-images: 0
        container-images:
          - "group-specific-image"

helm template renders:

[*]
allow-unknown-images=0
container-images=my-ecr-repo:my-session-image
default-container-image=my-ecr-repo:my-session-image

[@test-group]
allow-unknown-images=0
container-images=group-specific-image

Users in @test-group inherit default-container-image=my-ecr-repo:my-session-image from [*], which is not in their container-images. The launcher API sends this unauthorized default to the UI, and session start fails with an authorization error.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in configmap-general.yaml, especially the $defaultProfiles construction and the mergeOverwrite near line 95, then render the provided values.yaml with helm template. Trace how default-container-image from [*] reaches @test-group when that group defines its own container-images. Done means group profiles with allow-unknown-images=0 no longer receive an unauthorized inherited default.

Written by the indexing model from the issue text.

Assessment

Tech stack
helm, kubernetes
Domain
devops, infrastructure
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.