
ngrok-operator v0.19.0: Gateway API updates and edge deprecation
Today, I'm excited to announce the release of version 0.19.0
of the ngrok-operator helm chart. This release brings improvements to our handling of the Gateway API, finer grained retention controls for the Domain
custom resource, deprecation of Edge custom resource definitions (CRDs), and moves us closer to a v1
release.
Gateway API Improvements
We’ve also made numerous improvements to supporting the Gateway API.
First, we are now populating the .Status.Addresses
field of a Gateway with either the ngrok managed domain or the ngrok CNAME when using a custom domain. This provides a better integration with tools like ExternalDNS to automatically create the ngrok DNS CNAME records. See the guide on using Custom Domains with Gateways.
Secondly, we’re now setting status conditions on gateways to provide better feedback on whether or not the configuration is valid. You can now look at the status conditions for both the gateway and its listeners to figure out if the configuration has been accepted and if it has been programmed in ngrok’s cloud.
For example, when running kubectl get gateways
, you should now see True
under the Programmed
column if the gateway has been accepted and programmed in ngrok’s cloud. For more information, see the breakdown in our docs.
As an example of how we're making ngrok-operator more interoperable with other projects in the cloud-native ecosystem: Starting with v3.1.0, Argo CD now picks up and displays these status conditions to help you debug your configurations much more easily.

Domain deletion strategies
In versions prior to 0.19.0, your Ingress, Gateway, and LB services would create Domain
CRs to reserve the domain in ngrok. When the Ingress, Gateway, and LB services were destroyed, the corresponding Domain
CR(s) would not be deleted as not to delete them in ngrok. If you deleted the CRs in versions prior to 0.19.0 the corresponding domain would be deleted in ngrok.
With 0.19.0, you can now specify a defaultDomainReclaimPolicy
helm value of Delete
or Retain
when installing or upgrading the chart that. Domains created previously will retain the default behavior of Delete
, which will remove the Domain in ngrok. Specifying Retain
will allow the CR to be deleted without deleting the domain in ngrok.
# ngrok-operator values.yaml
# Add the following to your values.yaml to keep domains from being deleted in ngrok
# when the CRD is deleted in cluster.
defaultDomainReclaimPolicy: "Retain"
⚠️CRD deprecation ⚠️
In this release, we are deprecating the following CRDs: Tunnel
, HTTPSEdge
, TLSEdge
, TCPEdge
, and NgrokModuleSet
. The reason for this is that the Edges feature set will be removed from ngrok by the end of the year in favor of Endpoints. We are deprecating these CRDs in this release ahead of their removal in the next release of the ngrok-operator.
The functionality of the HTTPSEdge
, TLSEdge
, and TCPEdge
resources are now unified under the CloudEndpoint
CRD. Tunnel
has been replaced with AgentEndpoint
. NgrokModuleSet
is no longer supported in favor of TrafficPolicy
.
See this discussion in the ngrok-operator repo for more details.