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.

Share this post
Jonathan Stacks
Jonathan Stacks is a Staff Infrastructure Engineer with experience in Kubernetes, application development & architecture, automation, & data engineering.
Kubernetes Gateway API
Kubernetes Operator
Kubernetes
Company
Production