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
- class crate.operator.create.CreateCrateSCCSubHandler(namespace, name, ref, context, depends_on=None, run_on_dep_failures=False, operation=None)¶
Bases:
StateBasedSubHandler
- class crate.operator.create.CreateCrateServiceAccountSubHandler(namespace, name, ref, context, depends_on=None, run_on_dep_failures=False, operation=None)¶
Bases:
StateBasedSubHandler
- class crate.operator.create.CreateServicesSubHandler(namespace, name, ref, context, depends_on=None, run_on_dep_failures=False, operation=None)¶
Bases:
StateBasedSubHandler- 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)¶
- class crate.operator.create.CreateSqlExporterConfigSubHandler(namespace, name, ref, context, depends_on=None, run_on_dep_failures=False, operation=None)¶
Bases:
StateBasedSubHandler
- class crate.operator.create.CreateStatefulsetSubHandler(namespace, name, ref, context, depends_on=None, run_on_dep_failures=False, operation=None)¶
Bases:
StateBasedSubHandler- 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:
namespace (
str)name (
str)treat_as_master (
bool)treat_as_data (
bool)cluster_name (
str)node_name (
str)node_name_prefix (
str)total_nodes_count (
int)data_nodes_count (
int)http_port (
int)jmx_port (
int)postgres_port (
int)prometheus_port (
int)transport_port (
int)crate_image (
str)logger (
Logger)kwargs (
Any)
- class crate.operator.create.CreateSystemUserSubHandler(namespace, name, ref, context, depends_on=None, run_on_dep_failures=False, operation=None)¶
Bases:
StateBasedSubHandler
- 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:
- async crate.operator.create.create_crate_control_secret(owner_references, namespace, name, labels, logger)¶
- 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.
- async crate.operator.create.create_crate_service_account(owner_references, namespace, name, labels, logger)¶
Create a ServiceAccount for CrateDB pods.
- 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:
- async crate.operator.create.create_sql_exporter_config(owner_references, namespace, name, labels, logger)¶
- 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:
namespace (
str)name (
str)treat_as_master (
bool)treat_as_data (
bool)cluster_name (
str)node_name (
str)node_name_prefix (
str)total_nodes_count (
int)data_nodes_count (
int)http_port (
int)jmx_port (
int)postgres_port (
int)prometheus_port (
int)transport_port (
int)crate_image (
str)logger (
Logger)
- Return type:
- 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
systemuser who’s credentials are created here.
- crate.operator.create.get_cluster_resource_limits(node_spec, *, resource_type, fallback_key=None)¶
- crate.operator.create.get_cluster_resource_requests(node_spec, *, resource_type, fallback_key=None)¶
- crate.operator.create.get_crate_control_secret(owner_references, name, labels)¶
- 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.
- 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)¶
- crate.operator.create.get_discovery_service(owner_references, name, labels, transport_port, http_port, postgres_port)¶
- crate.operator.create.get_gc_user_secret(owner_references, name, labels)¶
- 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.
- crate.operator.create.get_sql_exporter_config(owner_references, name, labels)¶
- 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:
namespace (
str)name (
str)treat_as_master (
bool)treat_as_data (
bool)cluster_name (
str)node_name (
str)node_name_prefix (
str)total_nodes_count (
int)data_nodes_count (
int)http_port (
int)jmx_port (
int)postgres_port (
int)prometheus_port (
int)transport_port (
int)crate_image (
str)logger (
Logger)
- Return type:
V1StatefulSet
- crate.operator.create.get_statefulset_affinity(name, logger, node_spec)¶
- 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:
- 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)¶
- crate.operator.create.get_statefulset_crate_env(node_spec, jmx_port, prometheus_port, ssl)¶
- crate.operator.create.get_statefulset_crate_env_java_opts(jmx_port, prometheus_port)¶
- crate.operator.create.get_statefulset_crate_volume_mounts(node_spec, ssl)¶
- crate.operator.create.get_statefulset_env_crate_heap(memory, heap_ratio)¶
Generates the environment variable with the explicit heap size in bytes
- crate.operator.create.get_statefulset_init_containers(crate_image)¶
- crate.operator.create.get_statefulset_pvc(owner_references, node_spec)¶
- crate.operator.create.get_statefulset_volumes(name, ssl)¶
- crate.operator.create.get_system_user_secret(owner_references, name, labels)¶
- crate.operator.create.get_tolerations(name, logger, node_spec)¶
- crate.operator.create.get_topology_spread(name, logger)¶