fix(enterprise): carry the provider through, and point cube-cos at the dashboard - #116
Merged
Merged
Conversation
…e dashboard Two failures seen on the 1cc r630, both of which made a working surface look broken with nothing in a log to explain it. Chat reset itself on every re-run. This script renders the whole release, so a value it does not pass back is one helm removes -- and it passed nothing for the provider, so each deploy reset the endpoint to the chart's placeholder and dropped the key. The surface then reported "chat enabled" and failed on the first question. It now reads the key back from the Secret and the URL from the deployment's arguments, exactly as it already does for the TLS and enrollment material, and takes both as arguments so a first install can set them. The read-back is by argument position rather than a jsonpath range piped through grep: the latter silently produced nothing, which carried the key correctly while letting the URL fall back to the placeholder -- a failure that looks identical to not having tried. cube-cos pointed at http://127.0.0.1:8080, which is httpd and answers 403 to everything; nginx serves the dashboard on the control address. A target pointed at loopback looks configured and refuses every request, which presented as a proxied tab showing "403 Forbidden". It now uses the control address this script already resolves for the kubeconfig. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PZ5umjjCedZwWtbAbiMjfj Signed-off-by: Travis Wu <travis.wu@bigstack.co>
The dashboard reached through the web console sent the browser to Keycloak on :10443 of the control address, out of the proxy origin and at an address a remote operator cannot reach. The cube-cos origin now declares that endpoint as a companion: its own origin, on :10443 of the same pinned address, opened by the same session. Same address, so it is another port on the load balancer that already exists rather than a second one. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PZ5umjjCedZwWtbAbiMjfj Signed-off-by: Travis Wu <travis.wu@bigstack.co>
…oard too The dashboard's home page links out to three endpoints on other ports of the control address -- Keycloak (:10443), Skyline (:9999) and the Ceph dashboard (:7443) -- and all three are built in script from the cluster address handed over as a bare string. A browser following one of them left the proxy origin for an address a remote operator cannot reach. All three are now companions of the cube-cos origin, so they share its pinned address, its session and the load balancer it already has. The list is a loop rather than three copies of the same three --set flags. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PZ5umjjCedZwWtbAbiMjfj Signed-off-by: Travis Wu <travis.wu@bigstack.co>
The framework ingress serves the portal under /portal and Keycloak under /auth, and claims nothing at the root, so the origin opened at "/" landed on the ingress's own 404 and read as a target that does not work. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PZ5umjjCedZwWtbAbiMjfj Signed-off-by: Travis Wu <travis.wu@bigstack.co>
traviswu-bigstack
force-pushed
the
travis.wu/provider-and-cos-upstream
branch
from
September 17, 2026 03:09
9590140 to
d43a17d
Compare
traviswu-bigstack
marked this pull request as ready for review
September 17, 2026 03:14
2 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
/kind bug
What
install-advisor.shnow carries the inference provider through a re-run, and points thecube-cosweb-console target at the dashboard instead of loopback.Why
Both were found installing the advisor on the 1cc r630, and both presented as a surface that looks configured and fails anyway.
The provider reset itself on every re-run. This script renders the whole release, so a value it does not pass back is one helm removes — and it passed nothing for the provider. Each deploy reset
provider.urlto the chart's placeholder and dropped the key, after which the UI still reported chat as enabled and every question failed. It now reads the key back from thecube-advisor-secretsSecret and the URL from the deployment's arguments, the same way it already carries the TLS and enrollment material, and accepts both as arguments (7 and 8) so a first install can set them.The URL read-back is a positional lookup in the argument list rather than a jsonpath range piped through grep: the latter silently produced nothing, which carried the key correctly while letting the URL fall back to the placeholder — a failure indistinguishable from not having tried.
cube-cospointed athttp://127.0.0.1:8080. That port is httpd, which answers 403 to everything; nginx serves the dashboard on the control address. A target pointed at loopback looks configured and refuses every request, with nothing in any log to say why — in the browser it presented as the proxied tab showing "403 Forbidden". It now uses the control address the script already resolves for the kubeconfig.The node-side half of the same bug — the seeded default in
sdk_advisor.sh— is in cubecos #1482.Also: the endpoints the dashboard links out to
The
cube-cosorigin now declares three companions on other ports of the same pinned address — Keycloak (:10443), Skyline (:9999) and the Ceph dashboard (:7443). All three are linked from the dashboard's home page and all three are built in script from the cluster address it hands over as a bare string, so a browser following one left the proxy origin for an address a remote operator cannot reach. They share the origin's address, so they are further ports on the load balancer that already exists rather than three more.The proxy-side support is bigstack-oss/cube-ai-advisor#227; the node-side allowlist entry is bigstack-oss/cubecos#1482. Verified in a browser on the r630: the CubeCOS login page renders at
https://10.32.1.61:10443/…, signing in lands onhttps://10.32.1.61/home, and every link on that page is then on10.32.1.61— Skyline and the Ceph dashboard included, both of which render through the proxy.Also: the CMP portal's landing path
The CMP origin now sets
path: /portal. The framework ingress serves the portal under that prefix and Keycloak under/auth, and claims nothing at the root, so the origin opened at/landed on the ingress's own 404.Testing
go test ./...clean.internal/enterprise/assets_test.go: the script reads the key back and says so, and it does not pointcube-cosat loopback.-provider-url https://api.anthropic.com/v1and its key, and chat answered. Thecube-advisor-web-consoleConfigMap readsupstream: https://10.32.1.200for the10.32.1.61origin, and that origin serves the CubeCOS dashboard.Reviewer notes
The helm invocation gained
"${PROVIDER_ARGS[@]}". The array is empty when there is nothing to carry and nothing was passed, so a first install with no provider is unchanged.🤖 Generated with Claude Code
https://claude.ai/code/session_01PZ5umjjCedZwWtbAbiMjfj
Tracked by #117.