Changelog for supported Kong Operator versions.
Kong Operator Changelog
2.3.0
Release date: 2026-09-01
Breaking changes
- A cross-namespace reference from a
KonnectAPIAuthConfigurationto aSecret(viaspec.secretRef.namespace) now requires aKongReferenceGrantin the Secretās namespace permitting it. Without the grant the configuration reportsResolvedRefs=Falsewith reasonRefNotPermittedand is marked invalid. Previously such references were allowed with a warning only. #2908 -
EventGateway CRDs (Tech Preview) which allow referencing a
SecretthroughsecretRef, now require the key name to be provided.So:
type: secretRef secretRef: name: my-backend-cluster-tlsBecomes:
type: secretRef secretRef: name: my-backend-cluster-tls key: tls.crt # Key name depends on the type of referenced Secret. - All the CRDs generated from Konnect OpenAPISpec with a parent reference now
have a CEL validation rule which ensures that the parent reference is immutable
when a resource has
Programmedcondition set toTruein its status, meaning that it is already configured in Konnect. This prevents the unsupported scenarios through breaking changes in the already released EventGateway CRDs (Tech Preview), includingEventGatewayVirtualClusterEventGatewayVirtualClusterConsumePolicyEventGatewayVirtualClusterPolicyEventGatewayVirtualClusterProducePolicy#4824
Added
- Kong entities generated by Konnect-hybrid gateways now propagate the
konghq.com/tagsannotation to theirspec.tags. Set it on the backend Service (KongService/KongUpstream/KongTarget), the HTTPRoute or TLSRoute (KongRoute), or the TLS Secret (KongCertificate/KongSNI). #4924 - Konnect: allow root Konnect entities to reference
KonnectAPIAuthConfigurationresources across namespaces usingauthRef.namespaceandKongReferenceGrant. #4839 - API: expose
trafficDistributionandinternalTrafficPolicyinDataPlane,GatewayConfigurationandKegDataPlaneServiceOptions. Both fields are propagated to the managed Kubernetes Service during reconciliation. #4610 - API: add PrintColumns for KongTarget upstream and target fields. #4576
- AIGateway:
- introduce
AIGatewayDataPlaneCRD with reconciler #4690, #4797 - introduce
KonnectAIGatewayCRD with reconciler #4760, #4792, #4848 - introduce
AIGatewayDataPlaneCertificateCRD with reconciler #4772 - introduce
AIGatewayPolicyCRD with reconciler. Configurations can be sourced from a key in a KubernetesSecret. The value in secret should be valid JSON or YAML format. #4781 #4856 - introduce
AIGatewayAgentCRD with reconciler. #4776 - introduce
AIGatewayModelProviderCRD with reconciler. Credentials can be sourced from a KubernetesSecrets. #4793 #4798 - introduce
AIGatewayConsumerandAIGatewayConsumerCredentialCRDs with reconcilers. Credentials are modelled as a separate resource referencing the consumer, mirroring the Konnect API hierarchy. #4804 - introduce
AIGatewayConsumerGroupCRD with reconciler. #4822 - allow
AIGatewayConsumerresources to referenceAIGatewayConsumerGroupresources. #4910 - introduce
AIGatewayIdentityProviderCRD with reconciler. #4852 - introduce
AIGatewayMCPServerCRD with reconciler. #4836 KonnectAIGatewaynow supportsspec.source: Mirror, referencing an existing Konnect AI Gateway by ID (spec.mirror.konnect.id) instead of creating one.Origin(the default) is unchanged. #4928
- introduce
- GRPCRoute: enable GRPCRoute for on-prem gateway #4364
- Support
spec.deployment.labelsandspec.deployment.annotationsfor metadata of underlying dataplaneDeploymentfor:DataPlane#5037AIGatewayDataPlane#5081KegDataPlane#5088MCPServerDataPlane#5150 with safe managed-key removal so operator-managed keys are removed without clobbering external labels or annotations. This change causes a rolling restart of the underlyingPods when updating operator to this version, no matter whether the user has set any labels or annotations.
- EventGateway CRDs: added
EventGatewaySchemaRegistryCRD and reconciliation logic. #5017 - Gateway: Support
TCPRoutefor on-prem gateways. #4207 - Gateway: Support
UDPRoutefor on-prem gateways. #4747 #5028 #5031 #5033 HybridGateway: add controller and translator support for Gateway APITCPRouteresources. #4727 #5018- Added option to disable
DataPlaneās probes by specifying it as{}. Using{}previously caused the operator to use default values for the probes (no effect), which was not the intended behavior. Now, the operator will not set any probes on theDataPlanewhenever{}is specified. #5117 KongCertificate:spec.cert,spec.key,spec.cert_altandspec.key_altnow explicitly support Kong vault references (e.g.{vault://certvault/my-service-key}) in addition to inline PEM material, so certificate material can be kept out of Kubernetes and resolved by Kong Gateway at runtime. Values that start with{vault:are validated against the vault reference format at admission time, valid references are passed to Konnect unchanged. #5159-
Added
MCPServerDataPlaneCRD to handle MCPServerās data plane reconciliation. #5134 HybridGateway: SupportUDPRoutefor hybrid #5160 #5163 #5164KongVault: addedspec.configStoreRef, which references aKonnectConfigStoreby Kubernetes name instead of requiring the Konnect-generated Config Store ID to be copied intospec.config.config_store_idby hand. The referenced storeās Konnect ID is resolved during reconciliation and sent to Konnect as the vault backendāsconfig_store_id. The field is only accepted whenspec.backendiskonnectand is mutually exclusive withconfig_store_idinspec.config; settingconfig_store_iddirectly keeps working unchanged. A newConfigStoreRefValidstatus condition reports a missing, invalid, or not-yet-programmed reference, and theKongVaultis reconciled automatically once the referencedKonnectConfigStoreis programmed. #5208 #5211MCPServerDataPlane: addedspec.deployment.podTemplateSpec.metadata.labelsand.annotations, letting users set custom labels/annotations on the Pods of the owned Deployment (as opposed to the Deployment object itself). Keys managed by the operator (theappselector label, the operatorās own labels, and the MCP server version annotation) cannot be overridden.KongVault:spec.configStoreRefnow requires the referenced namespace to permit the reference with aKongReferenceGrant.KongVaultis cluster-scoped, so the grantāsfromentry has to usenamespace: "", andKonnectConfigStoreis now accepted as atokind. Without a matching grant theKongVaultreportsConfigStoreRefValid=Falsewith reasonRefNotPermittedand is not pushed to Konnect. #5221- HybridGateway: Support GRPCRoute for hybrid #5139 #5141
- AIGateway: Support referring to
AIGatewayConsumerGroups in ACL allow/deny lists inAIGatewayAgentandAIGatewayModel. #5307 AIGatewayDataPlane: added aServiceReadystatus condition and astatus.addressesfield that expose the ingress Serviceās readiness and reachable addresses. ForLoadBalancer-type Services,ServiceReadystaysFalseuntil an external address is allocated, which also blocks the overallReadycondition;ClusterIPandNodePortServices are always considered ready. The external hostname or IP is visible instatus.addressesonce allocated. #5391- Added
AIGatewayAuthStrategyCRD #5405 AIGatewayDataPlane: reconcile aHorizontalPodAutoscalerfromspec.deployment.scaling.horizontal. When horizontal scaling is configured the operator creates and keeps an HPA up to date; when the configuration is removed the HPA is deleted so it no longer conflicts with a static replica count. The operatorās RBAC now includescreate;get;list;patch;watch;deleteonhorizontalpodautoscalersfor the AIGatewayDataPlane controller. #5406KegDataPlane: reconcile aHorizontalPodAutoscalerfromspec.deployment.scaling.horizontal. When horizontal scaling is configured the operator creates and keeps an HPA up to date; when the configuration is removed the HPA is deleted so it no longer conflicts with a static replica count. The operatorās RBAC now includescreate;get;list;patch;watch;deleteonhorizontalpodautoscalersfor the KegDataPlane controller. #5456KegDataPlane: added aServiceReadystatus condition and astatus.addressesfield that expose the Kafka Serviceās readiness and reachable addresses. ForLoadBalancer-type Services,ServiceReadystaysFalseuntil an external address is allocated, which also blocks the overallReadycondition;ClusterIPandNodePortServices are always considered ready. The external hostname or IP is visible instatus.addressesonce allocated. #5457MCPServerDataPlaneexposesspec.deployment.podTemplateSpec.spec.containers[].resourcesmatched by fieldnameto adjust the resource requests and limits of the owned Deploymentās containers (e.g.mcp-serverorinit-mcp-server). Names that donāt match a container the operator manages are ignored.- Support using
tagsfield inKongPluginandKongClusterPluginto specify tags in generated Kong plugins in on-prem gateways and Konnect hybrid gateways. #5325 #5354 AIGatewayDataPlane: madespec.controlPlaneRefoptional. When omitted, the operator performs noKonnectAIGatewaylookup or certificate registration automation, letting the AI Gateway be configured against a manually-managed control plane and certificate viaspec.deployment.podTemplateSpec.controlPlaneRefis immutable once set: it can be added later, but not removed or changed to a different reference. #5470
Changed
- Konnect related fields in
GatewayConfigurationare immutable now, because for underlyingKonnectGatewayControlPlanethese fields have been always immutable. #4599 - Bump
sigs.k8s.io/gateway-apifromv1.5.1tov1.6.0. #4639 #4713 HybridGateway: treat malformed annotations as errors #4530- Conformance: enable HTTPRouteBackendTimeout #4714
- Conformance: enable
GRPCRouteconformance tests for on-prem. #4673 - Kong Event Gateway: update the default KEG DataPlane image to
kong/kong-event-gateway:1.2.1. #5137 AIGateway: ReferenceAIGatewayPolicyresources byAIGatewayPolicyRefin the nested fields ofAIGatewayModelandAIGatewayMCPServer. #4990- Security: harden container for
AIGatewayDataPlaneandKegDataPlaneruntimeDeploymentwith a tight security context:- disallows privilege escalation
- drop all capabilities (except for
NET_BIND_SERVICEto allow binding to ports < 1024) - run as non-root user
- read-only root filesystem
This change enforces patching of
Deployments, which causes a rolling restart of the underlyingPods when updating operator to this version. ForDataPlane, the same hardening is available but opt-in: setspec.deployment.hardened: Enabled(or for Gateway-managedDataPlanes,spec.dataPlaneOptions.deployment.hardened: Enabledon theGatewayConfiguration) to enable it. Note that, after operator upgrade,DataPlanesāDeployments will be rolled out regardless andPods will be recreated. #4953
- Add timeouts to
ControlPlaneās health check server #5023 HybridGateway: use the shared server-side applyTypeConverterProvider/ApplyIfChangedfor state enforcement instead of a bespoke managed-fields diff/apply implementation, removing the now unusedcontroller/hybridgateway/managedfieldspackage. #5052- Deprecate the legacy
AIGatewayCRD ingateway-operator.konghq.com/v1alpha1and its controller. UseAIGateway*CRDs inkonnect.konghq.com/v1alpha1instead. #5114 Gateway: update the defaultDataPlaneimage tokong/kong-gateway:3.15. #5095MCPServerCRD is split intoMCPServerandMCPServerDataPlaneCRD. The latter handles MCPServerās data plane reconciliation. #5134- Konnect entities whose parent reference is derived from the Konnect API path
now reject changes to that reference once the entity is
Programmed, matching the behavior that already applied to every other Konnect entity. #5207 AIGateway: enable AIGatewayAgent and AIGatewayModel to reference IdentityProvider #5265- Enable KONG_USE_STANDARD_GRPC_STATUS_CODES on dataplanes by default and run all core level GRPCRoute conformance tests. #5366
- Moved
AIGatewayAgent,AIGatewayAuthStrategy,AIGatewayConsumer,AIGatewayConsumerCredential,AIGatewayConsumerGroup,AIGatewayIdentityProvider,AIGatewayMCPServer,AIGatewayModel,AIGatewayModelProviderandAIGatewayPolicyfrom thekonnect.konghq.comAPI group to a newaiconfiguration.konghq.comAPI group. #5407 - AIGateway: update the default AI Gateway DataPlane image to
kong/kong-ai-gateway-dev:2.0.3. #5459
Fixes
HybridGateway: fixHTTPRouteandTLSRoutefinalizer getting permanently stuck when the Konnect controller updated a child resource (KongRoute,KongService,KongUpstream) between Phase 4bās GET and its optimistic-lock PATCH, causing a conflict error and requeue. If a route deletion event was processed before the requeue fired,HandleOrphanedResourcefound thehybrid-routesannotation absent and skipped cleanup, leaving the finalizer blocked indefinitely. The fix bakes the annotation into the SSA Apply in Phase 4, eliminating the separate Phase 4b PATCH and the race window it created. #4944- AIGateway/EventGateway: fix
AIGatewayDataPlaneandKegDataPlanenot settingReady=Falsewhen a dependency condition is unmet.ensureReadyStatuswas only called on the happy path, so early-return branches (e.g. referencedKonnectAIGatewaynot found) left theReadycondition unset. The call is now deferred so it always runs, and a fast-path scan setsReady=False/DependenciesNotReadyimmediately when any other condition is alreadyFalse. #4918 - DataPlane: fix false-positive warnings about operator-managed environment
variables (
KONG_CLUSTER_CERT,KONG_CLUSTER_CERT_KEY) being set by the user. The Konnect extension processor injects these variables into the in-memory DataPlane spec as a staging area for deployment generation; the check now runs before that mutation so it only inspects what the user actually wrote to the DataPlane object in Kubernetes. #4888 Gateway: stop overwriting the user-configuredKONG_STREAM_LISTENfor TLS listeners. The operator now enforces only the listen port and thessltoken, preserving the bind address (e.g.[::]for IPv6) and any listen options (reuseport,backlog=...) set on theGatewayConfigurationDataPlane pod template. Multiple bind addresses (dual-stack, e.g.0.0.0.0:<port> ssl reuseport, [::]:<port> ssl reuseport) are preserved for each listener port. Defaults to0.0.0.0andreuseportwhen unset. #4755Konnect: prevent orphaned and duplicate Konnect entities when reconciliation races with the cached client. The cleanup finalizer is now added before the entity is created in Konnect, and the freshly created Konnect ID is kept in an in-memory store until the cached status reflects it. This lets deletion recover a missing Konnect ID (falling back to probing Konnect by Kubernetes UID, or by name for the tag-less Cloud Gateway typesKonnectCloudGatewayNetworkandKonnectCloudGatewayTransitGateway) so an entity can still be cleaned up after an operator restart, and prevents creating a duplicate entity when a stale cached status has not yet caught up to the persisted Konnect ID. #4650HybridGateway: merge duplicateKongTargets when multiplebackendRefs in anHTTPRouteorTLSRouterule resolve to the same pod IP and port. Previously one target per backendRef per endpoint was created, causing Konnect 400 uniqueness-constraint rejections that left targets stuck inProgrammed=False. The operator now creates oneKongTargetper unique endpoint address, summing the weights of all contributing backendRefs. On upgrade, existing targets are looked up by address and reused to avoid duplicate conflicts. #4509- Konnect: requeue
HybridGatewaymanaged resources on reference-only 400 errors with a fixed 5 s delay.ERROR_TYPE_REFERENCEuniqueness conflicts are transient (stale entity not yet cleaned up, or referenced entity not yet propagated); previously they fell through to exponential backoff or were silently dropped. For user-created resources the same error shape is still suppressed as it may indicate a permanent misconfiguration. #4509 HybridGateway: prevent traffic drops when anHTTPRoutespec change rotates resource names. A cleanup-time gate defers orphan deletion until every desiredKongRouteis confirmed bound to its newKongServicein Konnect, and an enforce-time gate delaysKongServicecreation until itsKongUpstreamand all desiredKongTargets are Programmed. #4577HTTPRoute: traditional route translation now treats header match names case-insensitively and ignores later equivalent duplicates, aligning with Gateway API matching semantics. #4597- Traditional router: Kong routes translated from
HTTPRoutematches are now assigned a compactregex_priorityderived from the matchās Gateway API precedence traits (hostname specificity, path type and length, method, header and query parameter counts) plus, within a singleHTTPRoute, the rule and match order. This ensures overlapping matches of different specificity, and overlapping matches within oneHTTPRoute, are evaluated in the order required by the Gateway API specification. Adding or removingHTTPRoutes whose match shapes already exist does not renumber unrelated routes; introducing a new precedence class may. Equally specific matches from differentHTTPRoutes share the same priority and their relative order remains unspecified, as before.HTTPRoutematches with multiple header matches using equivalent, case-insensitive names no longer fail translation: only the first entry is used and the subsequent ones are ignored, as required by the Gateway API specification. #4563 HybridGateway: release Gateway API route finalizers once generated Kong resource delete requests have been issued, so immediate same-name route re-creates are not blocked by child resource finalizers. #4465HybridGateway: deduplicate generated Kong resources within a single HTTPRoute/TLSRoute translation when multiple rules reference the same backend. #4567HybridGateway: reconcile shared hybrid-routes annotations with optimistic-lock updates so concurrent Routes do not clobber each otherās route references, and orphan cleanup does not delete resources that changed after the cleanup decision. If a shared Kong resource is concurrently deleted before a Route records itself, the Route re-queues to recreate it instead of stalling. #4567HybridGateway: use route-scopedKongServicenames forHTTPRouterules whose backendRefs resolve to no valid targets. This avoids Konnect name conflicts with valid backend services while keeping normally generated service names unchanged. #4437- Prevent recreating consumer credentials on every Konnect sync when running in
āKIC in Konnectā mode with on-prem
ControlPlane. #4622 HybridGateway: mergeHTTPRoutefilters that map to the same Kong plugin type (for example aURLRewriteand aRequestHeaderModifier, both of which translate torequest-transformer) into a singleKongPluginper rule. This avoids attaching two plugins of the same type to the same route, which Konnect rejects with aunique-plugin-per-entityconstraint error. #4658- Fix the issue that the
ResolvedRefcondition for cross-namespace reference is not removed when a resource is updated to remove the cross-namespace reference. #4663 HybridGateway: order overlapping header-onlyHTTPRoutematches by Gateway API specificity. Header-only matches are translated toKongRoutes with a catch-all regex path so Kongāsregex_prioritybecomes effective, and a per-match priority derived from method and header specificity keeps more specific header matches ahead of less specific ones. This enables theHTTPRouteHeaderMatchingGateway API conformance test for the hybrid gateway. Generated header-only priorities stay below1 << 20(1048576), while generated path-based priorities start at that value. Use customKongRoutepriorities below or above that boundary depending on whether they should sort before or after generated path-based routes. #4640- Fix routes become unaccepted and removed from
DataPlaneunexpectedly #4521 EventGatewayandMCPServer: fix Server-Side Apply (SSA) permanently failing with āno corresponding typeā for operator-owned CRD kinds (KegDataPlane, etc.). Themanagedfields.TypeConverterwas built once at startup from the API serverās/openapi/v3endpoint, which publishes CRD schemas asynchronously (up to a ~60 s delay). CRDs that were not yet published were silently skipped, permanently breaking SSA, including status writes, until the next restart. The converter is now built in-process from the live CRD objects (apiserver-style, with no delay) and atomically refreshed by a dedicated CRD controller whenever a relevant CRD changes at runtime. #4795- Dataplane: Fixed the method to compare whether dataplane options are deep
equal to ensure that
HorizontalPodAutoscaleris updated when it is changed inGatewayConfiguration. Also fixed the calculation of the spec hash in theDeploymentto skip reconciliation of deployments if onlydeployment.scalingis changed in dataplane options. #5003 - Accept
DataPlaneimage references whose registry host contains a port (e.g.registry.example.com:5000/kong/kong-gateway:3.10). The tag is now split at the last:instead of every:, so a host-port colon is no longer misread as the tag separator. Without this fix, DataPlane Deployment provisioning silently failed withexpected "<image>:<tag>" format, got: <full-ref>. #5036 - Hybridgateway: an
HTTPRouterule with omitted or emptybackendRefsnow responds with500instead of Kongās default503for an empty upstream, by binding arequest-terminationplugin to the generated Kong service. Rules that already produce a response via aRequestRedirectfilter are excluded. This fixes theHTTPRouteNoBackendRefsGateway API conformance test for the hybrid gateway. #5066 Gateway: Support watching bothv1andv1beta1versions ofReferenceGrantto ensure compatibility with gateway API 1.3 and 1.4. #5091- Admission webhook maintains its semantic to provide best effort validation
to not block potentially valid
IngressorHTTPRouteresources when the webhook is not able to reach Kong Gateway. #5095 HybridGateway: fix KongRoute created without updating KongServiceās hybrid-route annotation #5136HybridGateway: shared Kong resources now converge when referenced by Routes attached to multiple Gateways, and SSA no-op detection correctly handles preserve-unknown fields. This prevents repeated apply loops from blocking stale resource cleanup after workload rollout. #5410EventGatewayBackendCluster,EventGatewaySchemaRegistry,EventGatewayListenerPolicy,EventGatewayDataPlaneCertificateandAIGatewayDataPlaneCertificatenow require aKongReferenceGrantfor a cross-namespacesecretRef, matching every other entity that references Secrets. Previously these five kinds were not recognized as using the generated sensitive-data Secret mechanism and skipped the grant check. An existing object withsecretRef.namespaceset and no matchingKongReferenceGrantreportsResolvedRefs=False/RefNotPermittedon upgrade until a grant is added. #5407- Konnect entities whose cross-namespace
controlPlaneRefwas permitted by aKongReferenceGrantno longer get stuck during deletion when that grant is removed first. The grant is now enforced only while the entity is not being deleted, allowing its Konnect counterpart and cleanup finalizer to be removed. #5229 DataPlaneMetricsExtension: the reconciler now returns an error (and gets re-queued with backoff) when it fails to create, update or delete the PrometheusKongPluginfor a Service, instead of logging and giving up. Previously a single transient failure (e.g. a rejected admission webhook call) left the Service without itskonghq.com/pluginsannotation indefinitely, since nothing else would trigger another reconcile.- Fix Gateway API routes becoming transiently unaccepted and removed from dataplane when listener is intermittently marked as Programmed=False. #5237
- Konnect entities: Fix truncating of tags to cut at 128 unicode runes (UTF8 code points). #5306
- Hybrid gateway: Propagate tags in the annotation
konghq.com/tagsinKongPlugins to the copies when attached toHTTPRoutes andGRPCRoutes to propagate the tags inKongPluginsā annotation to plugins in Konnect. #5280 #5284 - AIGatewayDataPlane: fix the
Readycondition to reflect a fully completed Deployment rollout instead of flippingTrueas soon as any pod (old or new) was ready. #5365 KegDataPlane: theReadycondition no longer flipsTruemid-rollout. Previously it becameTrueas soon as any replica was ready, even while an old pod was still being replaced. It now usesDeploymentRolloutComplete, which requires the controller to have observed the current generation and all desired replicas to be updated and available. #5425
2.2.4
Release date: 2026-08-27
Fixes
- Konnect entities whose cross-namespace
controlPlaneRefwas permitted by aKongReferenceGrantno longer get stuck during deletion when that grant is removed first. The grant is now enforced only while the entity is not being deleted, allowing its Konnect counterpart and cleanup finalizer to be removed. #5229 #5232 - DataPlaneMetricsExtension: the reconciler now returns an error (and gets
re-queued with backoff) when it fails to create, update or delete the
Prometheus
KongPluginfor a Service, instead of logging and giving up. Previously a single transient failure (e.g. a rejected admission webhook call) left the Service without itskonghq.com/pluginsannotation indefinitely, since nothing else would trigger another reconcile. #5210 #5217 - Dataplane: Fixed the method to compare whether dataplane options are deep
equal to ensure that
HorizontalPodAutoscaleris updated when it is changed inGatewayConfiguration. Also fixed the calculation of the spec hash in theDeploymentto skip reconciliation of deployments if onlydeployment.scalingis changed in dataplane options. #5003 #5104 - Hybrid gateway: Propagate tags in the annotation
konghq.com/tagsinKongPlugins to the copies when attached toHTTPRoutes andGRPCRoutes to propagate the tags inKongPluginsā annotation to plugins in Konnect. #5280 #5284 #5334 - Konnect entities: Fix truncating of tags to cut at 128 unicode runes (UTF8 code points). #5306 #5370
2.2.2
Release date: 2026-07-06
Fixes
- Gateway: stop overwriting the user-configured
KONG_STREAM_LISTENfor TLS listeners. The operator now enforces only the listen port and thessltoken, preserving the bind address (e.g.[::]for IPv6) and any listen options (reuseport,backlog=...) set on theGatewayConfigurationDataPlane pod template. Multiple bind addresses (dual-stack, e.g.0.0.0.0:<port> ssl reuseport, [::]:<port> ssl reuseport) are preserved for each listener port. Defaults to0.0.0.0andreuseportwhen unset. #4755 #4767
2.2.1
Release date: 2026-07-01
Fixes
- HTTPRoute: traditional route translation now treats header match names case-insensitively and ignores later equivalent duplicates, aligning with Gateway API matching semantics. #4597
- Hybridgateway: release Gateway API route finalizers once generated Kong resource delete requests have been issued, so immediate same-name route re-creates are not blocked by child resource finalizers. #4465 #4543
- Hybridgateway: use route-scoped
KongServicenames forHTTPRouterules whose backendRefs resolve to no valid targets. This avoids Konnect name conflicts with valid backend services while keeping normally generated service names unchanged. #4437 #4559 - Prevent recreating consumer credentials on every Konnect sync when running in
āKIC in Konnectā mode with on-prem
ControlPlane. #4622 - Hybridgateway: fix
KongTargetstuck inProgrammed=Falsewhen multiple backendRef Services in an HTTPRoute or TLSRoute rule resolve to the same pod IP and port. The operator now creates oneKongTargetper unique endpoint address across all backendRefs in a rule, merging duplicate endpoints and summing their weights, instead of attempting to create one per backendRef per endpoint which violated Konnectās upstream/target uniqueness constraint. Note: theKongTargetnaming scheme has changed and the backendRef is no longer part of the name hash. All existingKongTargetresources will be orphaned and recreated on the first reconciliation after upgrading. During the transition, both old and new entries may be present in Konnect simultaneously as creation and orphan cleanup are not synchronized. #4509 - Hybridgateway: prevent traffic drops when an
HTTPRoutespec change rotates resource names. A cleanup-time gate defers orphan deletion until every desiredKongRouteis confirmed bound to its newKongServicein Konnect, and an enforce-time gate delaysKongServicecreation until itsKongUpstreamand all desiredKongTargets are Programmed. #4577 - Konnect: prevent orphaned and duplicate Konnect entities when reconciliation
races with the cached client. The cleanup finalizer is now added before the entity
is created in Konnect, and the freshly created Konnect ID is kept in an in-memory
store until the cached status reflects it. This lets deletion recover a missing
Konnect ID (falling back to probing Konnect by Kubernetes UID, or by name for the
tag-less Cloud Gateway types
KonnectCloudGatewayNetworkandKonnectCloudGatewayTransitGateway) so an entity can still be cleaned up after an operator restart, and prevents creating a duplicate entity when a stale cached status has not yet caught up to the persisted Konnect ID. #4650 - Hybridgateway: merge
HTTPRoutefilters that map to the same Kong plugin type (for example aURLRewriteand aRequestHeaderModifier, both of which translate torequest-transformer) into a singleKongPluginper rule. This avoids attaching two plugins of the same type to the same route, which Konnect rejects with aunique-plugin-per-entityconstraint error. #4658 - Fix the issue that the
ResolvedRefcondition for cross-namespace reference is not removed when a resource is updated to remove the cross-namespace reference. #4663
2.2.0
Release date: 2026-06-05
Added
- Add
--enable-controller-kegdataplaneflag (envKONG_OPERATOR_ENABLE_CONTROLLER_KEGDATAPLANE, defaultfalse) to enable the KEG (Kong Event Gateway) DataPlane controller. #4391 - Support wildcard TLS SNI matching in Kong routes for Kong 3.7.0 and above in on-prem gateways. #4389
- DataPlane: extend Kong image validation to support sha256 digest #4356
- Konnect: support
KongCertificateref inKongUpstream#4305 KongTarget: support cross-namespacespec.upstreamRefto reference aKongUpstreamin a different namespace. AKongReferenceGrantin the upstreamās namespace is required to permit the reference. TheKongTargetstatus reflectsKongUpstreamRefValid=False/RefNotPermittedwhen no grant is present and clears once the grant is in place. #4263KongSNI: support cross-namespacespec.certificateRefto reference aKongCertificatein a different namespace. AKongReferenceGrantin the target namespace is required to permit the reference. TheKongSNIstatus reflectsResolvedRefs=False/RefNotPermittedwhen no grant is present andResolvedRefs=Trueonce the grant is in place. #4235- Hybridgateway: add support for
konghq.com/pathservice annotation #4100 - Hybridgateway: add support for
konghq.com/tls-verifyservice annotation #4105 - Hybridgateway: add support for
konghq.com/tls-verify-depthservice annotation #4099 - Hybridgateway: add support for
konghq.com/connect-timeoutservice annotation #4101 - Hybridgateway: add support for
konghq.com/read-timeoutservice annotation #4102 - Hybridgateway: add support for
konghq.com/write-timeoutservice annotation #4103 - Hybridgateway: add support for
konghq.com/retriesservice annotation #4104 - Hybridgateway: add support for
konghq.com/host-headerservice annotation #4108 - Hybridgateway: add support for
konghq.com/client-certservice annotation. #4352 - Konnect: support
KongCertificateandKongCACertificaterefs inKongService#4240 - Hybridgateway: add error logs when annotations are malformed #4143
- Add the following headers in requests of
ingress-controllersent to Konnect for uploading configuration for tracing:X-Kic-Konnect-Sync-Instance-Idfor instance ID of Konnect config synchronizer. It is set to use theControlPlaneās instance ID.X-Kic-Konnect-Sync-Serial-Numberfor serial number of config sync round.X-Kic-Konnect-Sync-Start-Timestampfor the timestamp of starting the config sync round.X-Kic-Konnect-Sync-Round-Idfor the ID to mark the config sync round. #4062
- Hybridgateway: support
konghq.com/upstream-policyservice annotation to setKongUpstreamspecs #4040 - Add
spec.konnect.configUploadConcurrencyto set the concurrency of uploading configuration to Konnect in the on-prem gateway integration wit Konnect and decrease the default concurrency to4to reduce the possibility of triggering rate limiting of Konnect API service. #3959 - KegDataplane: Implement the
KegDataPlanereconciler (eventgateway.konghq.com/v1alpha1) which manages the full lifecycle of Kong Event Gateway (KEG) DataPlane workloads. #3914 - TLSRoute support: Move
TLSRoutecontroller out ofGatewayAlphafeature gate in controlplane controller managers and migrate the controller to reconcileTLSRoutes in gateway APIv1instead ofv1alpha2. Note: This may be incompatible when migrating the management ofTLSRoutefrom Kong ingress controller to Kong operator. #3812 - TLSRoute support: Add
TLSRoutereconciler in hybrid gateway controllers and add translator ofTLSRoute. #3763 - EventGatewayDataPlane: introduces the eventgateway.konghq.com/v1alpha1 API group with a new KegDataPlane kind that manages a keg binary Deployment connecting to Konnect via a referenced KonnectEventGateway resource. #3765
- TLSRoute support: Configure DataPlaneOption in created
DataPlaneto configure Kong DataPlane deployment and ingress service for listeners withTLSprotocol. #3493 - Allow cross-namespace reference for
KonnectAPIAuthConfigurationfromGatewayConfigurationusingKongReferenceGrant. When a user creates aKongReferenceGrantallowingGatewayConfigurationto reference aKonnectAPIAuthConfigurationin another namespace, the Gateway controller automatically creates a managedKongReferenceGrantfor the correspondingKonnectGatewayControlPlane. This managed grant is removed when the user grant is deleted or the Gateway is deleted. #3258 - Added leader election configuration through the following flags:
--leader-election-lease-duration--leader-election-renew-deadline--leader-election-retry-period#3345
- Support
Gateway.spec.infrastructure.labelsandGateway.spec.infrastructure.annotations. Labels and annotations set on a Gatewayās infrastructure are now propagated to the DataPlaneās ingressServicemetadata andDeploymentpod template metadata. When both aGatewayConfigurationandGateway.spec.infrastructurespecify the same key, the infrastructure value takes precedence. #3412 - Propagate the GEP-1762
gateway.networking.k8s.io/gateway-namelabel to all operator-level resources created by the Gateway controller:DataPlaneāsServiceandPods, as well asDataPlaneit self,ControlPlane,KonnectGatewayControlPlane,KonnectExtension, andNetworkPolicy. This changes enforces patching of theDataPlanedeployment to add the label, which causes a rolling restart of theDataPlanePods. #3531 - Added
--konnect-request-timeoutflag to control Konnect API calls timeout. Be default that is set to 10 seconds. #3513 - Added
sticky_sessions_cookieandsticky_sessions_cookie_pathfields toKongUpstreamCRD, enabling sticky session configuration for Kong Gateway 3.11+ upstreams synced to Konnect. A CEL validation rule enforces thatsticky_sessions_cookieis set whenalgorithmissticky-sessions. #3555 - Fix license storage not being enabled for
ControlPlanes, license decoding fromSecrets and not setting theSecretlabel selector labels on licenseSecrets. #3610 - Added
MCPServerCRD (konnect.konghq.com/v1alpha1) for declarative management of MCP (Managed Control Plane) servers in Konnect. Supports Mirror mode configuration to reference existing Konnect control planes by ID. #3612 - Added
managed-by:kong-operatortag to all Konnect entities to allow filtering resources managed by Kong Operator in Konnect. #3609 - Added MCP ControlPlane signalling controller: a new
MCPServerCPReconcilerwatchesKonnectGatewayControlPlaneresources and, via aSignalManager, maintains per-control-plane background goroutines that poll the Konnect MCP server signal API. This enables the operator to react in near-real-time to Konnect-side configuration changes affectingMCPServerobjects linked to a control plane. The feature is gated behind theMCPControllerfeature gate. #3677 - Added
MCPServerentity controller that reconcilesMCPServercustom resources against the Konnect API. The controller sets status conditions and the Konnect entity ID on the resource. The feature is gated behind theMCPControllerfeature gate. #3739 - Added
MCPServerreconciler that manages owned Kubernetes workloads (Deployments and Services) forMCPServerresources. The reconciler fetches MCP server configuration from Konnect via the signal manager and reconciles the corresponding local resources. The feature is gated behind theMCPControllerfeature gate. #3755 - Added Kong entity reconciliation for
MCPServer: the reconciler now fetchesKongServiceandKongRoutedefinitions from the Konnect API and ensures matching Kubernetes CRs exist in the cluster. TheKongServicehost is set to the in-cluster Service DNS name. Stale resources are garbage-collected. #3831 - Added per-version workload status reporting for
MCPServer: after each reconcile the controller walks the Deploymentās ReplicaSets, classifies every Pod as ready, starting, or failing, and posts the aggregatedMCPServerVersionStatusto the Konnect API. A Pod watch is added so that status is updated in near-real-time during rolling updates. #3850 - Hybridgateway: add support for
konghq.com/protocolservice annotation #3847 - Automatic rotation of certificates issued by the operator and used internally,
configured via
--cert-ttland--cert-expiration-marginflags. The operator will automatically renew certificates before they expire, ensuring secure communication. Short downtime during rotation is expected. #3745 - Added support for using
KonnectGatewayControlPlaneof type group withKonnectExtensions. #3711 MCPServer: setKongRouteandKongServiceKonnect IDs during reconciliation. #3904MCPServer: set MCPServer ID as the name identifier for the Kubernetes resource and store the Konnect name in theMCPServerCRD status. #3904MCPServer: reconcile the ownedDeploymentandServicevia Server-Side Apply so the full spec is enforced on every reconcile, and set the init and runner container images (kong/mcp-server-init,kong/mcp-server-runner) to the versions returned by Konnect. #3943MCPServer: provision theai-mcp-proxyKongPluginand attach it to the ownedKongServicevia a dedicatedKongPluginBinding. #4188
Changed
- HybridGateway: Changed the annotation on generate Kubernetes resources
(Konnect entities) to mark the parent route. Now the format of the annotation
key is changed to
konghq.com/hybrid-route-<routeKind>to support multiple kinds of routes. If the route kind isHTTPRoute, the key format remains unchanged. #3905 - Increase default interval of uploading configuration and node status to the read-only Konnect control plane (The legacy KIC type CP) to 3 minutes to decrease the API calls to Konnect. #3969
- HybridGateway: generate one KongRoute per HTTPRouteMatch to honor Gateway API OR semantics across matches within a rule.
This enables the
HTTPRouteMatchingconformance test for Hybrid mode. Note: routes count per rule may increase. #3577 - Upgrade Gateway API to v1.5.1, it requires manual step of installing new CRDs before the upgrade, see UPGRADE. #3596 #3599
- Bump Kong Gateway to 3.14 and double the default CPU (now
2000m) and memory limits (now2000Mi) for theDataPlanedeployment. #3995
Fixes
- Hybridgateway: fix
KongRoutename collisions when anHTTPRouteattaches to multiple listener-scopedParentRefs on the sameGateway, enabling theHTTPRouteListenerHostnameMatchingGateway API conformance test for Hybrid Gateway. Only affected multi-parent translated routes are renamed. #4423 - Hybridgateway: fix
KongCertificatename collisions when aGatewayhas multiple listeners using the same port by including listener identity in generated certificate names. Attention: This will re-create CA certificates in Konnect, as it changes the names of the generatedKongCertificates. #4382 Gateway: Pick the intersection of specāshostnamesand parent listenerāshostnameas the hostnames inTLSRoutefor translation in on-prem gateways. #4369Gateway: conflicting listeners (port/protocol or hostname conflict) now haveAccepted=Falsewith the conflict reason, per Gateway API spec rule that āALL indistinct Listeners must not be accepted for processingā. Additionally, TLS listeners that share a port with another listener are now markedConflicted=True/ProtocolConflict(and therefore not accepted). #4309- Add
ResolvedRefscondition update forTLSRoutes and enableReferenceGrantto control the cross-namespace reference fromTLSRoutes to their backendRefs in on-premTLSRoutecontroller. #4292 KongRoute: when a cross-namespaceserviceRefhas noKongReferenceGrant, theProgrammedcondition now transitions toFalsein the same reconcile pass that setsResolvedRefs=False/RefNotPermitted. PreviouslyProgrammedremainedUnknownbecause the reconciler returned early before callingpatchWithProgrammedStatusConditionBasedOnOtherConditions. #4318KongPluginBinding: thePluginRefValidstatus condition is now set promptly when the referencedKongPlugindoes not exist (same-namespace or cross-namespace) or when a cross-namespaceKongReferenceGrantis deleted. Previously the binding could take up to the full sync period (~60 s) to reflect these changes because the check lived in the Konnect SDK ops layer. The check is now a pre-ops handler that runs early in the reconcile loop and reacts immediately to watch-triggered enqueues. #4312- Add
KongReferenceGrantwatch toKongVaultandKongConsumerGroupreconcilers. Previously, creating or deleting a grant would not trigger re-reconciliation of these resources until the next full resync cycle. Grant changes now immediately re-queue affected objects. #4219 - Fix cross-namespace
KongRoute ā KongServicereference resolution:handleKongServiceRefandGetAPIAuthRefNN(serviceRef branch) now derive theKongServicenamespace fromserviceRef.namespaceinstead of always using the routeās namespace, so a cross-namespace serviceRef with a validKongReferenceGrantcorrectly reachesProgrammed=True. ThekongRouteRefersToKongServiceindex key andenqueueKongRouteForKongServicewatch handler are also fixed to use the serviceās namespace, ensuring cross-namespace routes are re-queued immediately when the referenced service changes rather than waiting for a full resync. #4212 - Use the ControlPlaneās own namespace when resolving its
KonnectAPIAuthConfigurationreference and when checking theKongReferenceGrant. Previously the namespace of the requesting entity was used, which caused resources that resolve their CP through a parent ref (KongRouteviaserviceRef,KongCredential*viaconsumerRef) to silently fail when the parentāscontrolPlaneRefwas cross-namespace. #4210 - More robust validation for
HTTPRoute, when an unsupported feature is used, and the route refers to existing and non-existingGateway, it will be rejected. #4131 - Sanitize the plugin configuration when
ControlPlaneāsconfigDump.dumpSensitiveisnāt enabled. #4045 - More robust validation for
GatewayConfiguration- fieldskonnectandextensionsare mutually exclusive. #4213 - Deletion of obsolete
KonnectControlPlanein versionv1alpha1(available only when conversion webhook is enabled) does not leave orphanedKonnectGatewayControlPlanein Konnect. #4267 - Fixed KonnectExtension changes wonāt trigger ControlPlane reconciliations. #4361
- Revert plugin config sanitization when
ControlPlaneāsconfigDump.dumpSensitiveisnāt enabled. Due to plugin configuration being dependent on plugin type controller is not able to make an informed decision whether a field is sensitive or not and more importantly whether it has a constrained set of allowed values like e.g. HTTP methods. Users are suggested to block network access to debug endpoints (which are disabled by default) if plugin configuration can contain sensitive information. #4467 - Hybridgateway: fix
KongTargetstuck inProgrammed=Falsewhen multiple backendRef Services in an HTTPRoute or TLSRoute rule resolve to the same pod IP and port. The operator now creates oneKongTargetper unique endpoint address across all backendRefs in a rule, merging duplicate endpoints and summing their weights, instead of attempting to create one per backendRef per endpoint which violated Konnectās upstream/target uniqueness constraint. Note: theKongTargetnaming scheme has changed and the backendRef is no longer part of the name hash. All existingKongTargetresources will be orphaned and recreated on the first reconciliation after upgrading. During the transition, both old and new entries may be present in Konnect simultaneously as creation and orphan cleanup are not synchronized. #4509
2.1.10
Release date: 2026-08-27
Fixes
- Dataplane: Fixed the method to compare whether dataplane options are deep
equal to ensure that
HorizontalPodAutoscaleris updated when it is changed inGatewayConfiguration. Also fixed the calculation of the spec hash in theDeploymentto skip reconciliation of deployments if onlydeployment.scalingis changed in dataplane options. #5003 #5105 - Konnect entities: Fix truncating of tags to cut at 128 unicode runes (UTF8 code points). #5306 #5371
- Hybrid gateway: Propagate tags in the annotation
konghq.com/tagsinKongPlugins to the copies when attached toHTTPRoutes andGRPCRoutes to propagate the tags inKongPluginsā annotation to plugins in Konnect. #5280 #5284 #5400
2.1.8
Release date: 2026-07-01
Fixes
- Prevent recreating consumer credentials on every Konnect sync when running in
āKIC in Konnectā mode with on-prem
ControlPlane. #4623 #4624 - Hybridgateway: merge
HTTPRoutefilters that map to the same Kong plugin type (for example aURLRewriteand aRequestHeaderModifier, both of which translate torequest-transformer) into a singleKongPluginper rule. This avoids attaching two plugins of the same type to the same route, which Konnect rejects with aunique-plugin-per-entityconstraint error. #4658 - Hybridgateway: fix
KongTargetstuck inProgrammed=Falsewhen multiple backendRef Services in an HTTPRoute or TLSRoute rule resolve to the same pod IP and port. The operator now creates oneKongTargetper unique endpoint address across all backendRefs in a rule, merging duplicate endpoints and summing their weights, instead of attempting to create one per backendRef per endpoint which violated Konnectās upstream/target uniqueness constraint. Note: theKongTargetnaming scheme has changed and the backendRef is no longer part of the name hash. All existingKongTargetresources will be orphaned and recreated on the first reconciliation after upgrading. During the transition, both old and new entries may be present in Konnect simultaneously as creation and orphan cleanup are not synchronized. #4509 - Hybridgateway: prevent traffic drops when an
HTTPRoutespec change rotates resource names. A cleanup-time gate defers orphan deletion until every desiredKongRouteis confirmed bound to its newKongServicein Konnect, and an enforce-time gate delaysKongServicecreation until itsKongUpstreamand all desiredKongTargets are Programmed. #4577
2.1.7
Release date: 2026-06-04
Fixes
- Hybridgateway: fix
KongCertificatename collisions when aGatewayhas multiple listeners using the same port by including listener identity in generated certificate names. Attention: This will re-create CA certificates in Konnect, as it changes the names of the generatedKongCertificates. #4382 #4394 - Fixed KonnectExtension changes wonāt trigger ControlPlane reconciliations. #4361 #4371
- Revert plugin config sanitization when
ControlPlaneāsconfigDump.dumpSensitiveisnāt enabled. Due to plugin configuration being dependent on plugin type controller is not able to make an informed decision whether a field is sensitive or not and more importantly whether it has a constrained set of allowed values like e.g. HTTP methods. Users are suggested to block network access to debug endpoints (which are disabled by default) if plugin configuration can contain sensitive information. #4499 - Use the ControlPlaneās own namespace when resolving its
KonnectAPIAuthConfigurationreference and when checking theKongReferenceGrant. Previously the namespace of the requesting entity was used, which caused resources that resolve their CP through a parent ref (KongRouteviaserviceRef,KongCredential*viaconsumerRef) to silently fail when the parentāscontrolPlaneRefwas cross-namespace. #4210 - Fix cross-namespace
KongRoute ā KongServicereference resolution:handleKongServiceRefandGetAPIAuthRefNN(serviceRef branch) now derive theKongServicenamespace fromserviceRef.namespaceinstead of always using the routeās namespace, so a cross-namespace serviceRef with a validKongReferenceGrantcorrectly reachesProgrammed=True. ThekongRouteRefersToKongServiceindex key andenqueueKongRouteForKongServicewatch handler are also fixed to use the serviceās namespace, ensuring cross-namespace routes are re-queued immediately when the referenced service changes rather than waiting for a full resync. #4212 - Add
KongReferenceGrantwatch toKongVaultandKongConsumerGroupreconcilers. Previously, creating or deleting a grant would not trigger re-reconciliation of these resources until the next full resync cycle. Grant changes now immediately re-queue affected objects. #4219 KongRoute: when a cross-namespaceserviceRefhas noKongReferenceGrant, theProgrammedcondition now transitions toFalsein the same reconcile pass that setsResolvedRefs=False/RefNotPermitted. PreviouslyProgrammedremainedUnknownbecause the reconciler returned early before callingpatchWithProgrammedStatusConditionBasedOnOtherConditions. #4318
2.1.6
Release date: 2026-05-12
Fixes
- TLSRoute readiness by preserving TLSServerName when a ready Admin API client is demoted back to pending #4024 #4028
- Fix endless reconciliation in Konnect controllers when referenced parent objects are not marked as Ready yet. #4048 #4060
- Sanitize the plugin configuration when
ControlPlaneāsconfigDump.dumpSensitiveisnāt enabled. #4119 #4194 - Changed (potentially breaking): As part of our secure-by-default initiative, everything out of the box relies on
defaults from Kong Gateway. It may break existing configurations that relied on previous implicit protocol behavior
(access via http will result
426status code.), when version of Kong Gateway changes.- For
HTTPRoute, protocol now matches the attached Gateway listener protocol (and whenparentRef.sectionNameis set, it must match that specific listener). WhenparentRef.sectionNameis not specified it binds to allGateways listeners. - For
Ingress, default protocol relies on Kong Gateway, can be set explicitly viakonghq.com/protocols: "http"(orhttps) annotation on particularIngress. #4067 #4245
- For
2.1.5
Release date: 2026-04-24
Fixes
- Fix Gateway reconcile storm on topologies with multiple listeners sharing the
same port and HTTPRoutes with multiple
sectionName-scopedparentRefs. The HTTPRoute watch on the Gateway controller now usesGenerationChangedPredicateto ignore status-only updates. #4005 #4017 - Fix counting of route attached to a listener by taking into account hostname intersection between the listener and the route. #3490 4020
2.1.4
Release date: 2026-04-23
Fixes
- Fix a hot loop in the
KonnectExtensionreconciler when twoKonnectExtensions share the same client-certificateSecret: theKongDataPlaneClientCertificateCR is now named after theKonnectExtensioninstead of theSecret, so each extension gets its own CR in its own Konnect ControlPlane and the reconciler no longer retriesCreateon every loop or falls back to Konnectāsdp-client-certificatesList API. #3961 #3973 - Fix the hybrid gateway translator to set
protocolsin translated KongRoutes tohttp,httpsto avoid 426 errors from Konnect hybrid gateways. #3753 3759 - Revert change in configuring SNIs in ingress-controller when running with local controlplane. #3761 3764
- Fix
KongPluginadmission validation when multiple Kong Gateway Admin API clients are discovered: probe plugin schema on every gateway (order-independent), validate only on gateways that expose the plugin, and fall back to the previous single-client behavior when none match. Partial probe failures on one gateway do not reject admission if another gateway exposes the plugin. Avoids false rejections when plugin bundles differ across gateways. #3754 #3835 - Fix
ResolvedRefsstatus condition onHTTPRoutenot being updated when a referencedKongPluginis deleted in self-managed ControlPlane mode. #3206 #3836 - Fix incorrect Konnect API used for target lookup #3910 #3938
- HybridGateway: fix
HTTPRoutehostname intersection withGatewaylisteners to follow Gateway API semantics. Routes that specify no hostnames now inherit the matching listenersā hostnames instead of being dropped, wildcard hostnames (*and*.example.com) are supported and intersected with listener hostnames, and wildcards no longer match the bare apex domain. This enables theHTTPRouteHostnameIntersectionGateway API conformance test for Hybrid mode. #4077
2.1.3
Release date: 2026-03-25
Fixes
- Admission webhook now validates HTTPRoute regex patterns before sending configuration to the Admin API. #3213 #3666
- Do not try to list
Gateways for namespaces that are not being watched by controller #3625 #3629 - Fix
ensureGatewayReferenceStatusRemovedandrouteHasKongParentStatusnot scoping to the specific Gateway whenGatewayNNis set. This could cause one ingress-controller instance to erroneously remove route parent statuses set by another instance managing a different Gateway, breaking cross-namespace HTTPRoute backend references viaReferenceGrant. #3524 #3561 - Fix
KonnectGatewayControlPlanenot settingProgrammed=Falsewhen itsKonnectAPIAuthConfigurationreference cannot be resolved (e.g. the auth config does not exist, or a cross-namespace reference lacks aKongReferenceGrant). BothAPIAuthResolvedRefandProgrammedconditions are now set toFalseatomically. #3526 #3640 - Fix configuring SNIs in ingress-controller when running with local controlplane. #3554 #3667
- Fix reducing
Secrets with in use finalizers. #3506#3670 - Fix KongUpstream and KongService names in hybrid mode not taking into account backendless rules. When a rule has no BackendRefs, the generated KongUpsteam and KongService names now include a hash of ruleās other field to avoid naming collisions with other rules that also have no BackendRefs. #3576 #3675
- Fix the on-prem translator to set
protocolsin translated Kong routes tohttp,https. #3587 #3681
2.1.2
Release date: 2026-03-05
Fixes
- Fix handling removal of annotations for DataPlaneās Services #3402 #3420
- Fix Gateway controller deleting all DataPlanes when KonnectExtensionās
ControlPlaneRefValidcondition is temporarily False due to transient Konnect API failures. DataPlanes now continue serving traffic during Konnect connectivity issues. AddedNotProgrammedcondition reason to differentiate transient failures from permanent reference errors. #3463 #3495
2.1.1
Release date: 2026-02-19
Fixes
- Fix setting up indices for HTTPRoute and Gateway when Konnect controllers are disabled. #3229 #3234
- Fix v2 module #3346 #3353
- Bump Go to 1.25.7 #3230 #3235
- Name of Konnect Gateway Control Plane resource created in Konnect matches
the name of the corresponding
KonnectGatewayControlPlaneresource in Kubernetes (the same random suffix is added). It prevents collisions in Konnect. #3357 #3368 - Use the same defaults for
preserve_hostandstrip_pathin for Konnect Gateway Control Plane as in self-managed. #3366 #3377 - Fix not resetting resource errors in ControlPlaneās DB mode from previous
Update()calls to prevent stale errors from leaking into subsequent calls. #3315 #3369
2.1.0
Release date: 2026-02-05
Added
- Gateway: Added support for static naming of Gateway resources via the
konghq.com/operator-static-namingannotation. When set totrue, the DataPlane, ControlPlane, and KonnectGatewayControlPlane resources will be named exactly as the Gateway resource instead of using auto-generated names. #3015 - HybridGateway: Added support to PathPrefixMatch for the
URLRewriteHTTPRoutefilter. #3039 - HybridGateway: Added comprehensive HTTPRoute converter tests to improve translation stability. #3111
- Support cross namespace references from
KongPluginBindingtoKongPlugin. For this reference to be allowed, aKongReferenceGrantresource must be created in the namespace of theKongPlugin, allowing access for theKongPluginBinding. #3108 - HybridGateway: Added support to PathPrefixMatch for the
RequestRedirectHTTPRoutefilter. #3065 - Support cross namespace references from
KongRoutetoKongService. For this reference to be allowed, aKongReferenceGrantresource must be created in the namespace of theKongService, allowing access for theKongRoute. #3125 - Gracefully handle network errors when communicating with Konnect API. When a network error occurs during Konnect API operations, the operator will patch the resource status conditions to indicate the failure and requeue the reconciliation for a later retry. #3184
DataPlane: Enable incremental config sync by default when using Konnect as control plane. This improves performance of config syncs for large configurations. #2759KongCertificate: Add support for sourcing certificates from Kubernetes Secrets. This allows users to define KongCertificates that reference existing Kubernetes Secrets containing TLS certificate and key data, instead of embedding them inline. #2802KongCACertificate: Add support for sourcing CA certificates from Kubernetes Secrets. This allows users to define KongCACertificates that references existing Kubernetes Secrets containing TLS CA certificate instead of embedding them inline #2482KongReferenceGrantCRD has been added to allow cross-namespace references among Konnect entities API. This new resource is to be intended as the Kong version of the original Gateway APIReferenceGrantCRD. #2855- Hybrid Gateway: specify the protocol field of the generated
KongServiceresources #2872 - Hybrid Gateway: the creation and deletion of the Kong resources derived from
HTTPRoutes is now performed in multiple steps that account for dependencies among the generated resources. #2857 -
Added support for cross namespace references between the following Konnect entities and
KonnectGatewayControlPlaneKongServiceKongRouteKongUpstreamKongCertificateKongCACertificateKongConsumerKongConsumerGroupKongKeyKongKeySetKongVaultKongDataPlaneClientCertificate
To allow these references, users need to define a
KongReferenceGrantresource in the namespace of the referenced resource, allowing access to theKonnectGatewayControlPlane. #2892 #2913 #3033 #3040 #3044 #3064 #3069 #3052 #3082 #3086 -
Added support for cross namespace references between the following Konnect entities and
coreSecretKongCertificateKongCACertificate
To allow these references, users need to define a
KongReferenceGrantresource in the namespace of the referenced resource, allowing access to theSecret. #2904 - Hybrid Gateway: The operator now supports configuring TLS termination on Gateway listeners in hybrid mode.When you define a TLS listener on a Gateway resource, the operator will automatically create the necessary KongCertificate and KongSNI resources to configure the data plane. This allows for managing TLS certificates for Gateways in a Kubernetes-native way. #2915
- Cross-namespace references from
KonnectGatewayControlPlanetoKonnectAPIAuthConfigurationare allowed now and requireKongReferenceGrant. Similarly cross-namespace references fromHTTPRoutetoServiceare also supported and requireReferenceGrantin place. #2483 - Hybrid Gateway support: Gateway API objects bound to
Gateways programmed in Konnect are converted into Konnect entities and used to configure the hybridDataPlane. #2134 #2143 #2177 #2260 - Add comprehensive HTTPRoute reconciliation that translates Gateway API HTTPRoutes into Kong-specific resources for hybrid gateway deployments. #2308
- Hybrid Gateway: add support to HTTPRoute hostnames translation
#2346
- Enforce state and cleanup for Kong entities
- Introduced managedfields package for structured merge diff, including compare, extract, prune, and schema utilities with comprehensive tests.
- Refactored builder and converter logic for KongRoute, KongService, KongTarget, KongUpstream, and HTTPRoute.
- Enhanced metadata labeling and reconciliation logic for HTTPRoute; added resource ownership tracking via watches.
- Added generated schema in zz_generated_schema.go for resource types.
- Improved and extended unit tests for hybridgateway components. 2355
- Hybrid Gateway: add Konnect specific fields to
GatewayConfigurationCRD. #2390 #2405 - Hybrid Gateway: implement granular accepted and programmed conditions for HTTPRoute status This commit introduces comprehensive support for āAcceptedā and āProgrammedā status conditions on HTTPRoute resources in the hybridgateway controller. The new logic evaluates each ParentReference for controller ownership, Gateway/GatewayClass support, listener matching, and resource programming status. For every relevant Kong resource (KongRoute, KongService, KongTarget, KongUpstream, KongPlugin, KongPluginBinding), the controller sets detailed programmed conditions, providing clear feedback on which resources are operational and which are not. The update also refactors builder and metadata logic to ensure labels and annotations are correctly set for all managed resources, and improves test coverage for label, annotation, and hostname intersection handling. Legacy status controller code is removed, and the reconciliation flow is streamlined to use the new status enforcement and translation logic. This enables more robust troubleshooting and visibility for users, ensuring HTTPRoute status accurately reflects the readiness and configuration of all associated Kong resources. #2400
- ManagedFields: improve pruning of empty fields in unstructured objects
- Enhance pruneEmptyFields to recursively remove empty maps from slices and maps, including those that become empty after nested pruning.
- Update logic to remove empty slices and zero-value fields more robustly.
- Expand and refine unit tests in prune_test.go to cover all edge cases, including:
- Nested empty maps and slices
- Removal of empty maps from slices
- Handling of mixed-type slices
- Deeply nested pruning scenarios
- Preservation of non-map elements in slices #2413
- Entity Adoption support: support adopting an existing entity from Konnect to
a Kubernetes custom resource for managing the existing entity by KO.
- Add adoption options to the CRDs supporting adopting entities from Konnect. #2336
- Add
adopt.modefield to the CRDs that support adopting existing entities. Supported modes:match: read-only adoption. The operator adopts the referenced remote entity only when this CRās spec matches the remote configuration (no writes to the remote system). If they differ, adoption fails and the operator does not take ownership until the spec is aligned.override: The operator overrides the remote entity with the spec in the CR. #2421 #2424
- Implement the general handling process of adopting an existing entity and
adoption procedure for
KongServices inmatchandoverridemode. #2424 - Implement the Match mode for adoption for Konnect cloud gateway entities #2429
- Implement adoption support for
KongCertificate,KongCACertificateandKongSNI#2484 - Implement adoption support for
KongVault. #2490 - Implement adoption for
KongKeyandKongKeySetresources #2487 - Implement adoption support for
KongConsumerandKongConsumerGroup#2493 - Implement adoption for
KongPluginBinding. #2492 - Implement adoption support for
KongCredentialAPIKey,KongCredentialBasicAuth,KongCredentialACL,KongCredentialJWT, andKongCredentialHMAC#2494 - Implement adoption support for
KongDataPlaneClientCertificate. #2678
- HybridGateway:
- Added controller-runtime watches for Gateway and GatewayClass resources to the hybridgateway controller.
- HTTPRoutes are now reconciled when related Gateway or GatewayClass resources change.
- Improved event mapping and indexing logic for efficient reconciliation.
- Added unit tests for new watch and index logic. #2419
- Provision hybrid Gateway: implement support for provisioning hybrid Gateways with
gateway api
GatewayandGatewayConfigurationresources. #2457 - Add support to HTTPRoute RequestRedirect filter #2470
- Add CLI flag
--enable-fqdn-modeto enable Fully Qualified Domain Name (FQDN) mode for service discovery. When enabled, Kong targets are configured to use service FQDNs (e.g.,service.namespace.svc.cluster.local) instead of individual pod endpoint IPs. #2607 - Gateway: support per-Gateway infrastructure configuration
GEP-1867 via
GatewayConfigurationCRD. #2653 - HybridGateway: reworked generated resources lifecycle management. HTTPRoute ownership on the resources
is now tracked through the
gateway-operator.konghq.com/hybrid-routesannotation. The same generated resource can now be shared among different HTTPRoutes. #2656 - HybridGateway: implemented
ExtensionReffilters to allow reference of self-managed plugins fromHTTPRoutesā filters. #2715 KonnectAPIAuthConfigurationresources now have automatic finalizer management to prevent deletion when they are actively referenced by other Konnect resources (KonnectGatewayControlPlane,KonnectCloudGatewayNetwork,KonnectExtension). The finalizerkonnect.konghq.com/konnectapiauth-in-useis automatically added when references exist and removed when all referencing resources are deleted. #2726- Add the following configuration flags for setting the maximum number of concurrent
reconciliation requests that can be processed by each controller group:
--max-concurrent-reconciles-dataplane-controllerfor DataPlane controllers.--max-concurrent-reconciles-controlplane-controllerfor ControlPlane controllers.--max-concurrent-reconciles-gateway-controllerfor Gateway controllers.
NOTE: Konnect entities controllers still respect the
--konnect-controller-max-concurrent-reconcilesflag. #2652
Changed
- Removed the
KonnectIDtype of control plane reference in CRDs for Konnect entities as it is not supported. #2966 - Move management of bootstrapping CA certificate (that is used for signing
certificates for ControlPlane - DataPlane communication) to Helm Chart,
deprecate flags
--cluster-ca-key-typeand--cluster-ca-key-sizenow those values are inferred automatically based on the CA certificate Secret. Read more in Helm Chart release notes. #3084 - HybridGateway: Include readable backend context in generated KongService and KongUpstream names (with stable hashes) to improve UX in Konnect. #3121
- kong/kong-gateway v3.12 is the default proxy image. #2391
- For Hybrid
Gateways the operator does not run theControlPlaneanymore, as theDataPlaneis configured to useKokoas Konnect control plane. #2253 - HybridGateway auto-generated resource names has been revised. #2566
- Update Gateway API to 1.4.0 and k8s libraries to 1.34. #2451
DataPlaneāsspec.network.services.ingress.portsnow allows up to 64 ports to be specified. This alignsDataPlanewith Gateway APIsāGateway. #2722- In Konnect controllers, ignore
NotFounderrors when removing the finalizer from the resource. #2911
Fixes
- Fix validation logic for dataplane ports in admission policy. #3031
- Add maxLength and pattern validations for
KongConsumerandKongConsumerGroupfields. #3109 - Gateway: Sort Gateway/DataPlane status addresses deterministically with hostname-first priority. #3110
- HybridGateway: Fixed the logic of translating
HTTPRoutepath matches to paths in the generatedKongRoute. #2996 - HybridGateway: Add the
~*prefix to mark the header should be matched by regular expression in the translatedKongRoutewhen theHTTPRouteās header match has theRegularExpressiontype. #2995 - Fixes a panic in KonnectExtension controller when Control Plane is not found. #3054
- Fixed an issue where users could set the secret of configmap label selectors to empty when the other one was left non-empty. #2810
- Handle Konnect API 429 rate limit responses by requeuing resources with the appropriate retry-after duration from the response header. #2856
- Hybrid Gateway: generate a single KongRoute for each HTTPRoute Rule #2417
- Fix issue with deletion of
KonnectExtensionwhen the referencedKonnectGatewayControlPlaneis deleted (it used to hang indefinitely). #2423 - Hybrid Gateway: add watchers for KongPlugin and KongPluginBinding #2427
- Hybrid Gateway: attach KongService generation to BackendRefs and fix filter/plugin conversion. #2456
- Translate
healthchecks.thresholdinKongUpstreamPolicyto thehealthchecks.thresholdfield in Kong upstreams. #2662 - Reject CA Secrets with multiple PEM certs. #2671
- Fix the default values of
combinedServicesFromDifferentHTTPRoutesanddrainSupportinControlPlaneTranslationOptionsnot being set correctly. #2589 - Fix random, unexpected and invalid validation error during validation of
HTTPRoutes forGateways configured in different namespaces withGatewayConfigurationthat has fieldspec.controlPlaneOptions.watchNamespaces.typeset toown. #2717 - Gateway controllers now watch changes on Secrets referenced by
spec.listeners.tls.certificateRef, ensuring Gateway status conditions are updated when referenced certificates change. #2661
2.0.12
Release date: 2026-08-27
Fixes
- Konnect entities: Fix truncating of tags to cut at 128 unicode runes (UTF8 code points). #5306 #5372
- Dataplane: Fixed the method to compare whether dataplane options are deep
equal to ensure that
HorizontalPodAutoscaleris updated when it is changed inGatewayConfiguration. Also fixed the calculation of the spec hash in theDeploymentto skip reconciliation of deployments if onlydeployment.scalingis changed in dataplane options. #5003 #5373
2.0.9
Release date: 2026-04-23
Fixed
- Fix a hot loop in the
KonnectExtensionreconciler when twoKonnectExtensions share the same client-certificateSecret: theKongDataPlaneClientCertificateCR is now named after theKonnectExtensioninstead of theSecret, so each extension gets its own CR in its own Konnect ControlPlane and the reconciler no longer retriesCreateon every loop or falls back to Konnectāsdp-client-certificatesList API. #3961 #3978 - Fix incorrect Konnect API used for target lookup #3910 #3939
2.0.6
Release date: 2025-12-01
Fixes
- Translate
healtchchecks.thersholdinKongUpstreamPolicyto thehealthchecks.thersholdfield in Kong upstreams. #2662 - Fix random, unexpected and invalid validation error during validation of
HTTPRoutes forGateways configured in different namespaces withGatewayConfigurationthat has fieldspec.controlPlaneOptions.watchNamespaces.typeset toown. #2717 - Reject CA Secrets with multiple PEM certs. #2671
- Gateway controllers now watch changes on Secrets referenced by
spec.listeners.tls.certificateRef, ensuring Gateway status conditions are updated when referenced certificates change. #2661 - Trigger reconciliation events on
KongPlugins upon changes onKongPluginBinding. #2637
2.0.3
Release date: 2025-09-30
Fixes
- Do not validate
Secrets andConfigMaps that are used internally by the operator. This prevents issues when those resources are created during bootstrapping of the operator, before the validating webhook is ready. #2356 - Add the
status.clusterTypeinKonnectGatewayControlPlaneand set it when KO attached theKonnectGatewayControlPlanewith the control plane in Konnect. TheKonnectExtensionnow get the cluster type to fill itsstatus.konnect.clusterTypefrom thestatusTypeofKonnectGatewayControlPlaneto fix the incorrect cluster type filled in the status when the control plane is mirrored from an existing control plane in Konnect. #2343
2.0.0
Release date: 2025-09-09
KGO becomes KO, which stands for Kong Operator. Kubernetes Gateway Operator and Kubernetes Ingress Controller become a single product. Furthermore, Kong Operator provides all features that used to be reserved for the Enterprise flavor of Kong Gateway Operator.
Breaking Changes
KonnectExtensionhas been bumped tov1alpha2and the Control plane reference via plainKonnectIDhas been removed.MirrorGatewayControlPlaneresource is now the only way to reference remote control planes in read-only. #1711- Rename product from Kong Gateway Operator to Kong Operator. #1767
- Add
--cluster-domainflag and set default to'cluster.local'This commit introduces a new--cluster-domainflag to the KO binary, which is now propagated to the ingress-controller. The default value for the cluster domain is set to'cluster.local', whereas previously it was an empty string (''). This is a breaking change, as any code or configuration relying on the previous default will now use'cluster.local'unless explicitly overridden. #1870 - Introduce
ControlPlanein versionv2alpha1- Usage of the last valid config for fallback configuration is enabled by default,
can be adjusted in the
spec.translation.fallbackConfiguration.useLastValidConfigfield. #1939
- Usage of the last valid config for fallback configuration is enabled by default,
can be adjusted in the
ControlPlanev2alpha1has been replaced byControlPlanev2beta1.GatewayConfigurationv2alpha1has been replaced byGatewayConfigurationv2beta1. #2008- Add flags
--secret-label-selectorand--config-map-label-selectorto filter watchedSecrets andConfigMaps. Only secrets or configMaps with the given label totrueare reconciled by the controllers. For example, if--secret-label-selectoris set tokonghq.com/secret, onlySecrets with the labelkonghq.com/secret=trueare reconciled. The default value of the two labels are set tokonghq.com/secretandkonghq.com/configmap. #1922 GatewayConfigurationv1beta1has been replaced by the new API versionv2alpha1. TheGatewayConfigurationv1beta1is still available but has been marked as deprecated. #1792- Removed
KongIngress,TCPIngressandUDPIngressCRDs together with their controllers. For migration guidance from these resources to Gateway API, please refer to the migration documentation. #1971 - Change env vars prefix from
GATEWAY_OPERATOR_toKONG_OPERATOR_.GATEWAY_OPERATOR_prefixed env vars are still accepted but reported as deprecated. #2004
Added
- Support for
cert-managercertificate provisioning for webhooks in Helm Chart. #2122 - Support specifying labels to filter watched
Secrets andConfigMaps of eachControlPlanebyspec.objectFilters.secrets.matchLabelsandspec.objectFilters.configMaps.matchLabels. Only secrets or configmaps that have the labels matching the specified labels in spec are reconciled. If Kong operator has also flags--secret-label-selectoror--config-map-label-selectorset, the controller for eachControlPlanealso requires reconciled secrets or configmaps to set the labels given in the flags totrue. #1982 - Add conversion webhook for
KonnectGatewayControlPlaneto support seamless conversion between oldv1alpha1and newv1alpha2API versions. #2023 - Add Konnect related configuration fields to
ControlPlanespec, allowing fine-grained control over Konnect integration settings including consumer synchronization, licensing configuration, node refresh periods, and config upload periods. #2009 - Added
OptionsValidcondition toControlPlanesā status. The status is set toTrueif theControlPlaneās options in itsspecis valid and set toFalseif the options are invalid against the operatorās configuration. #2070 - Added
APIConversioninterface to bootstrap Gateway API support in Konnect hybrid mode. #2134 - Move implementation of ControlPlane Extensions mechanism and DataPlaneMetricsExtension from EE. #1583
- Move implementation of certificate management for Konnect DPs from EE. #1590
ControlPlanestatus fieldscontrollersandfeatureGatesare filled in with actual configured values based on the defaults and thespecfields. #1771- Added the following CLI flags to control operatorās behavior:
- Support the following configuration for running control plane managers in
the
ControlPlaneCRD:- Specifying the delay to wait for Kubernetes object caches sync before
updating dataplanes by
spec.cache.initSyncDuration#1858 - Specifying the period and timeout of syncing Kong configuration to dataplanes
by
spec.dataplaneSync.intervalandspec.dataplaneSync.timeout#1886 - Specifying the combined services from HTTPRoutes feature via
by
spec.translation.combinedServicesFromDifferentHTTPRoutes#1934 - Specifying the drain support by
spec.translation.drainSupport#1940
- Specifying the delay to wait for Kubernetes object caches sync before
updating dataplanes by
- Introduce flags
--apiserver-hostfor API,--apiserver-qpsand--apiserver-burstto control the QPS and burst (rate-limiting) for the Kubernetes API server client. #1887 - Introduce the flag
--emit-kubernetes-eventsto enable/disable the creation of Kubernetes events in theControlPlane. The default value istrue. #1888 - Added the flag
--enable-controlplane-config-dumpto enable debug server for dumping Kong configuration translated fromControlPlanes and flag--controlplane-config-dump-bind-addressto set the bind address of server. You can accessGET /debug/controlplanesto list managedControlPlanes and get response like{"controlPlanes":[{"namespace":"default","name":"kong-12345","id":"abcd1234-..."}]}listing the namespace, name and UID of managedControlPlanes. CallingGET /debug/controlplanes/namespace/{namespace}/name/{name}/config/{req_type}can dump Kong configuration of a specificControlPlane. This endpoint is only available when theControlPlaneāsspec.configDump.stateis set toenabled. The{req_type}stands for the request type of dumping configuration. Supported{req_type}s are:successfulfor configuration in the last successful application.failedfor configuration in the last failed application.fallbackfor configuration applied in the last fallback procedure.raw-errorfor raw errors returned from the dataplane in the last failed application.diff-reportfor summaries of differences between the last applied configuration and the configuration in the dataplane before that application. It requires theControlPlanesetspec.configDump.dumpSensitivetoenabled. #1894
- Introduce the flag
--watch-namespacesto specify which namespaces the operator should watch for configuration resources. The default value is""which makes the operator watch all namespaces. This flag is checked against theControlPlaneāsspec.watchNamespacesfield duringControlPlanereconciliation and if incompatible,ControlPlanereconciliation returns with an error. #1958 #1974 - Refactored Konnect extension processing for
ControlPlaneandDataPlaneresources by introducing theExtensionProcessorinterface. This change enables KonnecExtensions forControlPlane v2alpha1. #1978
Changes
ControlPlaneprovisioned conditionsā reasons have been renamed to actually reflect the new operator architecture.PodsReadyis nowProvisionedandPodsNotReadyis nowProvisioningInProgress. #1985- Vendor gateway-operator CRDs locally and switch Kustomize to use the vendored source. #2195
kong/kong-gatewayv3.11 is the default proxy image. #2212
Fixes
- Do not check āProgrammedā condition in status of
Gatewaylisteners in extracting certificates in controlplaneās translation of Kong configuration. This fixes the disappearance of certificates when deployment status ofDataPlaneowned by the gateway (including deletion of pods, rolling update of dataplane deployment, scaling of dataplane and so on). #2038 - Correctly assume default Kong router flavor is
traditional_compatiblewhenKONG_ROUTER_FLAVORis not set. This fixes incorrectly populatedGatewayClass.status.supportedFeatureswhen the default was assumed to beexpressions. #2043 - Support setting exposed nodeport of the dataplane service for
Gateways bynodePortfield inspec.listenersOptions. #2058 - Fixed lack of
instance_nameandprotocolsreconciliation forKongPluginBindingwhen reconciling against Konnect. #1681 - The
KonnectExtensionstatus is kept updated when theKonnectGatewayControlPlaneis deleted and re-created. When this happens, theKonnectGatewayControlPlanesees its Konnect ID changed, as well as the endpoints. All this data is constantly enforced into theKonnectExtensionstatus. #1684 - Fix the issue that invalid label value causing ingress controller fails to
store the license from Konnect into
Secret. #1976 - Fixed a missing watch in
GatewayClassreconciler for relatedGatewayConfigurationresources. #2161
1.6.1
Release date: 2025-05-22
Changed
- Allowed the
kubectl rollout restartoperation for Deployment resources created via DataPlane CRD. #1660
1.6.0
Release date: 2025-05-07
Added
- In
KonnectGatewayControlPlanefieldsStatus.Endpoints.ControlPlaneEndpointandStatus.Endpoints.TelemetryEndpointare filled with respective values from Konnect. #1415 - Add
namespacedRefsupport for referencing networks inKonnectCloudGatewayDataPlaneGroupConfiguration#1423 - Introduced new CLI flags:
--logging-mode(orGATEWAY_OPERATOR_LOGGING_MODEenv var) to set the logging mode (developmentcan be set for simplified logging).--validate-images(orGATEWAY_OPERATOR_VALIDATE_IMAGESenv var) to enable ControlPlane and DataPlane image validation (itās set by default totrue). #1435
- Add support for
-enforce-configforControlPlaneāsValidatingWebhookConfiguration. This allows to use operatorāsControlPlaneresources in AKS clusters. #1512 KongRoutecan be migrated from serviceless to service bound and vice versa. #1492- Add
KonnectCloudGatewayTransitGatewaycontroller to support managing Konnect transit gateways. #1489 - Added support for setting
PodDisruptionBudgetinGatewayConfigurationāsDataPlaneoptions. #1526 - Added
spec.watchNamespacefield toControlPlaneandGatewayConfigurationCRDs to allow watching resources only in the specified namespace. Whenspec.watchNamespace.type=listis used, each specified namespace requires aWatchNamespaceGrantthat allows theControlPlaneto watch resources in the specified namespace. Aforementioned list is extended withControlPlaneās own namespace which doesnāt require saidWatchNamespaceGrant. #1388 #1410 #1555 For more information on this please see: https://developer.konghq.com/operator/reference/control-plane-watch-namespaces/#controlplane-s-watchnamespaces-field - Implemented
MirrorandOriginKonnectGatewayControlPlanes. #1496
Changes
- Deduce
KonnectCloudGatewayDataPlaneGroupConfigurationregion based on the attachedKonnectAPIAuthConfigurationinstead of using a hardcodedeuvalue. #1409 - Support
NodePortas ingress service type forDataPlane#1430 - Allow setting
NodePortport number for ingress service forDataPlane. #1516 - Updated
kubernetes-configurationdependency for addingscalesubresource forDataPlaneCRD. #1523 - Bump
kong/kubernetes-configurationdependency to v1.4.0 #1574
Fixes
- Fix setting the defaults for
GatewayConfigurationāsReadinessProbewhen only timeouts and/or delays are specified. Now the HTTPGet field is set to/status/readyas expected with theGatewayscenario. #1395 - Fix ingress service name not being applied when using
GatewayConfiguration. #1515 - Fix ingress service port name setting. #1524
1.5.1
Release date: 2025-04-01
Added
- Add
namespacedRefsupport for referencing networks inKonnectCloudGatewayDataPlaneGroupConfiguration#1425 - Set
ControlPlaneRefValidcondition to false when reference toKonnectGatewayControlPlaneis invalid #1421
Changes
- Deduce
KonnectCloudGatewayDataPlaneGroupConfigurationregion based on the attachedKonnectAPIAuthConfigurationinstead of using a hardcodedeuvalue. #1417 - Bump
kong/kubernetes-configurationdependency to v1.3.
1.5.0
Release date: 2025-03-11
Breaking Changes
- Added check of whether using
Secretin another namespace inAIGatewayāsspec.cloudProviderCredentialsis allowed. If theAIGatewayand theSecretreferenced inspec.cloudProviderCredentialsare not in the same namespace, there MUST be aReferenceGrantin the namespace of theSecretthat allows theAIGateways to reference theSecret. This may break usage ofAIGateways that is already usingSecretin other namespaces as AI cloud provider credentials. #1161 - Migrate KGO CRDs to the kubernetes-configuration repo.
With this migration process, we have removed the
apiandpkg/clientsetfrom the KGO repo. This is a breaking change which requires manual action for projects that use operatorās Go APIs. In order to migrate please use the import paths from the kong/kubernetes-configuration repo instead. For example:github.com/kong/kong-operator/api/v1beta1becomesgithub.com/kong/kubernetes-configuration/api/gateway-operator/v1beta1. #1148 - Support for the
konnect-extension.gateway-operator.konghq.comCRD has been interrupted. The new APIkonnect-extension.konnect.konghq.commust be used instead. The migration path is described in the Kong documentation. #1183 - Migrate KGO CRDs conditions to the kubernetes-configuration repo. With this migration process, we have moved all conditions from the KGO repo to kubernetes-configuration. This is a breaking change which requires manual action for projects that use operatorās Go conditions types. In order to migrate please use the import paths from the kong/kubernetes-configuration repo instead. #1281 #1305 #1306 #1318
Added
- Added
Namefield inServiceOptionsto allow specifying name of the owning service. Currently specifying ingress service ofDataPlaneis supported. #966 - Added support for global plugins with
KongPluginBindingāsscopefield. The default value isOnlyTargetswhich means that the plugin will be applied only to the targets specified in thetargetsfield. The new alternative isGlobalInControlPlanethat will make the plugin apply globally in a control plane. #1052 - Added
-cluster-ca-key-typeand-cluster-ca-key-sizeCLI flags to allow configuring cluster CA private key type and size. Currently allowed values:rsaandecdsa(default). #1081 - The
GatewayClassAccepted Condition is set toFalsewith reasonInvalidParametersin case the.spec.parametersReffield is not a valid reference to an existingGatewayConfigurationobject. #1021 - The
SupportedFeaturesfield is properly set in theGatewayClassstatus. It requires the experimental version of Gateway API (as of v1.2.x) installed in your cluster, and the flag--enable-gateway-api-experimentalset. #1010 - Added support for
KongConsumercredentialsin Konnect entities support. Users can now specify credentials forKongConsumers inSecrets and reference them inKongConsumersācredentialsfield. - Added prometheus metrics for Konnect entity operations in the metrics server:
gateway_operator_konnect_entity_operation_countfor number of operations.gateway_operator_konnect_entity_operation_duration_millisecondsfor duration of operations. #953
- Added support for
KonnectCloudGatewayNetworkCRD which can manage Konnect Cloud Gateway Network entities. #1136 - Reconcile affected
KonnectExtensions when theSecretused as Dataplane certificate is modified. A secret must have thekonghq.com/konnect-dp-certlabel to trigger the reconciliation. #1250 - When the
DataPlaneis configured in Konnect, the/status/readyendpoint is set as the readiness probe. #1235 - Added support for
KonnectDataPlaneGroupConfigurationCRD which can manage Konnect Cloud Gateway DataPlane Group configurations entities. #1186 - Supported
KonnectExtensionto attach to Konnect control planes by setting namespace and name ofKonnectGatewayControlPlaneinspec.konnectControlPlane. #1254 - Added support for
KonnectExtensions onControlPlanes. #1262 - Added support for
KonnectExtensionāsstatuscontrolPlaneRefsanddataPlaneRefsfields. #1297 - Added support for
KonnectExtensions onGateways viaGatewayConfigurationextensibility. #1292 - Added
-enforce-configflag to enforce the configuration of theControlPlaneandDataPlaneDeployments. #1307 - Added Automatic secret provisioning for
KonnectExtensioncertificates. #1304
Changed
KonnectExtensiondoes not requirespec.serverHostnameto be set by a user anymore - default is set tokonghq.com. #947- Support KIC 3.4 #972
- Allow more than 1 replica for
ControlPlaneāsDeploymentto support HA deployments of KIC. #978 - Removed support for the migration of legacy labels so upgrading the operator from 1.3 (or older) to 1.5.0, should be done through 1.4.1 #976
- Move
ControlPlaneimagevalidation to CRD CEL rules. #984 - Remove usage of
kube-rbac-proxy. Its functionality of can be now achieved by using the new flag--metrics-access-filter(or a correspondingGATEWAY_OPERATOR_METRICS_ACCESS_FILTERenv). The default value for the flag isoffwhich doesnāt restrict the access to the metrics endpoint. The flag can be set torbacwhich will configure KGO to verify the token sent with the request. For more information on this migration please consult kubernetes-sigs/kubebuilder#3907. #956 - Move
DataPlaneports validation toValidationAdmissionPolicyandValidationAdmissionPolicyBinding. #1007 - Move
DataPlanedb mode validation to CRD CEL validation expressions. With this change only theKONG_DATABASEenvironment variable directly set in thepodTemplateSpecis validated.EnvFromis not evaluated anymore for this validation. #1049 - Move
DataPlanepromotion in progress validation to CRD CEL validation expressions. This is relevant forDataPlanes with BlueGreen rollouts enabled only. #1054 - Move
DataPlaneās rollout strategy validation of disallowedAutomaticPromotionto CRD CEL validation expressions. This is relevant forDataPlanes with BlueGreen rollouts enabled only. #1056 - Move
DataPlaneās rollout resource strategy validation of disallowedDeleteOnPromotionRecreateOnRolloutto CRD CEL validation expressions. This is relevant forDataPlanes with BlueGreen rollouts enabled only. #1065 - The
GatewayClassAccepted Condition is set toFalsewith reasonInvalidParametersin case the.spec.parametersReffield is not a valid reference to an existingGatewayConfigurationobject. #1021 - Validating webhook is now disabled by default. At this point webhook doesnāt
perform any validations.
These were all moved either to CRD CEL validation expressions or to the
ValidationAdmissionPolicy. Flag remains in place to not cause a breaking change for users that rely on it. #1066 - Remove
ValidatingAdmissionWebhookfrom the operator. As of now, all the validations have been moved to CRD CEL validation expressions or to theValidationAdmissionPolicy. All the flags that were configuring the webhook are now deprecated and do not have any effect. They will be removed in next major release. #1100 - Konnect entities that are attached to a Konnect CP through a
ControlPlaneRefdo not get an owner relationship set to theControlPlaneanymore hence they are not deleted when theControlPlaneis deleted. #1099 - Remove the owner relationship between
KongServiceandKongRoute. #1178 - Remove the owner relationship between
KongTargetandKongUpstream. #1279 - Remove the owner relationship between
KongCertificateandKongSNI. #1285 - Remove the owner relationship between
KongKeys andKongKeysSets andKonnectGatewayControlPlanes. #1291 - Check whether an error from calling Konnect API is a validation error by
HTTP status code in Konnect entity controller. If the HTTP status code is
400, we consider the error as a validation error and do not try to requeue the Konnect entity. #1226 - Credential resources used as Konnect entities that are attached to a
KongConsumerresource do not get an owner relationship set to theKongConsumeranymore hence they are not deleted when theKongConsumeris deleted. #1259
Fixes
- Fix
DataPlanes withKonnectExtensionandBlueGreensettings. Both the Live and preview deployments are now customized with Konnect-related settings. #910 - Remove
RunAsUserspecification in jobs to create webhook certificates because Openshift does not specifyingRunAsUserby default. #964 - Fix watch predicates for types shared between KGO and KIC. #948
- Fix unexpected error logs caused by passing an odd number of arguments to the logger
in the
KongConsumerreconciler. #983 - Fix checking status when using a
KonnectGatewayControlPlanewith KIC CP type as aControlPlaneRef. #1115 - Fix setting
DataPlaneās readiness probe usingGatewayConfiguration. #1118 - Fix handling Konnect API conflicts. #1176
1.4.2
Release date: 2025-01-23
Fixes
- Bump
kong/kubernetes-configurationdependency to v1.0.8 that fixes the issue withspec.headersinKongRouteCRD by aligning to the expected schema (instead ofmap[string]string, it should bemap[string][]string). Please make sure you update the KGO channel CRDs accordingly in your cluster:kustomize build github.com/Kong/kubernetes-configuration/config/crd/gateway-operator\?ref=v1.0.8 | kubectl apply -f -#1072
1.4.1
Release date: 2024-11-28
Fixes
- Fix setting the
ServiceAccountNameforDataPlaneāsDeployment. #897 - Fixed setting
ExternalTrafficPolicyonDataPlaneās ingressServicewhen the requested value is empty. #898 - Set 0 members on
KonnectGatewayControlPlanewhich type is set to group. #896 - Fixed a
panicinKonnectAPIAuthConfigurationReconcileroccurring when nil response was returned by Konnect API when fetching the organization information. #901 - Bump sdk-konnect-go version to 0.1.10 to fix handling global API endpoints. #894
1.4.0
Release date: 2024-10-31
Added
- Proper
User-Agentheader is now set on outgoing HTTP requests. #387 - Introduce
KongPluginInstallationCRD to allow installing custom Kong plugins distributed as container images. #400, #424, #474, #560, #615, #476 - Extended
DataPlaneAPI with a possibility to specifyPodDisruptionBudgetto be created for theDataPlanedeployments viaspec.resources.podDisruptionBudget. #464 - Add
KonnectAPIAuthConfigurationreconciler. #456 - Add support for Konnect tokens in
SecretsinKonnectAPIAuthConfigurationreconciler. #459 - Add
KonnectControlPlanereconciler. #462 - Add
KongServicereconciler for Konnect control planes. #470 - Add
KongUpstreamreconciler for Konnect control planes. #593 - Add
KongConsumerreconciler for Konnect control planes. #493 - Add
KongRoutereconciler for Konnect control planes. #506 - Add
KongConsumerGroupreconciler for Konnect control planes. #510 - Add
KongCACertificatereconciler for Konnect CA certificates. #626 - Add
KongCertificatereconciler for Konnect Certificates. #643 - Added command line flags to configure the certificate generator jobās images. #516
- Add
KongPluginBindingreconciler for Konnect Plugins. #513, #535 - Add
KongTargetreconciler for Konnect Targets. #627 - Add
KongVaultreconciler for Konnect Vaults. #597 - Add
KongKeyreconciler for Konnect Keys. #646 - Add
KongKeySetreconciler for Konnect KeySets. #657 - Add
KongDataPlaneClientCertificatereconciler for Konnect DataPlaneClientCertificates. #694 - The
KonnectExtensionCRD has been introduced. Such a CRD can be attached to aDataPlanevia the extensions field to have a konnect-flavoredDataPlane. #453, #578, #736 - Entities created in Konnect are now labeled (or tagged for those that does not
support labels) with origin Kubernetes objectās metadata:
k8s-name,k8s-namespace,k8s-uid,k8s-generation,k8s-kind,k8s-group,k8s-version. #565 - Add
KongService,KongRoute,KongConsumer, andKongConsumerGroupwatchers in theKongPluginBindingreconciler. #571 - Annotating the following resource with the
konghq.com/pluginsannotation results in the creation of a managedKongPluginBindingresource: KongConsumerassociated withConsumerGroupsis now reconciled in Konnect by removing/adding the consumer from/to the consumer groups. #592- Add support for
KongConsumercredentials: - Add support for
KongRoutes bound directly toKonnectGatewayControlPlanes (serviceless routes). #669 - Allow setting
KonnectGatewayControlPlanes group membership #697 - Apply Konnect-related customizations to
DataPlanes that properly referenceKonnectExtensionresources. #714 - The KonnectExtension functionality is enabled only when the
--enable-controller-konnectflag or theGATEWAY_OPERATOR_ENABLE_CONTROLLER_KONNECTenv var is set. #738
Fixes
- Fixed
ControlPlanecluster wide resources not migrating to new ownership labels (introduced in 1.3.0) when upgrading the operator from 1.2 (or older) to 1.3.0. #369 - Requeue instead of reporting an error when a finalizer removal yields a conflict. #454
- Requeue instead of reporting an error when a GatewayClass status update yields a conflict. #612
- Guard object counters with checks whether CRDs for them exist #710
- Do not reconcile Gateways nor assign any finalizers when the referred GatewayClass is not supported. #711
- Fixed setting
ExternalTrafficPolicyonDataPlaneās ingressServiceduring update and patch operations. #750 - Fixed setting
ExternalTrafficPolicyonDataPlaneās ingressService. Remove the default value (Cluster). Prevent setting this field forClusterIPServices. #812
Changes
1.3.0
Release date: 2024-06-24
Added
- Add
ExternalTrafficPolicytoDataPlaneāsServiceOptions#241
Breaking Changes
- Changes project layout to match
kubebuilderv4. Some import paths (due to dir renames) have changedapis->apiandcontrollers->controller. #84
Changes
Gatewaydo not have theirReadystatus condition set anymore. This aligns with Gateway API and its conformance test suite. #246Gatewaysā listeners now have theirattachedRoutescount filled in the status. #251- Detect when
ControlPlanehas its admission webhook disabled viaCONTROLLER_ADMISSION_WEBHOOK_LISTENenvironment variable and ensure that relevant webhook resources are not created/deleted. #326 - The
OwnerReferenceson cluster-wide resources to indicate their owner are now replaced by a proper set of labels to identifykind,namespace, andnameof the owning object. #259 - Default version of
ControlPlaneis bumped to 3.2.0 #327
Fixes
- Fix enforcing up to date
ControlPlaneāsValidatingWebhookConfiguration#225