Skip to content
Open
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
22 changes: 22 additions & 0 deletions .cursor/skills/console-operator-crd-docs/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
name: console-operator-crd-docs
description: Regenerates and synchronizes Console operator CRD documentation. Use whenever editing CRD definitions under go/controller/api.
---

# Console Operator CRD Documentation

After updating Console operator CRD definitions under `go/controller/api`, run both documentation steps.

First, regenerate the CRD reference from `go/controller/`:

```bash
make codegen-crd-docs
```

Then synchronize the generated reference into the documentation site from the repository root:

```bash
make documentation-sync
```

Include changes to both `go/controller/docs/api.md` and `js/documentation/pages/api-reference/kubernetes/management-api-reference.md` with the CRD update.
1 change: 1 addition & 0 deletions .github/workflows/helm-test-ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ on:
paths:
- ".github/workflows/helm-test-ci.yaml"
- "go/helm-test/**"
- "charts/controller/**"
- "charts/console/**"
- "charts/console-rapid/**"
permissions:
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/helm.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ jobs:
chart:
- charts/console
- charts/console-rapid
- charts/controller
steps:
- name: Checkout
uses: actions/checkout@v6
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
ARG TOOLS_IMAGE=${OS_VARIANT}:${OS_VERSION}
ARG RUNNER_IMAGE=alpine:3.23.4 # TODO: change back to ${OS_VARIANT}:${OS_VERSION}

FROM node:24.11.1-alpine as node

Check warning on line 8 in Dockerfile

View workflow job for this annotation

GitHub Actions / Test Build Docker image

The 'as' keyword should match the case of the 'from' keyword

FromAsCasing: 'as' and 'FROM' keywords' casing do not match More info: https://docs.docker.com/go/dockerfile/rule/from-as-casing/

WORKDIR /app

Expand All @@ -22,12 +22,12 @@
COPY js/console/ ./console/
COPY js/design-system/ ./design-system/

ARG VITE_PROD_SECRET_KEY

Check warning on line 25 in Dockerfile

View workflow job for this annotation

GitHub Actions / Test Build Docker image

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "VITE_PROD_SECRET_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/
ARG VITE_SENTRY_DSN
ARG SENTRY_AUTH_TOKEN

Check warning on line 27 in Dockerfile

View workflow job for this annotation

GitHub Actions / Test Build Docker image

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "SENTRY_AUTH_TOKEN") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/
ARG GIT_COMMIT

ENV VITE_PROD_SECRET_KEY=${VITE_PROD_SECRET_KEY} \

Check warning on line 30 in Dockerfile

View workflow job for this annotation

GitHub Actions / Test Build Docker image

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "SENTRY_AUTH_TOKEN") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 30 in Dockerfile

View workflow job for this annotation

GitHub Actions / Test Build Docker image

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "VITE_PROD_SECRET_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/
VITE_GIT_COMMIT=${GIT_COMMIT} \
VITE_SENTRY_DSN=${VITE_SENTRY_DSN} \
SENTRY_AUTH_TOKEN=${SENTRY_AUTH_TOKEN}
Expand Down Expand Up @@ -84,10 +84,10 @@

RUN mix do db.certs, agent.chart, sentry.package_source_code, release

FROM alpine:3.21.3 as tools

Check warning on line 87 in Dockerfile

View workflow job for this annotation

GitHub Actions / Test Build Docker image

The 'as' keyword should match the case of the 'from' keyword

FromAsCasing: 'as' and 'FROM' keywords' casing do not match More info: https://docs.docker.com/go/dockerfile/rule/from-as-casing/

ARG TARGETARCH=amd64
ENV CLI_VERSION=v0.12.63
ENV CLI_VERSION=v0.12.64

COPY AGENT_VERSION AGENT_VERSION

Expand Down Expand Up @@ -148,4 +148,4 @@

EXPOSE 4000 6000 4369 50051

CMD mkdir -p /tmp/sqlite; /opt/app/bin/console start

Check warning on line 151 in Dockerfile

View workflow job for this annotation

GitHub Actions / Test Build Docker image

JSON arguments recommended for ENTRYPOINT/CMD to prevent unintended behavior related to OS signals

JSONArgsRecommended: JSON arguments recommended for CMD to prevent unintended behavior related to OS signals More info: https://docs.docker.com/go/dockerfile/rule/json-args-recommended/
Binary file modified charts/console-rapid/charts/controller-0.0.209.tgz
Binary file not shown.
Binary file modified charts/console/charts/controller-0.0.209.tgz
Binary file not shown.
5 changes: 5 additions & 0 deletions charts/console/templates/kas/configmap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,9 @@ data:
listen:
address: ":{{ .Values.kas.service.privateApiPort }}"
authentication_secret_file: "/etc/kas/.privateapi_secret"
{{- if .Values.console.tls.enabled }}
plural_url: "https://console.{{ .Release.Namespace }}:{{ .Values.service.port }}/gql"
plural_insecure_skip_tls_verify: true
{{- else }}
plural_url: "https://{{ .Values.kas.consoleUrl }}/gql"
{{- end }}
5 changes: 5 additions & 0 deletions charts/console/templates/kas/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,12 @@ spec:
- --disable-csrf-protection
- --cluster-context-enabled=true
- --insecure-bind-address=0.0.0.0
{{- if .Values.console.tls.enabled }}
- --token-exchange-endpoint=https://$(CONSOLE_HOST)/v1/dashboard/cluster
- --token-exchange-skip-tls-verify
{{- else }}
- --token-exchange-endpoint=http://$(CONSOLE_HOST)/v1/dashboard/cluster
{{- end }}
env:
- name: KAS_HOST
valueFrom:
Expand Down
6 changes: 6 additions & 0 deletions charts/console/templates/secrets.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,9 @@ data:
{{ if .Values.console.config.tarballQps }}
CONSOLE_TARBALL_QPS: {{ .Values.console.config.tarballQps | toString | b64enc | quote }}
{{ end }}
{{ if .Values.console.config.maxRequestBodyLength }}
CONSOLE_MAX_REQUEST_BODY_LENGTH: {{ .Values.console.config.maxRequestBodyLength | toString | b64enc | quote }}
{{ end }}
{{ if .Values.console.config.cacheAgentQps }}
CONSOLE_CACHE_AGENT_QPS: {{ .Values.console.config.cacheAgentQps | toString | b64enc | quote }}
{{ end }}
Expand All @@ -73,6 +76,9 @@ data:
{{ if .Values.console.config.healthmapClusterCount }}
CONSOLE_HEALTHMAP_CLUSTER_COUNT: {{ .Values.console.config.healthmapClusterCount | toString | b64enc | quote }}
{{ end }}
{{ if .Values.console.config.tracing.endpoint }}
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: {{ .Values.console.config.tracing.endpoint | b64enc | quote }}
{{ end }}
{{ range $key, $value := $extraSecretEnv }}
{{ $key }}: {{ $value | b64enc | quote }}
{{ end }}
Expand Down
13 changes: 13 additions & 0 deletions charts/console/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,10 @@ console:
# tarballQps configures the global QPS limit for digest and git tarball endpoints.
tarballQps: 100

# maxRequestBodyLength configures the maximum HTTP request body size in bytes.
# Leave unset to use the application default (100000000). Raise this if stack state uploads return 413.
maxRequestBodyLength: ~

# cacheAgentQps configures the global QPS limit for pod-local cache agents.
cacheAgentQps: ~

Expand All @@ -142,6 +146,12 @@ console:
# healthmapClusterCount configures the number of clusters to show in the healthmap.
healthmapClusterCount: ~

# tracing configures OpenTelemetry trace export from the Console.
tracing:
# endpoint is the full OTLP/HTTP traces endpoint. Leave unset to disable tracing.
# Example: http://otel-collector.observability:4318/v1/traces
endpoint: ~

# rdsIamAuthentication is used to configure whether rds iam authentication should be enabled for all db connections. Ensure your database is prepared to handle IAM authentication before enabling here.
rdsIamAuthentication: false

Expand Down Expand Up @@ -580,6 +590,9 @@ provider: custom
# controller is used in Chart.yaml to determine if controller dependency should be installed
controller:
enabled: true
console:
tls:
enabled: false

# flux2 is used to override some values in flux2 default chart (packaged in charts/flux2-2.14.0.tgz). See https://github.com/fluxcd-community/helm-charts/blob/main/charts/flux2/values.yaml
flux2:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,15 @@ spec:
description: EmbeddingModel is the Bedrock model or inference
profile for embeddings. Same ID formats as modelId.
type: string
endpoint:
default: RUNTIME
description: |-
Endpoint selects the AWS Bedrock API surface. RUNTIME (the default) uses InvokeModel or
Converse on bedrock-runtime; MANTLE uses the Bedrock Mantle Anthropic/OpenAI-compatible APIs.
enum:
- RUNTIME
- MANTLE
type: string
modelId:
description: |-
ModelID is the primary AWS Bedrock model or inference profile identifier.
Expand Down
69 changes: 69 additions & 0 deletions charts/controller/crds/deployments.plural.sh_workbenchtools.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1727,6 +1727,74 @@ spec:
required:
- url
type: object
victoriaLogs:
description: VictoriaLogs connection (logs).
properties:
accountId:
description: Optional AccountID tenant header.
type: string
passwordSecretRef:
description: Reference to a secret key containing the basic
auth password.
properties:
key:
description: The key of the secret to select from. Must
be a valid secret key.
type: string
name:
default: ""
description: |-
Name of the referent.
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: Specify whether the Secret or its key must
be defined
type: boolean
required:
- key
type: object
x-kubernetes-map-type: atomic
projectId:
description: Optional ProjectID tenant header.
type: string
tokenSecretRef:
description: Reference to a secret key containing the bearer
token or api key.
properties:
key:
description: The key of the secret to select from. Must
be a valid secret key.
type: string
name:
default: ""
description: |-
Name of the referent.
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: Specify whether the Secret or its key must
be defined
type: boolean
required:
- key
type: object
x-kubernetes-map-type: atomic
url:
description: VictoriaLogs base URL.
type: string
username:
description: Basic auth username.
type: string
required:
- url
type: object
type: object
mcpServerRef:
description: The mcp server for this tool.
Expand Down Expand Up @@ -1917,6 +1985,7 @@ spec:
- CLOUD_RUN
- AZURE_FUNCTION
- DOCKER
- VICTORIA_LOGS
type: string
required:
- tool
Expand Down
6 changes: 5 additions & 1 deletion charts/controller/templates/deployment.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{{ $consoleUrl := .Values.consoleUrl | default (printf "http://console.%s:4000" .Release.Namespace) }}
{{ $consoleScheme := ternary "https" "http" .Values.console.tls.enabled }}
{{ $consoleUrl := .Values.consoleUrl | default (printf "%s://console.%s:4000" $consoleScheme .Release.Namespace) }}
apiVersion: apps/v1
kind: Deployment
metadata:
Expand Down Expand Up @@ -36,6 +37,9 @@ spec:
- args:
{{- toYaml .Values.controllerManager.manager.args | nindent 8 }}
- --console-url={{ $consoleUrl }}/gql
{{- if .Values.console.tls.enabled }}
- --console-insecure-skip-tls-verify
{{- end }}
- --console-token=$(CONSOLE_TOKEN)
command:
- /manager
Expand Down
55 changes: 37 additions & 18 deletions charts/controller/templates/manager-rbac.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,37 +5,56 @@ metadata:
labels:
app.kubernetes.io/part-of: plural-deployment-controller
{{- include "controller.labels" . | nindent 4 }}
{{- $coreRules := list .Values.rbac.configMapsAndNamespaces .Values.rbac.secrets }}
{{- range $rule := $coreRules }}
{{- if or (has "*" $rule.resources) (has "*" $rule.verbs) }}
{{- fail "RBAC resources and verbs must be explicitly enumerated; wildcards are not allowed" }}
{{- end }}
{{- end }}
{{- $deploymentsRule := .Values.rbac.deploymentsPlural }}
{{- if or
(has "*" $deploymentsRule.resources)
(has "*" $deploymentsRule.verbs)
(has "*" $deploymentsRule.finalizerVerbs)
(has "*" $deploymentsRule.statusVerbs)
}}
{{- fail "RBAC resources and verbs must be explicitly enumerated; wildcards are not allowed" }}
{{- end }}
rules:
- apiGroups:
- ""
resources:
- configmaps
- namespaces
{{ toYaml .Values.rbac.configMapsAndNamespaces.resources | indent 2 }}
verbs:
- get
- list
- patch
- update
- watch
- create
{{ toYaml .Values.rbac.configMapsAndNamespaces.verbs | indent 2 }}
- apiGroups:
- ""
resources:
- secrets
{{ toYaml .Values.rbac.secrets.resources | indent 2 }}
verbs:
- get
- list
- patch
- update
- watch
- create
- delete
{{ toYaml .Values.rbac.secrets.verbs | indent 2 }}
- apiGroups:
- deployments.plural.sh
resources:
- '*'
{{ toYaml $deploymentsRule.resources | indent 2 }}
verbs:
- '*'
{{ toYaml $deploymentsRule.verbs | indent 2 }}
- apiGroups:
- deployments.plural.sh
resources:
{{- range $resource := $deploymentsRule.resources }}
- {{ $resource }}/finalizers
{{- end }}
verbs:
{{ toYaml $deploymentsRule.finalizerVerbs | indent 2 }}
- apiGroups:
- deployments.plural.sh
resources:
{{- range $resource := $deploymentsRule.resources }}
- {{ $resource }}/status
{{- end }}
verbs:
{{ toYaml $deploymentsRule.statusVerbs | indent 2 }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
Expand Down
Loading
Loading