Skip to content

Commit 90a9ae8

Browse files
committed
docs(enterprise): add Kubernetes Operator Bring-Your-Own-Cluster (BYOC) guide
Documents the operator's managed mode: registration in Spice.ai Cloud, enrollment-token install, identity lifecycle, kubelet metrics TLS options, pause semantics, and troubleshooting for common failure modes. Adds the spice.managedMode Helm values and --managed-mode-* CLI flags to the operator Overview, the managed-mode scrape/export counters to Operator Metrics, and cross-links from the User Guide.
1 parent c0d7941 commit 90a9ae8

5 files changed

Lines changed: 419 additions & 1 deletion

File tree

enterprise/SUMMARY.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
* [Overview](kubernetes/README.md)
3131
* [User Guide](kubernetes/user-guide.md)
32+
* [Bring-Your-Own-Cluster (BYOC)](kubernetes/byoc.md)
3233
* [SpicepodSet](kubernetes/spicepodset.md)
3334
* [SpicepodCluster](kubernetes/spicepodcluster.md)
3435
* [Operator Metrics](kubernetes/metrics.md)

enterprise/kubernetes/README.md

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ The Spice.ai Kubernetes Operator automates the deployment, scaling, and lifecycl
1616

1717
For a step-by-step walkthrough, see the [User Guide](user-guide.md). For exhaustive field references, see [SpicepodSet](spicepodset.md) and [SpicepodCluster](spicepodcluster.md).
1818

19+
The operator can also connect a cluster in your own cloud account to Spice.ai Cloud for centralized deployment and observability — see [Bring-Your-Own-Cluster (BYOC)](byoc.md).
20+
1921
## Installation
2022

2123
### Prerequisites
@@ -66,6 +68,23 @@ Multi-architecture (`linux/amd64` and `linux/arm64`) operator images are also pu
6668
| `namespaces` / `denyNamespaces` | Scope the operator to / away from specific namespaces (mutually exclusive) | (all namespaces) |
6769
| `telemetry.otlp.*` | Push operator metrics to an OTLP collector (see [Operator Metrics](metrics.md)) | disabled |
6870
| `telemetryProperties` | Key/value pairs forwarded to the Spice runtime as telemetry properties | `{}` |
71+
| `spice.managedMode.enabled` | Connect the operator to Spice.ai Cloud ([BYOC managed mode](byoc.md)) | `false` |
72+
| `spice.managedMode.enrollmentToken` | Single-use `spice-enroll-…` token from the Spice.ai Cloud portal (chart stores it in a Secret; persisted in Helm history — prefer `enrollmentTokenSecret` in production) ||
73+
| `spice.managedMode.enrollmentTokenSecret` | Existing Secret holding the enrollment token under the `token` data key ||
74+
| `spice.managedMode.enrollUrl` | Enrollment API base URL (empty = Spice.ai Cloud, `https://api.spice.ai/v1/cloud-connect`) ||
75+
| `spice.managedMode.endpoint` | Gateway address override — required only with a pre-provisioned identity ||
76+
| `spice.managedMode.identitySecret` | Secret the operator **creates** to persist its enrolled identity (do not pre-create) | `spice-byoc-operator-identity` |
77+
| `spice.managedMode.secretNamespace` | Namespace for managed-mode Secrets (empty = operator namespace) ||
78+
| `spice.managedMode.instanceId` | Instance ID — required only with a pre-provisioned identity ||
79+
| `spice.managedMode.mtlsSecret` / `.caSecret` | Pre-provisioned client identity + CA bundle (set together; skips enrollment) ||
80+
| `spice.managedMode.serverCaSecret` | Extra serving-CA trust anchor for a private/self-hosted control plane ||
81+
| `spice.managedMode.heartbeatIntervalSeconds` | Heartbeat cadence | `30` |
82+
| `spice.managedMode.telemetryIntervalSeconds` | Telemetry roll-up cadence | `60` |
83+
| `spice.managedMode.metricsIntervalSeconds` | Managed-instance metrics collection cadence | `30` |
84+
| `spice.managedMode.kubeletCaSecret` | Secret with the CA that signs kubelet serving certificates (mutually exclusive with `kubeletInsecureTls`) ||
85+
| `spice.managedMode.kubeletInsecureTls` | Skip kubelet certificate verification for container resource metrics (mutually exclusive with `kubeletCaSecret`) | `false` |
86+
87+
See [Bring-Your-Own-Cluster (BYOC)](byoc.md) for the full managed-mode setup guide, security model, and troubleshooting.
6988

7089
## Managed Resources
7190

@@ -185,6 +204,28 @@ spiceai-operator crd --output FILE
185204
| `--telemetry-properties KEY=VALUE` | — | Key/value pairs forwarded to the Spice runtime |
186205
| `--verbose` | `false` | Enable debug-level logging |
187206

207+
#### Managed mode (BYOC) flags
208+
209+
These flags configure [Bring-Your-Own-Cluster (BYOC) managed mode](byoc.md). Each flag also reads a matching `SPICEAI_MANAGED_MODE_*` environment variable (for example, `--managed-mode-enabled` reads `SPICEAI_MANAGED_MODE_ENABLED`).
210+
211+
| Flag | Default | Description |
212+
| ---------------------------------------------- | --------------------------------------- | --------------------------------------------------------------------- |
213+
| `--managed-mode-enabled` | `false` | Enable managed mode (outbound mTLS stream to Spice.ai Cloud) |
214+
| `--managed-mode-enroll-url` | `https://api.spice.ai/v1/cloud-connect` | Enrollment API base URL |
215+
| `--managed-mode-enrollment-token-secret` | — | Secret holding the single-use enrollment token (data key `token`) |
216+
| `--managed-mode-endpoint` | — | Gateway address — required only with a pre-provisioned identity |
217+
| `--managed-mode-identity-secret` | `spice-byoc-operator-identity` | Secret the operator creates to persist its enrolled identity |
218+
| `--managed-mode-secret-namespace` | (operator namespace) | Namespace for managed-mode Secrets |
219+
| `--managed-mode-instance-id` | — | Instance ID — required only with a pre-provisioned identity |
220+
| `--managed-mode-mtls-secret` | — | Pre-provisioned client identity Secret (`tls.crt`/`tls.key`) |
221+
| `--managed-mode-ca-secret` | — | Pre-provisioned CA bundle Secret (`ca.crt`; set with `mtls-secret`) |
222+
| `--managed-mode-server-ca-path` | — | Path to an extra serving-CA PEM for a private control plane |
223+
| `--managed-mode-heartbeat-interval-seconds` | `30` | Heartbeat cadence |
224+
| `--managed-mode-telemetry-interval-seconds` | `60` | Telemetry roll-up cadence |
225+
| `--managed-mode-metrics-interval-seconds` | `30` | Managed-instance metrics collection cadence |
226+
| `--managed-mode-kubelet-certificate-authority` | — | Path to the CA that signs kubelet serving certificates |
227+
| `--managed-mode-kubelet-insecure-tls` | `false` | Skip kubelet certificate verification (mutually exclusive with the CA) |
228+
188229
### `json-schema` — Output the OpenAPI v3 JSON schema for the `SpicepodSet` CRD
189230

190231
```bash
@@ -236,4 +277,5 @@ Capabilities in active development and planned for the operator include:
236277
- **Auto-scaling** via `HorizontalPodAutoscaler` and Spiced-specific metrics.
237278
- **Backup & restore** of stateful volumes via `VolumeSnapshot`.
238279
- **Secret rotation** with automatic rolling restarts.
239-
- **Spice Cloud Platform integration** for centralized fleet management and observability.
280+
281+
Spice.ai Cloud integration for centralized fleet management and observability has shipped as [Bring-Your-Own-Cluster (BYOC) managed mode](byoc.md).

0 commit comments

Comments
 (0)