Skip to main content
Version: Next

ClusterDataPlane

A ClusterDataPlane is a cluster-scoped variant of DataPlane that represents a Kubernetes cluster where application workloads are deployed. Unlike the namespace-scoped DataPlane, a ClusterDataPlane is available across all namespaces, making it suitable for shared infrastructure scenarios where multiple teams or organizations use the same underlying cluster.

OpenChoreo uses agent-based communication where the control plane communicates with the downstream cluster through a WebSocket agent running in the ClusterDataPlane cluster. The cluster agent establishes a secure WebSocket connection to the control plane's cluster gateway.

API Version​

openchoreo.dev/v1alpha1

Resource Definition​

Metadata​

ClusterDataPlanes are cluster-scoped resources (no namespace).

apiVersion: openchoreo.dev/v1alpha1
kind: ClusterDataPlane
metadata:
name: <clusterdataplane-name>

Spec Fields​

FieldTypeRequiredDefaultDescription
planeIDstringNoCR nameIdentifies the logical plane this CR connects to. Must match clusterAgent.planeId Helm value.
clusterAgentClusterAgentConfigYes-Configuration for cluster agent-based communication
gatewayGatewaySpecYes-API gateway configuration for this ClusterDataPlane
imagePullSecretRefs[]stringNo-References to SecretReference resources for image pull secrets
secretStoreRefSecretStoreRefNo-Reference to External Secrets Operator ClusterSecretStore in the ClusterDataPlane
observabilityPlaneRefObservabilityPlaneRefNo-Reference to a ClusterObservabilityPlane resource for monitoring and logging

PlaneID​

The planeID identifies the logical plane this ClusterDataPlane CR connects to. Multiple ClusterDataPlane CRs can share the same planeID to connect to the same physical cluster while maintaining separate configurations.

Validation Rules:

  • Maximum length: 63 characters
  • Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ (lowercase alphanumeric, hyphens allowed)
  • Examples: "prod-cluster", "shared-dataplane", "us-east-1"
PlaneID Consistency

The planeID in the ClusterDataPlane CR must match the clusterAgent.planeId Helm value configured during data plane installation. If not specified, it defaults to the CR name for backwards compatibility.

ClusterAgentConfig​

Configuration for cluster agent-based communication with the downstream cluster. The cluster agent establishes a WebSocket connection to the control plane's cluster gateway.

FieldTypeRequiredDefaultDescription
clientCAValueFromYes-CA certificate to verify the agent's client certificate (base64-encoded PEM)

GatewaySpec​

Gateway configuration for the ClusterDataPlane.

FieldTypeRequiredDefaultDescription
publicVirtualHoststringYes-Public virtual host for external traffic
organizationVirtualHoststringYes-Organization-specific virtual host for internal traffic

SecretStoreRef​

Reference to an External Secrets Operator ClusterSecretStore.

FieldTypeRequiredDefaultDescription
namestringYes-Name of the ClusterSecretStore in the ClusterDataPlane

ObservabilityPlaneRef​

Reference to a ClusterObservabilityPlane for monitoring and logging.

FieldTypeRequiredDefaultDescription
kindstringNoClusterObservabilityPlaneMust be ClusterObservabilityPlane. ClusterDataPlane can only reference cluster-scoped observability planes.
namestringYes-Name of the ClusterObservabilityPlane resource
Resolution Behavior
  • ClusterDataPlane can only reference a ClusterObservabilityPlane (not a namespace-scoped ObservabilityPlane). This is enforced by API validation.
  • If observabilityPlaneRef is omitted, the controller attempts to find a ClusterObservabilityPlane named "default". If no default exists, observability is not configured.
  • If the referenced ClusterObservabilityPlane is not found, the controller returns an error and the ClusterDataPlane will not become ready.

ValueFrom​

Common pattern for referencing secrets or providing inline values. Either secretRef or value should be specified.

FieldTypeRequiredDefaultDescription
secretRefSecretKeyReferenceNo-Reference to a secret key
valuestringNo-Inline value (not recommended for sensitive data)

SecretKeyReference​

Reference to a specific key in a Kubernetes secret.

FieldTypeRequiredDefaultDescription
namestringYes-Name of the secret
namespacestringNo*-Namespace of the secret (required for cluster-scoped resources)
keystringYes-Key within the secret

Status Fields​

FieldTypeDefaultDescription
observedGenerationinteger0The generation observed by the controller
conditions[]Condition[]Standard Kubernetes conditions tracking the ClusterDataPlane state
agentConnectionAgentConnectionStatus-Tracks the status of cluster agent connections

AgentConnectionStatus​

FieldTypeDefaultDescription
connectedbooleanfalseWhether any cluster agent is currently connected
connectedAgentsinteger0Number of cluster agents currently connected
lastConnectedTimetimestamp-When an agent last successfully connected
lastDisconnectedTimetimestamp-When the last agent disconnected
lastHeartbeatTimetimestamp-When the control plane last received any communication from an agent
messagestring-Additional information about the agent connection status

Condition Types​

Common condition types for ClusterDataPlane resources:

  • Ready - Indicates if the ClusterDataPlane is ready to accept workloads
  • Connected - Indicates if connection to the target cluster is established
  • GatewayProvisioned - Indicates if the gateway has been configured

Examples​

Basic ClusterDataPlane Configuration​

This example shows a minimal ClusterDataPlane configuration.

apiVersion: openchoreo.dev/v1alpha1
kind: ClusterDataPlane
metadata:
name: shared-dataplane
spec:
planeID: "shared-cluster"
clusterAgent:
clientCA:
secretRef:
name: cluster-agent-ca
namespace: openchoreo-system
key: ca.crt
gateway:
publicVirtualHost: api.example.com
organizationVirtualHost: internal.example.com
secretStoreRef:
name: vault-backend

ClusterDataPlane with Observability​

This example shows a ClusterDataPlane linked to a ClusterObservabilityPlane for monitoring and logging.

apiVersion: openchoreo.dev/v1alpha1
kind: ClusterDataPlane
metadata:
name: production-dataplane
spec:
planeID: "prod-cluster"
clusterAgent:
clientCA:
secretRef:
name: cluster-agent-ca
namespace: openchoreo-system
key: ca.crt
gateway:
publicVirtualHost: api.prod.example.com
organizationVirtualHost: internal.prod.example.com
secretStoreRef:
name: default
observabilityPlaneRef:
kind: ClusterObservabilityPlane
name: production-observability

Annotations​

ClusterDataPlanes support the following annotations:

AnnotationDescription
openchoreo.dev/display-nameHuman-readable name for UI display
openchoreo.dev/descriptionDetailed description of the ClusterDataPlane