KafkaGrpcGateway

API group/version: crabka.io/v1alpha1

Spec

FieldTypeRequiredDefaultDescription
allowedTargetsarraynoExplicit SSRF allowlist for outbound HTTP targets. The controller derives the entries from the targetUrl of each subscription. Use this field to add more allowed hosts.
authzobjectnoAuthorization configuration. When absent, the gateway uses simple ACL-based authorization, which is mode simple.
authz.aclRefreshstringnoHow often the gateway refreshes its ACL cache from the broker, as a unit-carrying duration. Default 60s.
authz.bearerobjectnoBearer-token authentication configuration. When absent, bearer auth is disabled.
authz.bearer.allowableClockSkewstringnoAllowable clock skew for bearer-token timestamps, as a unit-carrying duration such as 30s or 500ms.
authz.bearer.modestringnoBearer auth mode. One of off or unsecured. Default off.
authz.bearer.principalClaimstringnoJWT claim used as the Kafka principal. Default sub.
authz.modestringnoAuthorization mode. One of off or simple. Default simple, which is ACL-based and reads the KafkaUser ACLs from the broker.
authz.superUsersarraynoPrincipal strings, for example User:admin, that bypass all ACL checks.
dedupobjectnoConfiguration for the deduplication topic below the idempotent produce, which gives exactly-once delivery. When absent, the controller defaults apply.
dedup.ownershipGroupstringnoConsumer group used to divide dedup ownership between replicas. Defaults to a value derived from the gateway name.
dedup.partitionsintegernoNumber of partitions for the dedup topic. Default 8.
dedup.topicstringnoKafka topic used to store dedup state. Defaults to <gateway-name>-dedup when absent.
dedup.txnIdPrefixstringnoPrefix for transactional producer IDs. Defaults to the gateway name. The full transactional.id is <prefix>-<partition>.
dedup.windowstringnoDedup window, as a unit-carrying duration such as 24h or 30m. The gateway drops records with the same idempotency key inside this window. Default 24h.
healthChecksobjectnoKubernetes readiness and liveness probe timing.
healthChecks.livenessInitialDelaySecondsintegerno
healthChecks.livenessPeriodSecondsintegerno
healthChecks.readinessInitialDelaySecondsintegerno
healthChecks.readinessPeriodSecondsintegerno
imagestringnoContainer image override. When absent, the operator uses its --default-gateway-image flag.
membershipTopicstringnoInternal membership / owner-routing topic.
outboundSubscriptionsarraynoOutbound webhook subscriptions. Each entry reads from sourceTopics and HTTP-POSTs records to targetUrl.
replicasintegernoNumber of gateway replicas. Defaults to 1 when absent.
resourcesobjectnoCPU / memory resource requests and limits for the gateway container.
resources.claimsarraynoClaims lists the names of resources, defined in spec.resourceClaims, that are used by this container. This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. This field is immutable. It can only be set for containers.
resources.limitsobjectnoLimits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
resources.requestsobjectnoRequests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
schemaRegistryobjectnoSchema Registry integration.
schemaRegistry.frameRawbooleanno
schemaRegistry.latestCacheTtlstringno
schemaRegistry.urlstringno
telemetryobjectnoOpenTelemetry / observability configuration. When absent, the gateway exports no telemetry.
telemetry.otlpEndpointstringnoOTLP exporter endpoint URL, for example http://otel-collector.observability.svc:4317.
telemetry.otlpProtocolstringnoOTLP exporter protocol. One of grpc or http. Default grpc.
telemetry.sampleRationumbernoFraction of traces to sample, in the range [0.0, 1.0]. Default 1.0, which samples all traces.
tlsobjectnoTLS serving configuration. When absent, the TLS defaults apply: clientAuth: required and validityDays: 365.
tls.clientAuthstringnoHow the gateway authenticates inbound clients. One of disabled, optional, required. Default required.
tls.reloadIntervalstringnoCert hot-reload poll interval, as a unit-carrying duration. Default 30s.
tls.validityDaysintegernoServing-cert lifetime in days. Default 365.
tuningobjectnoGateway runtime policy overrides.
tuning.clientDispatchQueueCapacityintegernoKafka client request-dispatch queue capacity.
tuning.clientFrameMaxstringnoMaximum accepted Kafka client frame size.
tuning.consumerPollTimeoutstringno
tuning.forwardMaxBodystringno
tuning.internalTopicAllowReplicationFallbackbooleanno
tuning.internalTopicCreateTimeoutstringno
tuning.internalTopicMinCleanableDirtyRatiostringno
tuning.internalTopicReplicationFactorintegerno
tuning.internalTopicSegmentstringno
tuning.ownershipWarmupEmptyPollsintegerno
tuning.produceMaxBodystringno
tuning.readinessPollIntervalstringno
webhooksarraynoInbound HTTP-webhook endpoints. Each entry creates one authenticated ingress route that produces records to targetTopic.

Status

FieldTypeRequiredDefaultDescription
conditionsarrayno[]Standard Kubernetes-style condition list. It reports Ready, KafkaVersionValid, CertReady, and Degraded.
observedGenerationintegernometadata.generation of the last successfully-reconciled spec.
readyReplicasintegernoNumber of gateway replicas that report Ready now.