crate.operator.create module

class crate.operator.create.CreateCrateControlSubHandler(namespace, name, ref, context, depends_on=None, run_on_dep_failures=False, operation=None)

Bases: StateBasedSubHandler

Parameters:
async handle(namespace, name, owner_references, cratedb_labels, logger, **kwargs)
Parameters:
class crate.operator.create.CreateCrateSCCSubHandler(namespace, name, ref, context, depends_on=None, run_on_dep_failures=False, operation=None)

Bases: StateBasedSubHandler

Parameters:
async handle(namespace, name, logger, **kwargs)
Parameters:
class crate.operator.create.CreateCrateServiceAccountSubHandler(namespace, name, ref, context, depends_on=None, run_on_dep_failures=False, operation=None)

Bases: StateBasedSubHandler

Parameters:
async handle(namespace, name, owner_references, cratedb_labels, logger, **kwargs)
Parameters:
class crate.operator.create.CreateServicesSubHandler(namespace, name, ref, context, depends_on=None, run_on_dep_failures=False, operation=None)

Bases: StateBasedSubHandler

Parameters:
async handle(namespace, name, owner_references, cratedb_labels, http_port, postgres_port, transport_port, dns_record, logger, source_ranges=None, additional_annotations=None, exposure='loadbalancer', **kwargs)
Parameters:
class crate.operator.create.CreateSqlExporterConfigSubHandler(namespace, name, ref, context, depends_on=None, run_on_dep_failures=False, operation=None)

Bases: StateBasedSubHandler

Parameters:
async handle(namespace, name, owner_references, cratedb_labels, logger, **kwargs)
Parameters:
class crate.operator.create.CreateStatefulsetSubHandler(namespace, name, ref, context, depends_on=None, run_on_dep_failures=False, operation=None)

Bases: StateBasedSubHandler

Parameters:
async handle(namespace, name, owner_references, cratedb_labels, treat_as_master, treat_as_data, cluster_name, node_name, node_name_prefix, node_spec, master_nodes, total_nodes_count, data_nodes_count, http_port, jmx_port, postgres_port, prometheus_port, transport_port, crate_image, ssl, cluster_settings, image_pull_secrets, cloud_settings, logger, **kwargs)
Parameters:
class crate.operator.create.CreateSystemUserSubHandler(namespace, name, ref, context, depends_on=None, run_on_dep_failures=False, operation=None)

Bases: StateBasedSubHandler

Parameters:
async handle(namespace, name, owner_references, cratedb_labels, logger, **kwargs)
Parameters:
crate.operator.create.build_cratedb_labels(name, meta, component='cratedb', label_name=None)

Build Kubernetes labels for CrateDB resources, ensuring the operator can identify and manage them reliably.

Parameters:
  • name (str) – The CrateDB custom resource name defining the CrateDB cluster.

  • meta (Dict[str, Any]) – Metadata dictionary from which existing labels will be merged.

  • component (str) – The component name to set in the labels (default: “cratedb”).

  • label_name (Optional[str]) – Optional label for ‘app.kubernetes.io/name’ (defaults to name).

Return type:

Dict[str, Any]

async crate.operator.create.create_crate_control_secret(owner_references, namespace, name, labels, logger)
Parameters:
Return type:

None

async crate.operator.create.create_crate_scc(namespace, name, logger)

Create a SecurityContextConstraint for CrateDB on OpenShift.

This SCC allows running as any UID (including root) and the SYS_CHROOT capability.

Security Note: While this allows starting as root, the CrateDB entrypoint immediately uses chroot to drop privileges to UID 1000 (crate user). This maintains security while being compatible with OpenShift’s restricted environment.

Parameters:
Return type:

None

async crate.operator.create.create_crate_service_account(owner_references, namespace, name, labels, logger)

Create a ServiceAccount for CrateDB pods.

Parameters:
Return type:

None

async crate.operator.create.create_services(owner_references, namespace, name, labels, http_port, postgres_port, transport_port, dns_record, logger, source_ranges=None, additional_annotations=None, use_traefik=False)
Parameters:
Return type:

None

async crate.operator.create.create_sql_exporter_config(owner_references, namespace, name, labels, logger)
Parameters:
Return type:

None

async crate.operator.create.create_statefulset(owner_references, namespace, name, labels, treat_as_master, treat_as_data, cluster_name, node_name, node_name_prefix, node_spec, master_nodes, total_nodes_count, data_nodes_count, http_port, jmx_port, postgres_port, prometheus_port, transport_port, crate_image, ssl, cluster_settings, image_pull_secrets, cloud_settings, logger)
Parameters:
Return type:

None

async crate.operator.create.create_system_user(owner_references, namespace, name, labels, logger)

The CrateDB Operator will need to perform operations on the CrateDB cluster. For that, it will use a system user who’s credentials are created here.

Parameters:
Return type:

None

crate.operator.create.get_cluster_resource_limits(node_spec, *, resource_type, fallback_key=None)
Parameters:
crate.operator.create.get_cluster_resource_requests(node_spec, *, resource_type, fallback_key=None)
Parameters:
crate.operator.create.get_crate_control_secret(owner_references, name, labels)
Parameters:
Return type:

V1Secret

crate.operator.create.get_crate_control_service(owner_references, name, namespace, labels, port=5050)

Create a headless service that exposes the crate-control sidecar of a single CrateDB pod.

Parameters:
Return type:

V1Service

crate.operator.create.get_data_service(owner_references, name, labels, http_port, postgres_port, dns_record, source_ranges=None, additional_annotations=None, use_traefik=False)
Parameters:
Return type:

V1Service

crate.operator.create.get_discovery_service(owner_references, name, labels, transport_port, http_port, postgres_port)
Parameters:
Return type:

V1Service

crate.operator.create.get_gc_user_secret(owner_references, name, labels)
Parameters:
Return type:

V1Secret

crate.operator.create.get_owner_references(name, meta)

Create owner references with blockOwnerDeletion set based on cloud provider.

OpenShift’s StatefulSet controller doesn’t have permission to set finalizers on PVCs, so we disable blockOwnerDeletion in that environment.

Parameters:
Return type:

List[V1OwnerReference]

crate.operator.create.get_sql_exporter_config(owner_references, name, labels)
Parameters:
Return type:

V1ConfigMap

crate.operator.create.get_statefulset(owner_references, namespace, name, labels, treat_as_master, treat_as_data, cluster_name, node_name, node_name_prefix, node_spec, master_nodes, total_nodes_count, data_nodes_count, http_port, jmx_port, postgres_port, prometheus_port, transport_port, crate_image, ssl, cluster_settings, image_pull_secrets, cloud_settings, logger)
Parameters:
Return type:

V1StatefulSet

crate.operator.create.get_statefulset_affinity(name, logger, node_spec)
Parameters:
Return type:

Optional[V1Affinity]

crate.operator.create.get_statefulset_containers(node_spec, http_port, jmx_port, postgres_port, prometheus_port, transport_port, crate_image, crate_command, crate_env, crate_volume_mounts, name, has_ssl)
Parameters:
  • node_spec (Dict[str, Any])

  • http_port (int)

  • jmx_port (int)

  • postgres_port (int)

  • prometheus_port (int)

  • transport_port (int)

  • crate_image (str)

  • crate_command (List[str])

  • crate_env (List[V1EnvVar])

  • crate_volume_mounts (List[V1VolumeMount])

  • name (str)

  • has_ssl (bool)

Return type:

List[V1Container]

crate.operator.create.get_statefulset_crate_command(*, namespace, name, master_nodes, total_nodes_count, data_nodes_count, crate_node_name_prefix, cluster_name, node_name, node_spec, cluster_settings, has_ssl, is_master, is_data, crate_version, cloud_settings)
Parameters:
Return type:

List[str]

crate.operator.create.get_statefulset_crate_env(node_spec, jmx_port, prometheus_port, ssl)
Parameters:
Return type:

List[V1EnvVar]

crate.operator.create.get_statefulset_crate_env_java_opts(jmx_port, prometheus_port)
Parameters:
  • jmx_port (int)

  • prometheus_port (int)

Return type:

List[str]

crate.operator.create.get_statefulset_crate_volume_mounts(node_spec, ssl)
Parameters:
Return type:

List[V1VolumeMount]

crate.operator.create.get_statefulset_env_crate_heap(memory, heap_ratio)

Generates the environment variable with the explicit heap size in bytes

Parameters:
Return type:

V1EnvVar

crate.operator.create.get_statefulset_init_containers(crate_image)
Parameters:

crate_image (str)

Return type:

List[V1Container]

crate.operator.create.get_statefulset_pvc(owner_references, node_spec)
Parameters:
Return type:

List[V1PersistentVolumeClaim]

crate.operator.create.get_statefulset_volumes(name, ssl)
Parameters:
Return type:

List[V1Volume]

crate.operator.create.get_system_user_secret(owner_references, name, labels)
Parameters:
Return type:

V1Secret

crate.operator.create.get_tolerations(name, logger, node_spec)
Parameters:
Return type:

Optional[List[V1Toleration]]

crate.operator.create.get_topology_spread(name, logger)
Parameters:
Return type:

Optional[List[V1TopologySpreadConstraint]]

crate.operator.create.is_shared_resources_cluster(node_spec)
Parameters:

node_spec (Dict[str, Any])

Return type:

bool

async crate.operator.create.recreate_services(namespace, name, spec, meta, logger)
Parameters: