- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.7
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.6.2
- v1.6.1
- v1.6.0
- v1.5.1
- v1.5.0
- v1.4.2
- v1.4.1
- v1.4.0
- v1.3.0
- v1.2.3
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.0
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- v0.7.0
- v0.6.0
- v0.5.0
- v0.4.0
- v0.3.0
- v0.2.0
- v0.1.1
- v0.1.0
- 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. #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
- 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
- Admission webhook now validates HTTPRoute regex patterns before sending configuration to the Admin API. #3213
- Fix setting up indices for HTTPRoute and Gateway when Konnect controllers are disabled. #3229
- Fix
ResolvedRefsstatus condition onHTTPRoutenot being updated when a referencedKongPluginis deleted in self-managed ControlPlane mode. #3206 - Fix handling removal of annotations for DataPlane's Services #3402
- 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 - Fix counting of route attached to a listener by taking into account hostname intersection between the listener and the route. #3490
- Fix reducing
Secrets with in use finalizers. #3506 - 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 - 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 - Fix configuring SNIs in ingress-controller when running with local controlplane. #3554
Release date: 2026-03-05
- Fix
ResolvedRefsstatus condition onHTTPRoutenot being updated when a referencedKongPluginis deleted in self-managed ControlPlane mode. #3206 - Fix handling removal of annotations for DataPlane's Services #3402
- 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
Release date: 2026-02-19
- Fix setting up indices for HTTPRoute and Gateway when Konnect controllers are disabled. #3234
- Fix v2 module #3353
- Bump Go to 1.25.7 #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 - Use the same defaults for
preserve_hostandstrip_pathin for Konnect Gateway Control Plane as in self-managed. #3366 - Fix not resetting resource errors in ControlPlane's DB mode from previous
Update()calls to prevent stale errors from leaking into subsequent calls. #3369
Release date: 2026-02-05
-
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. #2759 -
KongCertificate: 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. #2802 -
KongCACertificate: 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 #2482 -
KongReferenceGrantCRD 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
- 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
- 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
Release date: 2026-02-19
- Fixed an issue where users could set the secret of configmap label selectors to empty when the other one was left non-empty. #2815
- Bump Go to 1.25.7 and fix v2 module #3355
Release date: 2025-12-01
- 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
Release date: 2025-10-17
- Fix
DataPlane's volumes and volume mounts patching when specified by user #2425 - Do not cleanup
nulls in the configuration of plugins with Kong running in DBLess mode in the translator of ingress-controller. This enables user to use explicitnulls in plugins. #2459
Release date: 2025-10-03
- Fix problem with starting operator when Konnect is enabled and conversion webhook disabled. #2392
Release date: 2025-09-30
- 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
Release date: 2025-09-22
- Cleanup old objects when new
ControlPlaneis ready. Remove old finalizers fromControlPlanewhen cleanup is done. #2317 - Mark
Gateway's listeners as Programmed whenDataPlaneand itsServicesare ready. This prevents downtime during KGO -> KO upgrades and in upgrades between KO versions. #2317
Release date: 2025-09-17
- Fix incorrect error handling during cluster CA secret creation. #2250
DataPlaneis now marked as ready whenstatus.AvailableReplicasis at least equal tostatus.Replicas. #2291
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.
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
- 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 confiugration 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
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
- 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
Release date: 2025-07-11
- Ignore the
ForbiddenErrorinsdk-konnect-goreturned from running CRUD operations against Konnect APIs. This prevents endless reconciliation when an operation is not allowed (due to e.g. exhausted quota). #1811
Release date: 2025-05-22
- Allowed the
kubectl rollout restartoperation for Deployment resources created via DataPlane CRD. #1660
Release date: 2025-05-07
- 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
- 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
- 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
Release date: 2025-04-01
- Add
namespacedRefsupport for referencing networks inKonnectCloudGatewayDataPlaneGroupConfiguration#1425 - Set
ControlPlaneRefValidcondition to false when reference toKonnectGatewayControlPlaneis invalid #1421
- Deduce
KonnectCloudGatewayDataPlaneGroupConfigurationregion based on the attachedKonnectAPIAuthConfigurationinstead of using a hardcodedeuvalue. #1417 - Bump
kong/kubernetes-configurationdependency to v1.3.
Release date: 2025-03-11
- 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
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
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
- 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
Release date: 2025-01-23
- 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
Release date: 2024-11-28
- 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
Release date: 2024-10-31
- 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
- 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
- Default version of
ControlPlaneis bumped to 3.3.1 #580 - Default version of
DataPlaneis bumped to 3.8.0 #572 - Gateway API has been bumped to v1.2.0 #674
Release date: 2024-06-24
- Add
ExternalTrafficPolicytoDataPlane'sServiceOptions#241
- Changes project layout to match
kubebuilderv4. Some import paths (due to dir renames) have changedapis->apiandcontrollers->controller. #84
Gatewaydo not have theirReadystatus condition set anymore. This aligns with Gateway API and its conformance test suite. #246Gateways' listeners now have theirattachedRoutescount filled in in 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
- Fix enforcing up to date
ControlPlane'sValidatingWebhookConfiguration#225
Release date: 2024-04-23
- Fixes an issue where managed
Gateways controller wasn't able to reduce the createdDataPlaneobjects when too many have been created. #43 Gatewaycontroller will no longer setDataPlanedeployment's replicas to default value whenDataPlaneOptionsinGatewayConfigurationdefine scaling strategy. This effectively allows users to useDataPlanehorizontal autoscaling withGatewayConfigurationas the generatedDataPlanedeployment will no longer be rejected. #79- Make creating a
DataPlaneindex conditional based on enabling theControlPlanecontroller. This allows running KGO withoutControlPlaneCRD with its controller disabled. #103
Release date: 2024-04-23
v1.2.2 was retracted due to a misplaced git tag. Due to golang proxy caching modules indefinitely we needed to retract this version. v1.2.3 contains all the changes that v1.2.2 intended to contain.
Release date: 2024-03-19
- Fixed an issue where operator wasn't able to update
ControlPlaneClusterRoleorClusterRoleBindingwhen they got out of date. #11
-
KGO now uses
GATEWAY_OPERATOR_prefix for all flags, including thezaprelated logging flags. This means that the following can now be set:-zap-devel(env:GATEWAY_OPERATOR_ZAP_DEVEL)-zap-encoder(env:GATEWAY_OPERATOR_ZAP_ENCODER)-zap-log-level(env:GATEWAY_OPERATOR_ZAP_LOG_LEVEL)-zap-stacktrace-level(env:GATEWAY_OPERATOR_ZAP_STACKTRACE_LEVEL)-zap-time-encoding(env:GATEWAY_OPERATOR_ZAP_TIME_ENCODING)
For more details about those please consult
zap.Optionspkg.go.dev
Release date: 2024-03-15
- 🎓 The Managed
Gateways feature is now GA. - 🎓
ControlPlaneandGatewayConfigAPIs have been promoted tov1beta1. - ✨
DataPlanes managed byGateways can be now scaled horizontally through theGatewayConfigurationAPI. - ✨
Gatewaylisteners are dynamically mapped to theDataPlaneproxy service ports. - 🧠 The new feature
AIGatewayhas been released inalphastage.
- Added support for specifying command line flags through environment
variables having the
GATEWAY_OPERATOR_prefix. For example, you can specify the value of flag--controller-namethrough the environment variableGATEWAY_OPERATOR_CONTROLLER_NAME. kong/kong-operator-archive#1616 - Add horizontal autoscaling for
DataPlanes using itsscaling.horizontalspec field. kong/kong-operator-archive#1281 ControlPlanes now use Gateway Discovery by default, with Service DNS Strategy. Additionally, theDataPlanereadiness probe has been changed to/status/readywhen theDataPlaneis managed by aGateway. kong/kong-operator-archive#1261Gateways andListenersAcceptedandConflictedconditions are now set and enforced based on the Gateway API specifications. kong/kong-operator-archive#1398ControlPlaneClusterRoles andClusterRoleBindings are enforced and kept up to date by theControlPlanecontroller. kong/kong-operator-archive#1259- The
Gatewaylisteners are now dynamically mapped toDataPlaneingress service ports. This means that the change of aGatewayspec leads to aDataPlanereconfiguration, along with an ingress service update. kong/kong-operator-archive#1363 --enable-controller-gatewayand--enable-controller-controlplanecommand line flags are set totrueby default to enable controllers forGateways andControlPlanes. kong/kong-operator-archive#1519- When the
Gatewaycontroller provisions aControlPlane, it sets theCONTROLLER_GATEWAY_TO_RECONCILEenv variable to let theControlPlanereconcile that specificGatewayonly. kong/kong-operator-archive#1529 ControlPlaneis now deployed with a validating webhook server turned on. This involves creatingValidatingWebhookConfiguration, aServicethat exposes the webhook and aSecretthat holds a TLS certificate. TheSecretis mounted in theControlPlane'sPodfor the webhook server to use it. kong/kong-operator-archive#1539 kong/kong-operator-archive#1545- Added
konnectCertificatefield to the DataPlane resource. kong/kong-operator-archive#1517 - Added
v1alpha1.AIGatewayas an experimental API. This can be enabled by manually deploying theAIGatewayCRD and enabling the feature on the controller manager with the--enable-controller-aigatewayflag. kong/kong-operator-archive#1399 kong/kong-operator-archive#1542 - Added validation on checking if ports in
KONG_PORT_MAPSandKONG_PROXY_LISTENenvironment variables of deployment options inDataPlanematch theportsin the ingress service options of theDataPlane. kong/kong-operator-archive#1521
- The
GatewayConfigurationAPI has been promoted fromv1alpha1tov1beta1. kong/kong-operator-archive#1514 - The
ControlPlaneAPI has been promoted fromv1alpha1tov1beta1. kong/kong-operator-archive#1523 - The CRD's shortname of
ControlPlanehas been changed tokocp. The CRD's shortname ofDataPlanehas been changed tokodp. The CRD's shortname ofGatewayConfigurationhas been changed tokogc. kong/kong-operator-archive#1532 ControlPlane(Kong Ingress Controller) default and minimum version has been bumped to 3.1.2. kong/kong-operator-archive#1586DataPlane(Kong Gateway) default version has been bumped tov3.6.0. kong/kong-operator-archive#1577
- Fixed a problem where the operator would not set the defaults to
PodTemplateSpecpatch and because of that it would detect a change and try to reconcile the owned resource where in fact the change was not there. One of the symptoms of this bug could have been aStartupProbeset inPodSpecpreventing theDataPlanefrom getting correct status information. kong/kong-operator-archive#1224 - If the Gateway controller is enabled,
DataPlaneandControlPlanecontrollers get enabled as well. kong/kong-operator-archive#1242 - Fix applying the
PodTemplateSpecpatch so that it's not applied when the calculated patch (resulting from the generated manifest and current in-cluster state) is empty. One of the symptoms of this bug was that when users tried to apply aReadinessProbewhich specified a port name instead of a number (which is what's generated by the operator) it would never reconcile and the status conditions would never get up to dateObservedGeneration. kong/kong-operator-archive#1238 - Fix manager RBAC permissions which prevented the operator from being able to
create
ControlPlane'sClusterRoles, list pods or listEndpointSlices. kong/kong-operator-archive#1255 DataPlanes with BlueGreen rollout strategy enabled will now have its Ready status condition updated to reflect "live"DeploymentandServices status. kong/kong-operator-archive#1308- The
ControlPlaneelection-idhas been changed so that everyControlPlanehas its ownelection-id, based on theControlPlanename. This preventspods belonging to differentControlPlanes from competing for the same lease. kong/kong-operator-archive#1349 - Fill in the defaults for
envandvolumeswhen comparing the in-cluster spec with the generated spec. kong/kong-operator-archive#1446 - Do not flap
DataPlane'sReadystatus condition when e.g. ingressServicecan't get an address assigned andspec.network.services.ingress.annotations` is non-empty. kong/kong-operator-archive#1447 - Update or recreate a
ClusterRoleBindingfor control planes if the existing one does not contain theServiceAccountused byControlPlane, orClusterRoleis changed. kong/kong-operator-archive#1501 - Retry reconciling
Gateways when provisioning ownedDataPlanefails. kong/kong-operator-archive#1553
Release date: 2023-11-20
- Add support for
ControlPlanev3.0by updating the generatedClusterRole. kong/kong-operator-archive#1189
- Bump
ControlPlanedefault version tov3.0. kong/kong-operator-archive#1189 - Bump Gateway API to v1.0. kong/kong-operator-archive#1189
- Operator
Rolegeneration is fixed. As a result it contains now less rules hence the operator needs less permissions to run. kong/kong-operator-archive#1191
Release date: 2023-11-06
- Fix an issue where operator is upgraded from an older version and it orphans
old
DataPlaneresources. kong/kong-operator-archive#1155 kong/kong-operator-archive#1161
- Setting
spec.deployment.podTemplateSpec.spec.volumesandspec.deployment.podTemplateSpec.spec.containers[*].volumeMountsonControlPlanes is now allowed. kong/kong-operator-archive#1175
Release date: 2023-10-18
- Bump dependencies
Release date: 2023-10-02
- Fix flapping of
GatewaymanagedControlPlanespecfield when applied withoutcontrolPlaneOptionsset. kong/kong-operator-archive#1127
- Bump
ControlPlanedefault version tov2.12. kong/kong-operator-archive#1118 - Bump
WebhookCertificateConfigBaseImagetov1.3.0. kong/kong-operator-archive#1130
Release date: 2023-09-26
- Operator managed subresources are now labelled with
gateway-operator.konghq.com/managed-byadditionally to the oldkonghq.com/gateway-operatorlabel. The value associated with this label stays the same and it still indicates the type of a resource that owns the subresrouce. The old label should not be used as it will be deleted in the future. kong/kong-operator-archive#1098 - Enable
DataPlaneBlue Green rollouts controller by default. kong/kong-operator-archive#1106
- Fixes handling
Volumes andVolumeMounts when customizing throughDataPlane'sspec.deployment.podTemplateSpec.spec.containers[*].volumeMountsand/orspec.deployment.podTemplateSpec.spec.volumes. Sample manifests are updated accordingly. kong/kong-operator-archive#1095
Release date: 2023-09-13
- Added
gateway-operator.konghq.com/service-selector-overrideas the dataplane annotation to override the defaultSelectorof both the admin and proxy services. kong/kong-operator-archive#921 - Added deploying of preview Admin API service when Blue Green rollout strategy
is enabled for
DataPlanes.DataPlane'sstatus.rollout.serviceis updated accordingly. kong/kong-operator-archive#931 - Added
gateway-operator.konghq.com/promote-when-readyDataPlaneannotation to allow users to signal the operator should proceed with promoting the new resources whenBreakBeforePromotionpromotion strategy is used. kong/kong-operator-archive#938 - Added deploying of preview Deployment when Blue Green rollout strategy
is enabled for
DataPlanes. kong/kong-operator-archive#930 - Added appropriate label selectors to
DataPlanes with enabled Blue Green rollout strategy. Now Admin Service andDataPlaneDeployments correctly select their Pods. AddedDataPlane'sstatus.selectorandstatus.rollout.deployment.selectorfields. kong/kong-operator-archive#951 - Added setting rollout status with
RolledOutcondition kong/kong-operator-archive#960 - Added deploying of preview ingress service for Blue Green rollout strategy. kong/kong-operator-archive#956
- Implemented an actual promotion of a preview deployment to live state when BlueGreen rollout strategy is used. kong/kong-operator-archive#966
- Added
PromotionFailedcondition which is set onDataPlanes with Blue Green rollout strategy when promotion related activities (like updatingDataPlaneservice selector) fail. kong/kong-operator-archive#1005 - Added
spec.deployment.rollout.strategy.blueGreen.resources.plan.deploymentwhich controls how operator managesDataPlaneDeployment's during and after a rollout. This can currently take 1 value:ScaleDownOnPromotionScaleUpOnRolloutwhich will scale down theDataPlanepreview deployment to 0 replicas before a rollout is triggered via a spec change. kong/kong-operator-archive#1000
- Added admission webhook validation on of
DataPlanespec updates when the Blue Green promotion is in progress. kong/kong-operator-archive#1051 - Added
gateway-operator.konghq.com/wait-for-ownerfinalizer to all dependent resources owned byDataPlaneto prevent them from being mistakenly deleted. kong/kong-operator-archive#1052
- Fixes setting
status.readyandstatus.conditionson theDataPlanewhen it's waiting for an address to be assigned to its LoadBalancer Ingress Service. kong/kong-operator-archive#942 - Correctly set the
observedGenerationonDataPlaneandControlPlanestatus conditions. kong/kong-operator-archive#944 - Added annotation
gateway-operator.konghq.com/last-applied-annotationsto resources (e.g, IngressServicess) owned byDataPlanes to store last applied annotations to the owned resource. If an annotation is present in thegateway-operator.konghq.com/last-applied-annotationsannotation of an ingressServicebut not present in the current specification of ingressServiceannotations of the owningDataPlane, the annotation will be removed in the ingressService. kong/kong-operator-archive#936 - Correctly set the
Readycondition inDataPlanestatus field during Blue Green promotion. TheDataPlaneis considered ready whenever it has its Deployment'sAvailableReplicasequal to desired number of replicas (as perspec.replicas) and its Service has an IP assigned if it's of typeLoadBalancer. kong/kong-operator-archive#986 - Properly handles missing CRD during controller startup. Now whenever a CRD
is missing during startup a clean log entry will be printed to inform a user
why the controller was disabled.
Additionally a check for
discovery.ErrGroupDiscoveryFailedwas added during CRD lookup. kong/kong-operator-archive#1059
- Default the leader election namespace to controller namespace (
POD_NAMESPACEenv) instead of hardcoded "kong-system" kong/kong-operator-archive#927 - Renamed
DataPlaneproxy service name and label to ingress kong/kong-operator-archive#971 - Removed
DataPlanestatus.readyas it couldn't be used reliably to representDataPlane's status. Users should now usestatus.conditions'sReadycondition and compare itsobservedGenerationwithDataPlanemetadata.generationto get an accurate representation ofDataPlane's readiness. kong/kong-operator-archive#989 - Disable
ControlPlaneandGatewaycontrollers by default. Users who want to enable those can use the command line flags:-enable-controller-controlplaneand-enable-controller-gatewayAt this time, the Gateway API andControlPlaneresources that these flags are considered a feature preview, and are not supported. Use these only in non-production scenarios until these features are graduated to GA. kong/kong-operator-archive#1026
- Bump
ControlPlanedefault version tov2.11.1and remove support for older versions. To satisfy this change, useProgrammedcondition instead ofReadyin Gateway Listeners status conditions to makeControlPlanebe able to attach routes to those listeners. This stems from the fact that KICv2.11bumped support for Gateway API tov0.7.1. kong/kong-operator-archive#1041 - Bump Gateway API to v0.7.1. kong/kong-operator-archive#1047
- Operator doesn't change the
DataPlaneresource anymore by filling it with Kong Gateway environment variables. Instead this is now happening on the fly so theDataPlaneresources applied by users stay as submitted. kong/kong-operator-archive#1034 - Don't use
Provisionedstatus condition type onDataPlanes. From now onDataPlanes are only expressing their status throughReadystatus condition. kong/kong-operator-archive#1043 - Bump default
DataPlaneimage to 3.4 kong/kong-operator-archive#1067 - When rollout strategy is removed from a
DataPlanespec, preview subresources are removed. kong/kong-operator-archive#1066
Release date: 2023-07-20
- Added
Ready,ReadyReplicasandReplicasfields toDataPlane's Status kong/kong-operator-archive#854 - Added
Rolloutfield toDataPlaneCRD. This allows specification of rollout strategy and behavior (e.g. to enable blue/green rollouts for upgrades). kong/kong-operator-archive#879 - Added
Rolloutstatus fields toDataPlaneCRD. kong/kong-operator-archive#896
WARN: Breaking changes included
- Renamed
Servicesoptions inDataPlaneOptionstoNetworkoptions, which now includesIngressServiceas one of the sub-attributes. This is a breaking change which requires some renaming and reworking of struct attribute access. kong/kong-operator-archive#849 - Bump Gateway API to v0.6.2 and enable Gateway API conformance testing. kong/kong-operator-archive#853
- Add
PodTemplateSpectoDeploymentOptionsto allow applying strategic merge patcher on top ofPods generated by the operator. This is a breaking change which requires manual porting fromPodsfield toPodTemplateSpec. More info on strategic merge patch can be found in official Kubernetes docs at sig-api-machinery/strategic-merge-patch.md. kong/kong-operator-archive#862 - Added
v1beta1version of theDataPlaneAPI, which replaces thev1alpha1version. Thev1alpha1version of the API has been removed entirely in favor of the new version to reduce maintenance costs. kong/kong-operator-archive#905
- Fixes setting
Affinitywhen generatingDeployments forDataPlanesControlPlanes which caused 2ReplicaSets to be created where the first one should already have theAffinityset making the update unnecessary. kong/kong-operator-archive#894
Release date: 2023-06-20
- Added
AddressSourceTypetoDataPlanestatusAddresskong/kong-operator-archive#798 - Add pod Affinity field to
PodOptionsand support for bothDataPlaneandControlPlane - Add Kong Gateway enterprise image -
kong/kong-gateway- to the set of supportedDataPlaneimages. kong/kong-operator-archive#749 - Moved pod related options in
DeploymentOptionstoPodsOptionsand added pod labels option. kong/kong-operator-archive#742 - Added
VolumesandVolumeMountsfield inDeploymentOptionsofDataPlanespecs. Users can attach custom volumes and mount the volumes to proxy container of pods inDeploymentsof dataplanes. Note:VolumesandVolumeMountsare not supported forControlPlanespecs now. kong/kong-operator-archive#681 - Added possibility to replicas on
DataPlanedeployments This allows users to defineDataPlanes - withoutControlPlane- to be horizontally scalable. kong/kong-operator-archive#737 - Added possibility to specify
DataPlaneproxy service type kong/kong-operator-archive#739 - Added possibility to specify resources through
DataPlaneandControlPlanespec.deployment.resourceskong/kong-operator-archive#712 - The
DataPlanespec has been updated with a new field related to the proxy service. By using such a field, it is possible to specify annotations to be set on theDataPlaneproxy service. kong/kong-operator-archive#682
- Bumped default ControlPlane image to 2.9.3 kong/kong-operator-archive#712 kong/kong-operator-archive#719
- Bumped default DataPlane image to 3.2.2 kong/kong-operator-archive#728
- Bumped Gateway API to 0.6.1. Along with it, the deprecated
Gatewayscheduledcondition has been replaced by theacceptedcondition. kong/kong-operator-archive#618 ControlPlaneandDataPlanespecs have been refactored by explicitly setting the deployment field (instead of having it inline). kong/kong-operator-archive#725ControlPlaneandDataPlanespecs now require users to providecontainerImageandversionfields. This is being enforced in the admission webhook. kong/kong-operator-archive#758- Validation for
ControlPlaneandDataPlanecomponents no longer has a "ceiling", or maximum version. This due to popular demand, but now puts more emphasis on the user to troubleshoot when things go wrong. It's no longer possible to use a tag that's not semver compatible (e.g. 2.10.0) for these components (for instance, a branch such asmain) without enabling developer mode. kong/kong-operator-archive#819 ControlPlaneandDataPlaneimage validation now supports enterprise image flavours, e.g.3.3.0-ubuntu,3.2.0.0-rheletc. kong/kong-operator-archive#830
- Fix admission webhook certificates Job which caused TLS handshake errors when webhook was being called. kong/kong-operator-archive#716
- Include leader election related role when generating
ControlPlaneRBAC manifests so that Gateway Discovery can be used by KIC. kong/kong-operator-archive#743
Release date: 2022-01-25
- Added machinery for ControlPlanes to communicate with DataPlanes directly via Pod IPs. The Admin API has been removed from the LoadBalancer service. kong/kong-operator-archive#609
- The Gateway Listeners status is set and kept up to date by the Gateway controller. kong/kong-operator-archive#627
Release date: 2022-11-30
Maturity: ALPHA
- Bumped DataPlane default image to 3.0.1 kong/kong-operator-archive#561
- Gateway statuses now include all addresses from their DataPlane Service. kong/kong-operator-archive#535
- DataPlane Deployment strategy enforced as RollingUpdate. kong/kong-operator-archive#537
- Regenerate DataPlane's TLS secret upon deletion kong/kong-operator-archive#500
- Gateway statuses no longer list cluster IPs if their DataPlane Service is a LoadBalancer. kong/kong-operator-archive#535
Release date: 2022-10-26
Maturity: ALPHA
- Updated default Kong version to 3.0.0
- Updated default Kubernetes Ingress Controller version to 2.7
- Update DataPlane and ControlPlane Ready condition when underlying Deployment changes Ready condition kong/kong-operator-archive#451
- Update DataPlane NetworkPolicy to match KONG_PROXY_LISTEN and KONG_ADMIN_LISTEN environment variables set in DataPlane kong/kong-operator-archive#473
- Added Container image and version validation for ControlPlanes and DataPlanes. The operator now only supports the Kubernetes-ingress-controller (2.7) as the ControlPlane, and Kong (3.0) as the DataPlane. kong/kong-operator-archive#490
- DataPlane resources get a new
Statusfield:Addresseswhich will contain backing service addresses. kong/kong-operator-archive#483
Release date: 2022-09-24
Maturity: ALPHA
HTTPRoutesupport was added. If version of control plane image is at least 2.6, theGateway=truefeature gate is enabled, so the control plane can pick up theHTTPRouteand configure it on data plane. kong/kong-operator-archive#302
Release date: 2022-09-15
Maturity: ALPHA
This is the initial release which includes basic functionality at an alpha level of maturity and includes some of the fundamental APIs needed to create gateways for ingress traffic.
- The
GatewayConfigurationAPI was added to enable configuringGatewayresources with the options needed to influence the configuration of the underlyingControlPlaneandDataPlaneresources. kong/kong-operator-archive#43 GatewayClasssupport was added to delineate whichGatewayresources the operator supports. kong/kong-operator-archive#22Gatewaysupport was added: used to create edge proxies for ingress traffic. kong/kong-operator-archive#6- The
ControlPlaneAPI was added to deploy Kong Ingress Controllers which can be attached toDataPlaneresources. kong/kong-operator-archive#5 - The
DataPlaneAPI was added to deploy Kong Gateways. kong/kong-operator-archive#4 - The operator manages certificates for control and data plane communication and configures mutual TLS between them. It cannot yet replace expired certificates. kong/kong-operator-archive#103
When deploying the gateway-operator through the bundle, there might be some leftovers from previous operator deployments in the cluster. The user needs to delete all the cluster-wide leftovers (clusterrole, clusterrolebinding, validatingWebhookConfiguration) before re-installing the operator through the bundle.