Gres

API group/version: crabka.io/v1alpha1

Spec

FieldTypeRequiredDefaultDescription
activatorobjectnoWake activator deployment and runtime policy.
activator.clientDispatchQueueCapacityintegernoKafka client request-dispatch queue capacity.
activator.clientFrameMaxstringnoMaximum accepted Kafka client frame size.
activator.coldStartTimeoutstringnoMaximum duration to hold one cold-starting connection.
activator.imagestringnoContainer image override. When absent, the operator uses its global activator image override or its compiled default.
activator.readinessProbePeriodSecondsintegernoActivator readiness probe period in seconds.
activator.registryPollstringnoRegistry readiness polling interval.
activator.replicasintegernoNumber of activator replicas.
balancerobjectnoDry-run Gres balancer planning knobs. The operator does not yet do live execution, and this is on purpose.
balancer.enabledbooleannotrueEnable dry-run planning status for this fleet.
balancer.goalsobjectno{"disabledGoals":[]}Per-goal enablement knobs.
balancer.goals.disabledGoalsarrayno[]Goals disabled for dry-run planning. Omit a goal to leave it enabled.
balancer.planSnapshotobjectnoOptional dry-run plan snapshot supplied to the operator for status reporting. The operator never executes these operations.
balancer.planSnapshot.operationsarrayyesOperations emitted by the planner for the observed registry snapshot.
balancer.registryLayoutobjectno{"transactionalRegistryProtocol":false}Explicit capability declaration for Kafka's transactional registry protocol. This protocol does not make any physical Move, Split, or Merge operation executable. The operator reports plans only.
balancer.registryLayout.transactionalRegistryProtocolbooleannofalseKafka transactional registry protocol is configured and available for metadata transactions only. Physical range operations remain unavailable.
balancer.thresholdsobjectno{"cooldownEpochs":2,"loadSkewHysteresis":"25%","maxOperations":32,"mergeFloor":"64MiB","sizeCeiling":"1GiB","splitStrideRows":1000000}Threshold and cooldown knobs used by future live planner input.
balancer.thresholds.cooldownEpochsintegeryesEpoch count that suppresses repeated operation kinds.
balancer.thresholds.loadSkewHysteresisstringyesLoad skew tolerated before move planning.
balancer.thresholds.maxOperationsintegeryesMaximum operations in one dry-run plan.
balancer.thresholds.maxRangesPerComputeintegernoOptional maximum ranges per compute.
balancer.thresholds.mergeFloorstringyesMerge adjacent ranges below this combined size.
balancer.thresholds.sizeCeilingstringyesSplit ranges larger than this size.
balancer.thresholds.splitStrideRowsintegeryesRow stride used when a range has no upper bound.
computeobjectnoTenant compute workload policy.
compute.checkpointDeleteRecordsTimeoutstringnoKafka DeleteRecords timeout.
compute.checkpointPartSizestringnoMaximum checkpoint object part size.
compute.checkpointPollIntervalstringnoCheckpoint threshold polling interval.
compute.checkpointRetainintegernoNumber of checkpoint manifests to retain.
compute.clientDispatchQueueCapacityintegernoKafka client request-dispatch queue capacity.
compute.clientFrameMaxstringnoMaximum accepted Kafka client frame size.
compute.durableInspectionFoldMaxRecordsintegernoMaximum records materialized by one durable inspection.
compute.durableInspectionFoldMaxSizestringnoMaximum data materialized by one durable inspection.
compute.durableInspectionTimeoutstringnoDeadline for one durable record inspection.
compute.fdwBrokerDnsTimeoutstringnoTimeout for resolving Kafka broker hostnames used by the FDW.
compute.fdwConnectTimeoutstringnoFDW broker TCP connection timeout.
compute.fdwFetchMaxWaitstringnoMaximum time a broker may hold one FDW fetch.
compute.fdwFetchMinstringnoMinimum response size for FDW Kafka fetches.
compute.fdwFetchPartitionMaxstringnoMaximum bytes returned for one FDW partition fetch.
compute.fdwRequestTimeoutstringnoFDW broker request timeout.
compute.fdwSchemaFetchPollstringnoPoll cadence while awaiting a cold FDW writer schema.
compute.fdwSchemaFetchTimeoutstringnoTotal deadline for resolving a cold FDW writer schema.
compute.idleSuspendPollIntervalstringnoIdle-suspend polling interval.
compute.lifecycleRequeuestringnoTenant lifecycle reconciliation interval.
compute.pgexecBlockingQueryMemorystringnoMemory retained by one blocking query operator.
compute.pgexecJoinBroadcastThresholdstringnoLargest estimated join input eligible for broadcast.
compute.pgexecNotifyQueueCapacityintegernoPer-session LISTEN/NOTIFY queue capacity.
compute.pgexecResultPageMaxstringnoMaximum encoded size of one result page.
compute.pgexecRowidReservationintegernoDurable internal row-ID reservation size.
compute.pgexecTsGcFloorLagstringnoLag retained behind the timestamp GC floor.
compute.pgexecTsPruneVersionsPerRowintegernoMaximum timestamp versions pruned per written row.
compute.pgexecXidReservationintegernoDurable XID reservation size.
compute.pgkvMaxMemtableSizestringnoMaximum active memtable size for each on-disk substrate cache.
compute.pgkvRotateAfterOpsintegernoCommitted operations between requested substrate-cache memtable rotations.
compute.pgwireMaxMessageSizestringnoMaximum accepted PostgreSQL frontend message size.
compute.range0BarrierReplyBudgetstringnoWhole-reply budget for range-0 barriers.
compute.range0FollowerPollIntervalstringnoPeriodic range-0 follower refresh cadence.
compute.range0FollowerRebuildBackoffCeilingstringnoMaximum delay between consecutive range-0 follower rebuilds.
compute.range0FollowerRebuildBackoffFloorstringnoInitial delay before retrying consecutive range-0 follower rebuilds.
compute.range0WaitTimeoutstringnoRange-0 catch-up wait timeout.
compute.rangeCrossRangeLockWaitCapstringnoLock-wait cap for cross-range transactions.
compute.rangeDecisionReleaseLagRetriesintegernoDecision-release lag retry count.
compute.rangeDecisionReleaseRetryBackoffstringnoDecision-release retry backoff.
compute.rangeDurableInspectMaxRecordsintegernoDurable range-inspection record ceiling.
compute.rangeDurableInspectMaxSizestringnoDurable range-inspection byte ceiling.
compute.rangeHlcHorizonHeadroomstringnoWall-clock headroom persisted by the HLC oracle.
compute.rangeJoinBroadcastRowsintegernoMaximum materialized broadcast rows.
compute.rangeJoinKeyColumnsintegernoMaximum distributed join key columns.
compute.rangeJoinPredicatesintegernoMaximum predicates per distributed join side.
compute.rangeJoinProjectionColumnsintegernoMaximum distributed join projection columns.
compute.rangeJoinResultRowsintegernoMaximum distributed join result rows.
compute.rangeJoinRowMaxstringnoMaximum encoded distributed join row size.
compute.rangeJoinSnapshotXidsintegernoMaximum active XIDs in each distributed join snapshot.
compute.rangeLogicalBasePersistStrideintegernoInitial logical horizon persistence stride.
compute.rangeLogicalMaxPersistStrideintegernoMaximum adaptive logical horizon persistence stride.
compute.rangeLogicalMinPersistIntervalstringnoMinimum interval between logical horizon persists.
compute.rangeRemoteSessionIdlestringnoHosted remote-session idle retention.
compute.rangeRemoteSessionMaxintegernoMaximum hosted remote sessions.
compute.rangeRpcFrameMaxstringnoMaximum encoded range RPC frame size.
compute.rangeRpcPoolIdleTtlstringnoRange RPC client-pool idle connection lifetime.
compute.rangeRpcPoolMaxIdlePerEndpointintegernoMaximum idle range RPC connections retained per endpoint.
compute.rangeRpcRequestTimeoutstringnoDeadline for one range RPC request.
compute.rangeRpcServerIdleTimeoutstringnoRange RPC server connection idle timeout.
compute.rangeTsoHeartbeatIntervalstringnoTimestamp-oracle heartbeat cadence.
compute.readinessProbePeriodSecondsintegernoCompute readiness probe period in seconds.
compute.schemaFetchRetryInitialBackoffstringnoInitial delay before retrying a transient Schema Registry fetch failure.
compute.schemaFetchRetryMaxBackoffstringnoMaximum delay between transient Schema Registry fetch retries.
compute.walAdminConnectTimeoutstringnoTimeout for opening WAL admin connections.
compute.walAdminRequestTimeoutstringnoTimeout for WAL admin requests.
compute.walFrameMaxSizestringnoTarget maximum size of one encoded logical WAL frame.
compute.walProducerBatchstringnoMaximum WAL producer batch size.
compute.walProducerCompressionstringnoWAL producer compression codec.
compute.walProducerDnsTimeoutstringnoTimeout for resolving WAL producer broker hostnames.
compute.walProducerFlushTimeoutstringnoDeadline for flushing all buffered and in-flight WAL records.
compute.walProducerInitMaxBackoffstringnoWAL producer-ID initialization backoff cap.
compute.walProducerInitRetryTimeoutstringnoWAL producer-ID initialization retry timeout.
compute.walProducerLingerstringnoDelay before sending a partial WAL producer batch.
compute.walProducerRequestTimeoutstringnoTimeout for WAL producer broker requests.
compute.walProducerRetriesintegernoWAL producer retries after the initial batch send.
compute.walProducerRetryBackoffstringnoWAL producer retry and producer-ID initial backoff.
compute.walProducerRoutingRetryBudgetstringnoPer-batch WAL producer routing retry budget.
compute.walProducerTransactionTimeoutstringnoWAL producer transaction timeout.
compute.walRecoveryConnectTimeoutstringnoTimeout for opening committed-WAL recovery broker connections.
compute.walRecoveryDnsTimeoutstringnoTimeout for resolving committed-WAL recovery broker hostnames.
compute.walRecoveryEmptyFetchRetriesintegernoConsecutive empty-fetch retries after the first empty recovery fetch.
compute.walRecoveryFetchMaxWaitstringnoKafka broker long-poll wait for committed-WAL recovery fetches.
compute.walRecoveryFetchMinstringnoMinimum response size for committed-WAL recovery fetches.
compute.walRecoveryFetchPartitionMaxstringnoPer-partition size limit for committed-WAL recovery fetches.
compute.walRecoveryFetchResponseMaxstringnoWhole-response size limit for committed-WAL recovery fetches.
compute.walRecoveryRequestTimeoutstringnoTimeout for committed-WAL recovery broker requests.
compute.walTopicEnsureTimeoutstringnoTimeout for ensuring a range WAL topic.
compute.walTopicReplicationFactorintegernoReplication factor requested when creating a range WAL topic.
defaultsobjectnoDefault tenant runtime settings. Each GresTenant inherits them unless it sets spec.overrides.
defaults.checkpointFramesintegernoCheckpoint after this many frames when set.
defaults.checkpointSizestringnoCheckpoint after this much WAL when set.
defaults.idleSecondsintegernoIdle timeout in seconds. When unset, the tenant never suspends because it is idle.
defaults.scramIterationsintegernoPBKDF2 iteration count for tenant Kafka and PostgreSQL SCRAM credentials.
defaults.suspendMaxCheckpointSizestringnoKeep the tenant warm when its latest checkpoint exceeds this size.
defaults.walReplicationintegernoReplication factor for tenant WAL topics.
kafkaClusterstringyesKafka cluster name this Gres fleet targets.
pgdogobjectyesPgDog front-door deployment settings.
pgdog.adminSecretRefobjectyesSecret key reference for PgDog admin credentials.
pgdog.adminSecretRef.keystringyesSecret data key.
pgdog.adminSecretRef.namestringyesSecret name.
pgdog.connectAttemptsintegernoNumber of backend connection attempts.
pgdog.directBootstrapGracestringnoDirect-route credential retention grace.
pgdog.idleTimeoutstringnoIdle pooled-server disconnect window.
pgdog.imagestringnoContainer image override. When absent, the operator uses --default-pgdog-image.
pgdog.listenPortintegeryesPgDog client listen port.
pgdog.poolerModestringnoPooling modes accepted by the Gres CRD.
pgdog.readinessProbePeriodSecondsintegernoPgDog readiness probe period in seconds.
pgdog.replicasintegeryesNumber of PgDog replicas.
pgdog.serverLifetimestringnoMaximum lifetime for pooled backend connections.
pgdog.suspensionIdleTimeoutstringnoIdle timeout used while at least one tenant can suspend.
pgdog.tlsSecretRefobjectnoOptional TLS Secret mounted by the future PgDog controller.
pgdog.tlsSecretRef.namestringyesSecret name.
tracingobjectnoDistributed-tracing wiring for this fleet's tenant compute pods. When this field is set, the GresTenant reconciler renders the CRABKA_OTLP_* and OTEL_SERVICE_NAME env contract on every compute container, and crabka-gres installs the OTLP exporter at startup. When the field is absent, the reconciler writes no OTLP env var at all. That is what keeps tracing off. An empty endpoint would still switch the exporter on, and the exporter would then fail to reach a collector. This field uses the schema of Kafka.spec.tracing. The two fleets therefore have one shape, one validation path, and the field names that an operator already knows. The field is fleet-scoped and not per-GresTenant, and this is on purpose. The collector endpoint, the protocol, and the export timeout are cluster infrastructure. A tenant-writable copy would make telemetry routing a tenant decision.
tracing.otlpobjectnoOTLP-backend tuning. Required when kind == Otlp.
tracing.otlp.endpointstringyesRequired. OTLP collector endpoint in the form scheme://host:port. The operator renders it as CRABKA_OTLP_ENDPOINT. A set field also sets CRABKA_OTLP_ENABLED=true.
tracing.otlp.protocolstringnoOTLP wire protocol selector. It has the same shape as the broker's internal OtlpProtocol enum and the OTEL_EXPORTER_OTLP_PROTOCOL spec values.
tracing.otlp.sampleRationumbernoOptional sampling ratio in [0.0, 1.0]. The operator renders it as CRABKA_OTLP_SAMPLE_RATIO. An unset field leaves the binary's own default of 1.0, which samples every trace.
tracing.otlp.serviceNamestringnoOptional service.name resource attribute. The operator renders it as OTEL_SERVICE_NAME. An unset field leaves the binary's own name, which is "crabka-broker" for Kafka and "crabka-gres" for Gres.
tracing.otlp.timeoutstringnoOptional export timeout. The operator renders it as CRABKA_OTLP_TIMEOUT. An unset field leaves the binary's own default of 10s.
tracing.typestringyesTracing backend selector.

Status

FieldTypeRequiredDefaultDescription
balancerobjectnoLast balancer planning summary. The operator does not execute range changes from this status.
balancer.disabledGoalsarrayyesGoals disabled by spec or by the top-level balancer switch.
balancer.dryRunOnlybooleanyesTrue while the operator reports planner status and does not execute live changes.
balancer.enabledbooleanyesWhether planner status is enabled by spec.
balancer.enabledGoalsarrayyesGoals active for dry-run planning.
balancer.executableOperationKindsarrayyesDistinct planned operation kinds executable by the operator. Empty until the operator implements physical orchestration.
balancer.executableOperationsintegeryesNumber of planned operations executable by the operator. Always zero: the transactional registry protocol cannot execute physical operations.
balancer.messagestringyesHuman-readable dry-run status reason.
balancer.mutationDisabledReasonstringyesWhy mutations are disabled even when a dry-run plan is available.
balancer.plannedOperationKindsarrayyesDistinct operation kinds in the reported dry-run plan snapshot.
balancer.plannedOperationsintegeryesNumber of operations in the reported dry-run plan snapshot.
balancer.transactionalRegistryProtocolAvailablebooleanyesWhether Kafka's transactional registry protocol was explicitly configured as available for metadata transactions. It does not enable physical range operations.
balancer.unsupportedOperationKindsarrayyesDistinct planned operation kinds the operator will not classify as executable. convert_to_sharded remains unsupported.
balancer.unsupportedOperationsintegeryesNumber of planned operations the operator intentionally will not execute.
conditionsarrayno[]Kubernetes-style condition list.
confirmedPgdogConfigHashstringnoLast PgDog config hash that was confirmed through the admin surface.
observedGenerationintegernometadata.generation of the last successfully-reconciled spec.
serviceUrlstringnoIn-cluster service URL for the PgDog front door.