Add AI Workspace and Developer Portal Umbrella Helm Charts - #2898
Conversation
…er Portal UI charts to disallow self-signed certificate mode
|
Warning Review limit reached
Next review available in: 26 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (6)
📝 WalkthroughWalkthroughAdds AI Workspace and Developer Portal umbrella Helm charts with OCI dependencies, shared secret generation, installation guidance, validation and TLS guards, local overrides, and manual GHCR publication workflows. ChangesUmbrella Helm delivery
Estimated code review effort: 4 (Complex) | ~60 minutes Sequence Diagram(s)sequenceDiagram
participant Operator
participant GitHubActions
participant Helm
participant GHCR
participant Kubernetes
Operator->>GitHubActions: dispatch chart release
GitHubActions->>Helm: update versions and resolve dependencies
Helm->>GHCR: push OCI chart
Operator->>Kubernetes: run generate-secrets.sh
Kubernetes->>Kubernetes: create or reuse Secrets
Operator->>Helm: install or upgrade with values-secrets.yaml
Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 5
🧹 Nitpick comments (2)
kubernetes/helm/ai-workspace-helm-chart/generate-secrets.sh (2)
110-113: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick winGenerated admin password only shown via terminal echo.
The one-time-generated
ADMIN_PASSWORDis printed to stdout with no other durable, access-controlled record. Terminal scrollback/shell history/CI logs can retain it in plaintext far longer than intended for a highly-privileged admin credential.
kubernetes/helm/ai-workspace-helm-chart/generate-secrets.sh#L110-L113: in addition to (or instead of) echoing, write the credential to achmod 600local file (e.g.$OUT_FILE-adjacent.admin-credentialsexcluded via.gitignore) so it isn't solely dependent on terminal capture.kubernetes/helm/developer-portal-helm-chart/generate-secrets.sh#L111-L114: apply the same change here.🤖 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 `@kubernetes/helm/ai-workspace-helm-chart/generate-secrets.sh` around lines 110 - 113, The generated ADMIN_PASSWORD is only emitted through terminal output. Update the credential-generation completion block in kubernetes/helm/ai-workspace-helm-chart/generate-secrets.sh at lines 110-113 and kubernetes/helm/developer-portal-helm-chart/generate-secrets.sh at lines 111-114 to also write the username and password to a local, access-controlled credentials file adjacent to OUT_FILE, set its permissions to chmod 600, and ensure the file is excluded from version control; retain or remove the terminal echo as appropriate, but do not leave the credential solely in stdout.
72-144: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winExtract shared logic between the two
generate-secrets.shscripts.Both scripts duplicate the helper functions (
gen_key,secret_exists,secret_has_key,bcrypt_hash), the entire Platform API secret provisioning block (RSA keypair generation, bcrypt admin credential), and the Developer Portal / AI Workspace UI secret blocks almost verbatim. Any future fix to security-sensitive logic (e.g. bcrypt cost factor, key size, admin credential handling) has to be applied twice, and nothing enforces that the two copies stay in sync.
kubernetes/helm/ai-workspace-helm-chart/generate-secrets.sh#L72-L144: extract the helpers and the Platform API/Developer Portal/AI Workspace UI provisioning blocks into a shared sourced file (e.g.kubernetes/helm/_scripts/secrets-common.sh), keeping only the umbrella-specific defaults (RELEASE,DEVELOPER_PORTALdefault, output ordering) in this wrapper.kubernetes/helm/developer-portal-helm-chart/generate-secrets.sh#L73-L143: source the same shared file instead of re-implementing identical logic.🤖 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 `@kubernetes/helm/ai-workspace-helm-chart/generate-secrets.sh` around lines 72 - 144, Extract the duplicated helpers and Platform API, AI Workspace UI, and Developer Portal secret-provisioning logic from kubernetes/helm/ai-workspace-helm-chart/generate-secrets.sh lines 72-144 and kubernetes/helm/developer-portal-helm-chart/generate-secrets.sh lines 73-143 into a shared sourced file such as kubernetes/helm/_scripts/secrets-common.sh. Source that file from both wrappers, retaining only umbrella-specific defaults, RELEASE handling, DEVELOPER_PORTAL defaults, and output ordering in each wrapper; preserve the existing gen_key, secret_exists, secret_has_key, bcrypt_hash, and provisioning behavior.
🤖 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/ai-workspace-helm-release.yml:
- Line 25: Replace the hardcoded REGISTRY_USERNAME in
.github/workflows/ai-workspace-helm-release.yml:25-25 with the configured
repository/environment variable, and add validation before helm registry login
that fails when it is missing. Apply the identical variable and missing-value
validation to .github/workflows/developer-portal-helm-release.yml:25-25,
ensuring neither workflow contains a functional credential default.
In `@kubernetes/helm/ai-workspace-helm-chart/templates/NOTES.txt`:
- Line 31: Update the health URL ternary expressions in
kubernetes/helm/ai-workspace-helm-chart/templates/NOTES.txt lines 31-31 and
kubernetes/helm/developer-portal-helm-chart/templates/NOTES.txt lines 31-31 to
use the apip.platformApi.internalURL helper’s tlsEnabled default, so missing
global.platformApi.tlsEnabled resolves to https consistently with the chart
defaults.
In `@kubernetes/helm/ai-workspace-helm-chart/templates/serviceaccount.yaml`:
- Around line 1-2: Default global.serviceAccount to an empty map before
assigning or reading $sa in both service-account templates:
kubernetes/helm/ai-workspace-helm-chart/templates/serviceaccount.yaml:1-2 and
kubernetes/helm/developer-portal-helm-chart/templates/serviceaccount.yaml:1-2.
Preserve the existing $sa.create, $sa.annotations, and
$sa.automountServiceAccountToken behavior while ensuring
external-service-account-only overrides render safely.
In `@kubernetes/helm/ai-workspace-helm-chart/templates/validation.yaml`:
- Around line 11-15: Update the validation blocks in
kubernetes/helm/ai-workspace-helm-chart/templates/validation.yaml lines 11-15
and kubernetes/helm/developer-portal-helm-chart/templates/validation.yaml lines
11-15 to require the external Platform API URL for each enabled portal
independently: validate $aiwUrl only when AI Workspace is enabled and validate
$dpUrl only when Developer Portal is enabled, while preserving the existing
platform-api.enabled and external-URL failure behavior.
In `@kubernetes/helm/developer-portal-helm-chart/templates/NOTES.txt`:
- Around line 71-77: Update the Developer Portal URL examples in the NOTES
template for the NodePort, LoadBalancer, and port-forward branches to select
HTTP when certificateProvider is none and HTTPS otherwise. Apply the same
protocol selection consistently to each displayed URL while preserving the
existing host, port, and path values.
---
Nitpick comments:
In `@kubernetes/helm/ai-workspace-helm-chart/generate-secrets.sh`:
- Around line 110-113: The generated ADMIN_PASSWORD is only emitted through
terminal output. Update the credential-generation completion block in
kubernetes/helm/ai-workspace-helm-chart/generate-secrets.sh at lines 110-113 and
kubernetes/helm/developer-portal-helm-chart/generate-secrets.sh at lines 111-114
to also write the username and password to a local, access-controlled
credentials file adjacent to OUT_FILE, set its permissions to chmod 600, and
ensure the file is excluded from version control; retain or remove the terminal
echo as appropriate, but do not leave the credential solely in stdout.
- Around line 72-144: Extract the duplicated helpers and Platform API, AI
Workspace UI, and Developer Portal secret-provisioning logic from
kubernetes/helm/ai-workspace-helm-chart/generate-secrets.sh lines 72-144 and
kubernetes/helm/developer-portal-helm-chart/generate-secrets.sh lines 73-143
into a shared sourced file such as kubernetes/helm/_scripts/secrets-common.sh.
Source that file from both wrappers, retaining only umbrella-specific defaults,
RELEASE handling, DEVELOPER_PORTAL defaults, and output ordering in each
wrapper; preserve the existing gen_key, secret_exists, secret_has_key,
bcrypt_hash, and provisioning 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: 009154b7-7b58-4e21-9ad8-dd883391cd70
📒 Files selected for processing (22)
.github/workflows/ai-workspace-helm-release.yml.github/workflows/developer-portal-helm-release.ymlkubernetes/helm/ai-workspace-helm-chart/.helmignorekubernetes/helm/ai-workspace-helm-chart/Chart.yamlkubernetes/helm/ai-workspace-helm-chart/generate-secrets.shkubernetes/helm/ai-workspace-helm-chart/templates/NOTES.txtkubernetes/helm/ai-workspace-helm-chart/templates/serviceaccount.yamlkubernetes/helm/ai-workspace-helm-chart/templates/validation.yamlkubernetes/helm/ai-workspace-helm-chart/values-local.yamlkubernetes/helm/ai-workspace-helm-chart/values.yamlkubernetes/helm/ai-workspace-ui-helm-chart/templates/deployment.yamlkubernetes/helm/ai-workspace-ui-helm-chart/values.yamlkubernetes/helm/developer-portal-helm-chart/.helmignorekubernetes/helm/developer-portal-helm-chart/Chart.yamlkubernetes/helm/developer-portal-helm-chart/generate-secrets.shkubernetes/helm/developer-portal-helm-chart/templates/NOTES.txtkubernetes/helm/developer-portal-helm-chart/templates/serviceaccount.yamlkubernetes/helm/developer-portal-helm-chart/templates/validation.yamlkubernetes/helm/developer-portal-helm-chart/values-local.yamlkubernetes/helm/developer-portal-helm-chart/values.yamlkubernetes/helm/developer-portal-ui-helm-chart/templates/deployment.yamlkubernetes/helm/developer-portal-ui-helm-chart/values.yaml
This pull request introduces initial support for umbrella Helm charts for the AI Workspace and Developer Portal products, including automated release workflows and secret provisioning scripts. The changes enable packaging, publishing, and releasing product-level Helm charts that bundle component charts, and provide tooling for secure, idempotent Kubernetes secret generation.
Related to #2557 and #2560
Helm Umbrella Charts and Release Automation:
.github/workflows/ai-workspace-helm-release.yml)..github/workflows/developer-portal-helm-release.yml).Helm Chart Structure and Metadata:
Chart.yamlfor the AI Workspace umbrella chart, defining its dependencies on the Platform API and AI Workspace UI component charts, along with metadata and maintainers (kubernetes/helm/ai-workspace-helm-chart/Chart.yaml)..helmignorefile to the AI Workspace chart to exclude common local and development files from packaging (kubernetes/helm/ai-workspace-helm-chart/.helmignore).Secret Provisioning and Security:
generate-secrets.shscript for the AI Workspace umbrella chart, which generates and manages Kubernetes secrets for all components, supports Developer Portal provisioning, and outputs a cumulativevalues-secrets.yamlfor Helm installs (kubernetes/helm/ai-workspace-helm-chart/generate-secrets.sh).