Skip to main content

Releases

Artifacts

The ngrok Ingress Controller has 2 main artifacts, a docker image and a helm chart. While the helm chart is the recommended way to install the Ingress Controller, the docker image can be used to run the Ingress Controller in a Kubernetes cluster without helm.

Docker Image

The Docker image contains the ngrok Ingress Controller binary and is available on Docker Hub here. We currently support amd64 and arm64 architectures, with future plans to build for other architectures.

Helm Chart

The helm chart is packaged and published to its own helm repository and can be installed by following the instructions in the chart's README.

Semantic Versioning

This project uses semantic versioning for both the the docker image and helm chart.

From the semver spec:

Major version zero (0.y.z) is for initial development. Anything MAY change at any time. The public API SHOULD NOT be considered stable.

That said, we will treat changes in "y" as major releases and changes in "z" as minor releases until version 1.0 is reached.

Release Process

The Docker Image and Helm chart are released independently since a feature or bug fix in one may not require a release in the other. Sometimes a change will require a version bump and release in both.

Tagging

There is a different git tag pattern for each artifact.

Helm Chart

Releases of the helm chart will be tagged with a prefix of helm-chart-. For example, version 1.2.0 of the helm chart will have a git tag of helm-chart-1.2.0 which contains the code used to package and publish version 1.2.0 of the helm chart.

When changes are made to the helm chart's Chart.yaml file, a github workflow will trigger upon merging the PR to the main branch. The workflow will package and publish the helm chart for consumption. The workflow will also create a git tag as described above.

When changing version in the helm chart's Chart.yaml file, the version should be bumped according to the semantic versioning spec as described above.

Controller

Releases of the controller will be tagged with a prefix of kubernetes-ingress-controller-. For example, version 1.2.0 of the docker image will have a git tag of kubernetes-ingress-controller-1.2.0 which contains the code used to build the docker image ngrok/kubernetes-ingress-controller:1.2.0.

When changes that would affect the controller's docker image are pushed to main, a github workflow will trigger. The workflow will build and publish the ngrok/kubernetes-ingress-controller:latest docker image.

If the VERSION file at the root of the repo is changed, the workflow will also create a git tag for the controller as described above and publish a tagged docker image. For instance when the VERSION is changed to 1.2.0, the workflow will create a git tag of kubernetes-ingress-controller-1.2.0 and publish the docker image ngrok/kubernetes-ingress-controller:1.2.0.