Skip to content

chore: stop preloading the retired language-server images - #112

Merged
Mtze merged 4 commits into
mainfrom
chore/retire-language-server-path
Aug 25, 2026
Merged

chore: stop preloading the retired language-server images#112
Mtze merged 4 commits into
mainfrom
chore/retire-language-server-path

Conversation

@Mtze

@Mtze Mtze commented Aug 25, 2026

Copy link
Copy Markdown
Member

Companion to EduIDE/EduIDE#167, which stops building the language-server images.

Wasted preloading removed

test1, test2, staging and production each pre-pulled four images on every node:

java-17-no-ls, rust-no-ls, langserver-java, langserver-rust

None of those four environments defines an AppDefinition that uses them. This was pulling several GB per node for apps that do not exist. Preload drops from 14 images to 10 per environment.

Also removed from the theia-cloud-combined chart defaults.

The generic sidecar mechanism is unaffected

sidecars on the v1beta11 CRD and in theia-appdefinitions/templates/appdefinition.yaml are untouched. Only the language-server-specific images go.

test3 is deliberately untouched — it needs a decision

test3 is the one environment that actually runs this path, and both of its AppDefinitions are no-ls images:

apps:
  - name: java-17-no-ls   image: ghcr.io/eduide/eduide/java-17-no-ls
      sidecars: [{ name: langserver, image: .../langserver-java }]
  - name: rust-no-ls      image: ghcr.io/eduide/eduide/rust-no-ls
      sidecars: [{ name: langserver, image: .../langserver-rust }]
landingPage:
  appDefinition: "java-17-no-ls"     # <- the default app

Deleting them would leave test3 with zero apps and a default pointing at nothing. That is a question about what test3 is for now, not a deletion — so it is out of this PR.

Separately, additionalApps in test3 already lists java-17-latest, which has no matching AppDefinition — a pre-existing dangling reference worth fixing whichever way test3 goes.

🤖 Generated with Claude Code

Mtze and others added 2 commits August 25, 2026 15:52
Phase 0 cleanup. Every change here is provably inert: rendering the
umbrella chart for all five environments before and after produces
byte-identical output.

Removed:

- deploy.sh. Broken and unreferenced. It used --theia-certificates.x=
  instead of --set (not valid helm syntax, would exit with "unknown
  flag"), read a ./prod/ directory that does not exist in the repo, and
  sourced values files from the repo root that do not exist there
  either. Superseded by GitHub Actions long ago.

- value-reference-files/. A sixth copy of values already present in
  deployments/, referenced by nothing but still being bumped in release
  PRs. theia-cloud-helm-values.yml still pointed at upstream Docker Hub
  images (theiacloud/theia-cloud-operator:1.1.0-next).

- The monitoring: block in all five environment values files. The
  theia-monitoring chart is installed as a separate release with no -f
  values file, and theia-cloud-combined has no monitoring dependency, so
  these keys reached nothing. Verified the chart hardcoded namespace list
  is exactly the union of all five environments first, so nothing was
  silently unmonitored.

- The --set theia-certificates.wildcardCertificate/wildcardKey flags.
  Every environment sets wildcardTLSSecret.enabled=false, so
  wildcard-secret.yaml renders nothing. Confirmed by rendering
  theia-certificates with and without the flags: byte-identical. The
  shared-gateway release still receives the wildcard secrets and is
  untouched.

Kept deliberately:

- theia-prometheus-values.yaml moved to docs/reference/ rather than
  deleted. No workflow installs kube-prometheus-stack, which means that
  stack was installed by hand and this file is the only surviving record
  of how. docs/monitoring-setup.md now says so.

Docs corrected: the README tree listed a theia-metrics/ chart that does
not exist (it is theia-monitoring/) and omitted test2, test3 and both
shared-gateway environments. The workflow header listed
THEIA_KEYCLOAK_REALM / CLIENT_ID / CLIENT_SECRET as required secrets
although none are read anywhere.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019qeiQRFu8xAMRYWPdZewjG
The external language-server path is being retired. test1, test2,
staging and production each pre-pulled four images for it on every node:

  java-17-no-ls, rust-no-ls, langserver-java, langserver-rust

None of those four environments defines an AppDefinition that uses them,
so this was pulling several GB per node for apps that do not exist.
Preload drops from 14 images to 10 per environment.

Also removed from the theia-cloud-combined chart defaults.

test3 is deliberately untouched: it is the one environment that actually
runs the language-server path, and both of its AppDefinitions are
no-ls images, so removing them needs a decision about what test3 is for
rather than a deletion.

The generic sidecar mechanism is unaffected and stays.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019qeiQRFu8xAMRYWPdZewjG
Copilot AI lite review requested due to automatic review settings August 25, 2026 16:03

Copilot AI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@coderabbitai

coderabbitai Bot commented Aug 25, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 37 minutes.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 17d41b36-3707-410d-84f3-96372252582f

📥 Commits

Reviewing files that changed from the base of the PR and between 3581a1d and b795b61.

📒 Files selected for processing (6)
  • charts/theia-cloud-combined/values.yaml
  • deployments/test1.theia-test.artemis.cit.tum.de/values.yaml
  • deployments/test2.theia-test.artemis.cit.tum.de/values.yaml
  • deployments/test3.theia-test.artemis.cit.tum.de/values.yaml
  • deployments/theia-staging.artemis.cit.tum.de/values.yaml
  • deployments/theia.artemis.cit.tum.de/values.yaml

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

test3 existed to exercise the external language-server path. Both of its
AppDefinitions were no-ls images with langserver sidecars, and its default
landing-page app was java-17-no-ls. With that path retired those images
are no longer built, so test3 would have pointed at images that cannot be
pulled.

It now mirrors test1:

  - the theia-appdefinitions override is removed, so it inherits the
    chart default app set (8 apps) exactly as test1 does
  - default landing-page app is java-17-templates-latest
  - additionalApps lists the same 8 entries as test1
  - operator and service are unpinned from pr-70 back to latest
  - preload drops the four pr-70 language-server images, 14 -> 10

Kept, because they are about where test3 runs rather than what it runs:
storageClassName longhorn, sessionsPerUser 10, the test3 hostnames and
gateway section names, and its own branding.

Incidentally fixes a pre-existing dangling reference: additionalApps
offered java-17-latest, which had no AppDefinition under the old
override, so the landing page listed an app that could not launch.

Verified: test3 renders 48 resources with 8 AppDefinitions, matching
test1 exactly (previously 42 and 2), and every app the landing page
offers now resolves to a real AppDefinition in all five environments.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019qeiQRFu8xAMRYWPdZewjG
Copilot AI review requested due to automatic review settings August 25, 2026 16:09

Copilot AI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@Mtze

Mtze commented Aug 25, 2026

Copy link
Copy Markdown
Member Author

Added: test3 normalised to a standard test environment

Now that EduIDE#167 is merged the language-server images are no longer built, so test3 pointing at them would have meant unpullable images. It now mirrors test1.

before after
AppDefinitions 2 (java-17-no-ls, rust-no-ls) 8 (chart defaults, same as test1)
default app java-17-no-ls java-17-templates-latest
control plane pinned pr-70 latest
preload images 14 10
rendered resources 42 48

The theia-appdefinitions override is removed entirely, so test3 inherits the chart defaults exactly as test1 does rather than carrying its own list.

Kept — these are about where test3 runs, not what it runs: storageClassName: longhorn, sessionsPerUser: 10, the test3 hostnames and gateway section names, and its own branding.

Fixes a pre-existing bug

additionalApps offered java-17-latest, which had no AppDefinition under the old override — the landing page listed an app that could not launch. All five environments now cross-check clean:

test1     apps from chart defaults  OK (8 offered, default=java-17-templates-latest)
test2     apps from chart defaults  OK (8 offered, default=java-17-templates-latest)
test3     apps from chart defaults  OK (8 offered, default=java-17-templates-latest)
staging   apps from chart defaults  OK (8 offered, default=java-17-templates-latest)
prod      apps from chart defaults  OK (7 offered, default=java-17-templates-latest)

No no-ls or langserver references remain anywhere in this repo.

Worth confirming before merge

test3 was on pr-70 and a different cluster (longhorn storage) because of the language-server work. With that gone, test3 is now a third environment configured identically to test1 apart from storage class and session limit — worth deciding whether you still want three test environments or would rather retire one.

🤖 Generated with Claude Code

Only conflict was test3 theia-appdefinitions: this branch removes the
override so test3 inherits the chart defaults, main still carried the
no-ls apps. Kept the removal.

Verified afterwards that both sides survived: no language-server
references remain, and the monitoring blocks removed by #111 are still
gone.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019qeiQRFu8xAMRYWPdZewjG
@Mtze
Mtze merged commit bd948df into main Aug 25, 2026
3 of 6 checks passed
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