This is an automated email from the ASF dual-hosted git repository.

villebro pushed a commit to branch main
in repository 
https://gitbox.apache.org/repos/asf/superset-kubernetes-operator.git


The following commit(s) were added to refs/heads/main by this push:
     new 3197a81  docs: prefer typed featureFlags field and tone down 
landing-page copy (#75)
3197a81 is described below

commit 3197a8156053c8e92be5974dcf7abd5af112bfec
Author: Ville Brofeldt <[email protected]>
AuthorDate: Fri May 22 21:48:41 2026 -0700

    docs: prefer typed featureFlags field and tone down landing-page copy (#75)
    
    * docs: prefer typed featureFlags field and tone down landing-page copy
    
    * more cleanup
---
 README.md                                    |  4 ++--
 docs/architecture/internals.md               |  2 +-
 docs/architecture/overview.md                |  4 ++--
 docs/index.md                                | 16 ++++++++--------
 docs/user-guide/configuration.md             | 12 +++++++-----
 docs/user-guide/migration.md                 |  4 ++--
 docs/user-guide/networking-and-monitoring.md |  2 +-
 7 files changed, 23 insertions(+), 21 deletions(-)

diff --git a/README.md b/README.md
index 38261e5..7ecd5ff 100644
--- a/README.md
+++ b/README.md
@@ -29,7 +29,7 @@ under the License.
 
 A Kubernetes operator for deploying and managing [Apache 
Superset](https://superset.apache.org/) on Kubernetes. Read the 
[documentation](https://apache.github.io/superset-kubernetes-operator/) to get 
started. Built with the Go-based [Operator 
SDK](https://sdk.operatorframework.io/).
 
-The operator is designed to make running Superset on Kubernetes as painless as 
possible. It works well out of the box with production-ready defaults, and 
every default is overridable when you need more control.
+The operator manages the full Superset lifecycle: database migrations, 
configuration rendering, component deployment, scaling, and networking. 
Defaults are tuned for typical deployments; presets, deployment-template 
fields, and a raw Python escape hatch let you override them where needed.
 
 ## Quick Start
 
@@ -60,7 +60,7 @@ spec:
   webServer: {}
 ```
 
-> **Note**: The example above uses `environment: Development` for simplicity. 
In production (the default), use `secretKeyFrom` and `metastore.uriFrom` to 
reference Kubernetes Secrets. See the [User 
Guide](https://apache.github.io/superset-kubernetes-operator/user-guide/configuration/)
 and the [sample manifests](config/samples/) for production-ready examples.
+> **Note**: The example above uses `environment: Development` for simplicity. 
In production (the default), use `secretKeyFrom` and `metastore.uriFrom` to 
reference Kubernetes Secrets. See the [User 
Guide](https://apache.github.io/superset-kubernetes-operator/user-guide/configuration/)
 and the [sample manifests](config/samples/) for production examples.
 
 ## Development
 
diff --git a/docs/architecture/internals.md b/docs/architecture/internals.md
index 9d573d5..e3b2974 100644
--- a/docs/architecture/internals.md
+++ b/docs/architecture/internals.md
@@ -361,7 +361,7 @@ drain, the parent:
 > tunnel to a specific pod, not through the Service selector. When that pod is
 > deleted during drain, the tunnel breaks with a "lost connection to pod" 
 > error.
 > This does not affect Ingress/Gateway users — they route through 
 > EndpointSlices
-> and see seamless transitions. Restart port-forward to reconnect to the
+> and are unaffected. Restart port-forward to reconnect to the
 > maintenance pod.
 
 ### Alternatives Considered
diff --git a/docs/architecture/overview.md b/docs/architecture/overview.md
index ad4cfad..a617f3f 100644
--- a/docs/architecture/overview.md
+++ b/docs/architecture/overview.md
@@ -255,7 +255,7 @@ spec:
       name: db-credentials
       key: password
   config: |
-    FEATURE_FLAGS = {"DASHBOARD_RBAC": True}
+    ROW_LIMIT = 10000
   celeryWorker:
     config: |
       CELERY_ANNOTATIONS = {"tasks.add": {"rate_limit": "10/s"}}
@@ -268,7 +268,7 @@ The celery worker's `superset_config.py` contains all three 
sections:
 SQLALCHEMY_DATABASE_URI = f"postgresql+psycopg2://..."  # assembled from env 
vars
 
 # Base config (spec.config)
-FEATURE_FLAGS = {"DASHBOARD_RBAC": True}
+ROW_LIMIT = 10000
 
 # Component config
 CELERY_ANNOTATIONS = {"tasks.add": {"rate_limit": "10/s"}}
diff --git a/docs/index.md b/docs/index.md
index 4de9853..2378ff6 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -28,14 +28,14 @@ The operator manages the full Superset lifecycle: database 
migrations, configura
 
 ## Features
 
-- **Sane defaults** — production-ready settings out of the box that adapt 
automatically to your workload
-- **Automatic config rendering** — structured fields for metastore, Valkey, 
Gunicorn, and Celery generate correct `superset_config.py` per component; 
config changes trigger rolling restarts
-- **Full control** — every default is overridable, from high-level presets 
down to individual container fields, with a raw Python escape hatch for 
anything not covered
+- **Sensible defaults** — defaults adjust based on the components and presets 
you configure
+- **Automatic config rendering** — structured fields for metastore, Valkey, 
Gunicorn, and Celery generate `superset_config.py` per component; config 
changes trigger rolling restarts
+- **Configurable** — defaults can be overridden at the preset, 
deployment-template, or container level, with a raw Python escape hatch in 
`spec.config`/`spec.<component>.config` for settings not surfaced as typed 
fields
 - **Component toggle** — enable CeleryWorker, CeleryBeat, CeleryFlower, 
WebsocketServer, or McpServer by setting their spec; omit to disable
 - **Maintenance-backed upgrades** — when database migrations need to run, the 
operator drains components, runs the lifecycle tasks, and restores traffic only 
after the new version is healthy; an optional maintenance page can serve users 
during the window when configured
 - **Lifecycle automation** — database cloning, schema migrations, secret key 
rotation, and application init run as sequenced tasks with automatic change 
detection and checksum-based re-execution
 - **Networking** — Gateway API (HTTPRoute) and Ingress support with 
per-component routing
-- **Production hardening** — HPA with custom metrics, PodDisruptionBudgets, 
NetworkPolicies, Prometheus ServiceMonitor
+- **Scaling and resilience** — HPA with custom metrics, PodDisruptionBudgets, 
NetworkPolicies, Prometheus ServiceMonitor
 - **Flexible install scope** — cluster-scoped (default) or namespace-scoped; 
the namespace-scoped Helm install renders no manager `ClusterRole` at all, so 
it works on restricted clusters that forbid cluster-scoped RBAC
 
 ## What it looks like
@@ -58,8 +58,8 @@ spec:
     database: superset
     username: superset
     password: superset
-  config: |
-    FEATURE_FLAGS = {"ENABLE_TEMPLATE_PROCESSING": True}
+  featureFlags:
+    ENABLE_TEMPLATE_PROCESSING: true
   webServer:
     replicas: 2
   mcpServer: {}
@@ -86,8 +86,8 @@ spec:
     uriFrom:
       name: db-credentials
       key: connection-string
-  config: |
-    FEATURE_FLAGS = {"ENABLE_TEMPLATE_PROCESSING": True}
+  featureFlags:
+    ENABLE_TEMPLATE_PROCESSING: true
   webServer:
     replicas: 2
   mcpServer: {}
diff --git a/docs/user-guide/configuration.md b/docs/user-guide/configuration.md
index ef5dd64..62c5663 100644
--- a/docs/user-guide/configuration.md
+++ b/docs/user-guide/configuration.md
@@ -40,8 +40,8 @@ spec:
   secretKey: thisIsNotSecure_changeInProduction!
   metastore:
     uri: postgresql+psycopg2://superset:superset@postgres:5432/superset
-  config: |
-    FEATURE_FLAGS = {"ENABLE_TEMPLATE_PROCESSING": True}
+  featureFlags:
+    ENABLE_TEMPLATE_PROCESSING: true
   webServer: {}
   lifecycle:
     init:
@@ -64,8 +64,10 @@ spec:
     uriFrom:
       name: db-credentials
       key: connection-string
+  featureFlags:
+    DASHBOARD_RBAC: true
+    ALERT_REPORTS: true
   config: |
-    FEATURE_FLAGS = {"DASHBOARD_RBAC": True, "ALERT_REPORTS": True}
     ROW_LIMIT = 10000
   webServer: {}
 ```
@@ -301,8 +303,8 @@ The operator exposes a curated set of knobs as typed CRD 
fields — anything tie
 spec:
   # Base config: appended to ALL Python components
   config: |
-    FEATURE_FLAGS = {"ENABLE_TEMPLATE_PROCESSING": True}
     ROW_LIMIT = 10000
+    LOG_LEVEL = "INFO"
 
   # Component config: appended after base config for this component only
   celeryWorker:
@@ -310,7 +312,7 @@ spec:
       CELERY_ANNOTATIONS = {"tasks.add": {"rate_limit": "10/s"}}
 ```
 
-Both fields are **concatenated**, not mutually exclusive. In this example, the 
celery worker's `superset_config.py` contains the operator-generated configs 
(`SECRET_KEY`, structured DB URI if applicable), then the base config 
(FEATURE_FLAGS, ROW_LIMIT), then the component config (CELERY_ANNOTATIONS). The 
web server receives only the operator-generated configs and the base config, 
since it has no component-specific `config` field set.
+Both fields are **concatenated**, not mutually exclusive. In this example, the 
celery worker's `superset_config.py` contains the operator-generated configs 
(`SECRET_KEY`, structured DB URI if applicable), then the base config 
(`ROW_LIMIT`, `LOG_LEVEL`), then the component config (`CELERY_ANNOTATIONS`). 
The web server receives only the operator-generated configs and the base 
config, since it has no component-specific `config` field set.
 
 See [Config Rendering 
Pipeline](../architecture/overview.md#config-rendering-pipeline) for the full 
rendering order and an example of the generated output.
 
diff --git a/docs/user-guide/migration.md b/docs/user-guide/migration.md
index 04d10cc..2816404 100644
--- a/docs/user-guide/migration.md
+++ b/docs/user-guide/migration.md
@@ -249,8 +249,8 @@ spec:
   valkey:
     host: valkey
     port: 6379
-  config: |
-    FEATURE_FLAGS = {"ALERT_REPORTS": True}
+  featureFlags:
+    ALERT_REPORTS: true
   webServer:
     replicas: 2
   celeryWorker:
diff --git a/docs/user-guide/networking-and-monitoring.md 
b/docs/user-guide/networking-and-monitoring.md
index 10388b3..06b9306 100644
--- a/docs/user-guide/networking-and-monitoring.md
+++ b/docs/user-guide/networking-and-monitoring.md
@@ -129,7 +129,7 @@ subjects:
     namespace: monitoring
 ```
 
-**TLS — out of the box.** The operator generates a self-signed certificate at
+**TLS by default.** The operator generates a self-signed certificate at
 startup, so scrapers connect over HTTPS with `insecureSkipVerify: true`. This
 is the default in both the Kustomize ServiceMonitor 
(`config/prometheus/monitor.yaml`)
 and the Helm chart. It's fine for a trusted cluster but not for

Reply via email to