diff --git a/CHANGELOG.md b/CHANGELOG.md index f2dc684f..49736c1e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,93 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## 0.13.0 +**Full Changelog**: https://github.com/ngrok/ngrok-operator/compare/kubernetes-ingress-controller-0.12.2...kubernetes-ingress-controller-0.13.0 + + +### :warning: :warning: :warning: Notice :warning: :warning: :warning: + +This version of the controller is not backwards compatible with previous versions and is only compatible with +version 0.16.0 of the `ngrok/ngrok-operator` helm chart and later. Using this version or later of the controller with the `ngrok/kubernetes-ingress-controller` helm chart will result in the controller not functioning correctly. + +Even though we are in major version 0, and semver v2.0.0 allows that anything may change until a 1.0.0 release, we try not to break backwards compatibility. However, this change is necessary to support new features and improvements in the operator. + +### Added + +#### Kubernetes Operator + +The operator installation will now be registered with the ngrok API. This will allow you to view the status of the operator in the ngrok dashboard, see what version of the operator is running, and power new features +in the future. This is powered by a new `KubernetesOperator` CRD that is created by the operator in its +own namespace when it starts up. + +- Register operator by @jonstacks in [#457](https://github.com/ngrok/ngrok-operator/pull/457) +- Add status to KubernetesOperator by @hjkatz in [#467](https://github.com/ngrok/ngrok-operator/pull/467) +- fix: Add nil checks to prevent potential panics by @jonstacks in [#483](https://github.com/ngrok/ngrok-operator/pull/483) + +#### Endpoint Bindings (private beta) + +Endpoint bindings is a new feature that allows you to securely access a ngrok endpoint no matter where it is running. Specifically, Kubernetes bound endpoints allow you to project services running outside of your Kubernetes cluster or in other clusters into your cluster as native Kubernetes services. + +- Add feature flag support for bindings by @hjkatz in [#424](https://github.com/ngrok/ngrok-operator/pull/424) +- feat: Initial bindings driver by @stacks in [#450](https://github.com/ngrok/ngrok-operator/pull/450) +- Modify EndpointBinding CRD to reflect cardinality of bound Endpoints by @hjkatz in [#452](https://github.com/ngrok/ngrok-operator/pull/452) +- Implement AggregateBindingEndpoints for interacting with the ngrok api by @hjkatz in [#453](https://github.com/ngrok/ngrok-operator/pull/453) +- Implement BindingEndpoint polling by @hjkatz in [#458](https://github.com/ngrok/ngrok-operator/pull/458) +- Implement EndpointBinding -> Services creation by @hjkatz in [#459](https://github.com/ngrok/ngrok-operator/pull/459) +- Implement port allocation by @hjkatz in [#460](https://github.com/ngrok/ngrok-operator/pull/460) +- Bindings forwarder by @jonstacks in [#465](https://github.com/ngrok/ngrok-operator/pull/465) +- Add endpoint status to EndpointBinding kubectl output by @hjkatz in [#464](https://github.com/ngrok/ngrok-operator/pull/464) +- chore: Update ngrok-api-go to pull in new changes by @jonstacks in [#468](https://github.com/ngrok/ngrok-operator/pull/468) +- Ensure endpoint poller does not start until k8sop is regestered with API by @hjkatz in [#470](https://github.com/ngrok/ngrok-operator/pull/470) +- Rename EndpointBinding to BoundEndpoint by @hjkatz in [#475](https://github.com/ngrok/ngrok-operator/pull/475) +- Implement Target Metadata by @hjkatz in [#477](https://github.com/ngrok/ngrok-operator/pull/477) +- Bindings forwarder implementation by @jonstacks in [#476](https://github.com/ngrok/ngrok-operator/pull/476) +- Ensure KubernetesOperator.Status.EnabledFeatures is set properly from the API by @hjkatz in [#480](https://github.com/ngrok/ngrok-operator/pull/480) +- Add equality tests for Target.Metadata by @hjkatz in [#482](https://github.com/ngrok/ngrok-operator/pull/482) +- feat: BoundEndpointPoller polls from the API by @jonstacks in [#481](https://github.com/ngrok/ngrok-operator/pull/481) + + +#### Cloud Endpoints (private beta) + +[Cloud Endpoints](https://ngrok.com/docs/network-edge/cloud-endpoints/) can now be created and managed by the operator via a new `CloudEndpoint` CRD. + +- Allow configuring ngrok Cloud Endpoints using CRDs by @alex-bezek in [#471](https://github.com/ngrok/ngrok-operator/pull/471) + + +### Changed + +#### Ingress/Gateway + +* Seed additional types when first starting by @alex-bezek in [#431](https://github.com/ngrok/ngrok-operator/pull/431). + +#### Traffic Policy + +Updates `TrafficPolicy` CRD and inline policy to support new phase-based names as well as the new `TrafficPolicy` API. + +- update traffic policy for phase-based naming by @TheConcierge in [#456](https://github.com/ngrok/ngrok-operator/pull/456) + + +#### Splitting controllers into multiple manager instances + +The controllers have been split into multiple manager instances to improve performance and scalability. This now allows the ngrok agent manager which handles traffic to run independently of the API managers which reconcile CRDs with the ngrok API. This change also allows for more fine-grained control over the controllers and their resources. + +- refactor: Split the agent and API controllers by @jonstacks in [#446](https://github.com/ngrok/ngrok-operator/pull/446) + +### Fixes + +#### Gateway API + +- fix: Add `GatewayClass` controller by @jonstacks in [#484](https://github.com/ngrok/ngrok-operator/pull/484) + + +### Documentation +* Update README.md to use ngrok Kubernetes Operator instead of ingress controller. by @stmcallister in [#433](https://github.com/ngrok/ngrok-operator/pull/433) + +### New Contributors +- @TheConcierge made their first contribution in [#456](https://github.com/ngrok/ngrok-operator/pull/456) + + + ## 0.12.2 **Full Changelog**: https://github.com/ngrok/ngrok-operator/compare/kubernetes-ingress-controller-0.12.1...kubernetes-ingress-controller-0.12.2 @@ -36,7 +123,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - feat: Auto-provision domain for TLS Edges [#386](https://github.com/ngrok/ngrok-operator/pull/386) - feat: Support for Load Balancer services [#387](https://github.com/ngrok/ngrok-operator/pull/387) -- feat: Support TLS termination in modulesets for Load Balancer Services [388](https://github.com/ngrok/ngrok-operator/pull/388) +- feat: Support TLS termination in modulesets for Load Balancer Services [#388](https://github.com/ngrok/ngrok-operator/pull/388) ### Changed diff --git a/VERSION b/VERSION index 26acbf08..54d1a4f2 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.12.2 +0.13.0 diff --git a/helm/ngrok-operator/CHANGELOG.md b/helm/ngrok-operator/CHANGELOG.md index fcb8ba09..f75973f5 100644 --- a/helm/ngrok-operator/CHANGELOG.md +++ b/helm/ngrok-operator/CHANGELOG.md @@ -1,20 +1,72 @@ # Changelog -All notable changes to this project will be documented in this file. +All notable changes to the helm chart will be documented in this file. Please see the top-level [CHANGELOG.md](../../CHANGELOG.md) for changes to the controller itself. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## 0.16.0 +## 0.16.0-rc.1 + **Full Changelog**: https://github.com/ngrok/ngrok-operator/compare/helm-chart-0.14.3...helm-chart-0.16.0 +### :warning: :warning: :warning: Notice :warning: :warning: :warning: + +This release is a release candidate for the upcoming 0.16.0 release. The helm chart has been renamed to `ngrok/ngrok-operator`. Please test this release in a non-production environment before upgrading your production environment. Documentation for migrating from `ngrok/kubernetes-ingress-controller` to `ngrok/ngrok-operator` can be found [here](/docs/deployment-guide/migrating.md). + +### Added + +#### Kubernetes Operator + +The operator installation will now be registered with the ngrok API. This will allow you to view the status of the operator in the ngrok dashboard, see what version of the operator is running, and power new features +in the future. This is powered by a new `KubernetesOperator` CRD that is created by the operator in its +own namespace when it starts up. + +- Register operator by @jonstacks in [#457](https://github.com/ngrok/ngrok-operator/pull/457) +- Add status to KubernetesOperator by @hjkatz in [#467](https://github.com/ngrok/ngrok-operator/pull/467) + +#### Endpoint Bindings (private beta) + +Endpoint bindings is a new feature that allows you to securely access a ngrok endpoint no matter where it is running. Specifically, Kubernetes bound endpoints allow you to project services running outside of your Kubernetes cluster or in other clusters into your cluster as native Kubernetes services. + +- Add feature flag support for bindings by @hjkatz in [#424](https://github.com/ngrok/ngrok-operator/pull/424) +- Modify EndpointBinding CRD to reflect cardinality of bound Endpoints by @hjkatz in [#452](https://github.com/ngrok/ngrok-operator/pull/452) +- Implement AggregateBindingEndpoints for interacting with the ngrok api by @hjkatz in [#453](https://github.com/ngrok/ngrok-operator/pull/453) +- Implement BindingEndpoint polling by @hjkatz in [#458](https://github.com/ngrok/ngrok-operator/pull/458) +- Implement EndpointBinding -> Services creation by @hjkatz in [#459](https://github.com/ngrok/ngrok-operator/pull/459) +- Implement port allocation by @hjkatz in [#460](https://github.com/ngrok/ngrok-operator/pull/460) +- Bindings forwarder by @jonstacks in [#465](https://github.com/ngrok/ngrok-operator/pull/465) +- Add endpoint status to EndpointBinding kubectl output by @hjkatz in [#464](https://github.com/ngrok/ngrok-operator/pull/464) +- Ensure endpoint poller does not start until k8sop is regestered with API by @hjkatz in [#470](https://github.com/ngrok/ngrok-operator/pull/470) +- Rename EndpointBinding to BoundEndpoint by @hjkatz in [#475](https://github.com/ngrok/ngrok-operator/pull/475) +- Implement Target Metadata by @hjkatz in [#477](https://github.com/ngrok/ngrok-operator/pull/477) +- Bindings forwarder implementation by @jonstacks in [#476](https://github.com/ngrok/ngrok-operator/pull/476) + +#### Helm values.yaml schema validation + +The `ngrok-operator` helm chart now includes a `schema.json` file that can be used to validate the `values.yaml` file. + +- Generate and commit schema.json file by @alex-bezek in [#472](https://github.com/ngrok/ngrok-operator/pull/472) + ### Changed -- Deprecate `.Values.metaData` in favor of `.Values.ngrokMetadata` for clarity -- Deprecate `.Values.ingressClass` in favor of `.Values.ingress.ingressClass` for feature set namespacing -- Deprecate `.Values.useExperimentalGatewayApi` in favor of `.Values.gateway.enabled` for feature set namespacing -- Deprecate `.Values.watchNamespace` in favor of `.Values.ingress.watchNamespace` for feature set namespacing -- Deprecate `.Values.controllerName` in favor of `.Values.ingress.controllerName` for feature set namespacing +#### Traffic Policy + +Updates `TrafficPolicy` CRD and inline policy to support new phase-based names as well as the new `TrafficPolicy` API. + +- update traffic policy for phase-based naming by @TheConcierge in [#456](https://github.com/ngrok/ngrok-operator/pull/456) + +#### Values.yaml file deprecations + +- Rename .Values.metaData -> .Values.ngrokMetadata by @hjkatz in [#434](https://github.com/ngrok/ngrok-operator/pull/434). + - Deprecate `.Values.metaData` in favor of `.Values.ngrokMetadata` for clarity + - Deprecate `.Values.ingressClass` in favor of `.Values.ingress.ingressClass` for feature set namespacing + - Deprecate `.Values.useExperimentalGatewayApi` in favor of `.Values.gateway.enabled` for feature set namespacing + - Deprecate `.Values.watchNamespace` in favor of `.Values.ingress.watchNamespace` for feature set namespacing + - Deprecate `.Values.controllerName` in favor of `.Values.ingress.controllerName` for feature set namespacing + +### New Contributors +- @TheConcierge made their first contribution in [#456](https://github.com/ngrok/ngrok-operator/pull/456) + ## 0.15.0 diff --git a/helm/ngrok-operator/Chart.yaml b/helm/ngrok-operator/Chart.yaml index be08d4c3..352d38a7 100644 --- a/helm/ngrok-operator/Chart.yaml +++ b/helm/ngrok-operator/Chart.yaml @@ -1,8 +1,8 @@ apiVersion: v2 name: ngrok-operator description: The official ngrok Kubernetes Operator. -version: 0.15.0 -appVersion: 0.12.2 +version: 0.16.0-rc.1 +appVersion: 0.13.0 keywords: - ngrok - networking diff --git a/helm/ngrok-operator/tests/__snapshot__/controller-deployment_test.yaml.snap b/helm/ngrok-operator/tests/__snapshot__/controller-deployment_test.yaml.snap index c59d4939..2662a17a 100644 --- a/helm/ngrok-operator/tests/__snapshot__/controller-deployment_test.yaml.snap +++ b/helm/ngrok-operator/tests/__snapshot__/controller-deployment_test.yaml.snap @@ -12,8 +12,8 @@ Should match all-options snapshot: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ngrok-operator app.kubernetes.io/part-of: ngrok-operator - app.kubernetes.io/version: 0.12.2 - helm.sh/chart: ngrok-operator-0.15.0 + app.kubernetes.io/version: 0.13.0 + helm.sh/chart: ngrok-operator-0.16.0-rc.1 name: RELEASE-NAME-ngrok-operator-manager namespace: NAMESPACE spec: @@ -86,7 +86,7 @@ Should match all-options snapshot: value: test-value - name: TEST_ENV_VAR value: test - image: docker.io/ngrok/ngrok-operator:0.12.2 + image: docker.io/ngrok/ngrok-operator:0.13.0 imagePullPolicy: IfNotPresent livenessProbe: httpGet: @@ -651,8 +651,8 @@ Should match default snapshot: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ngrok-operator app.kubernetes.io/part-of: ngrok-operator - app.kubernetes.io/version: 0.12.2 - helm.sh/chart: ngrok-operator-0.15.0 + app.kubernetes.io/version: 0.13.0 + helm.sh/chart: ngrok-operator-0.16.0-rc.1 name: RELEASE-NAME-ngrok-operator-manager namespace: NAMESPACE spec: @@ -718,7 +718,7 @@ Should match default snapshot: fieldPath: metadata.namespace - name: HELM_RELEASE_NAME value: RELEASE-NAME - image: docker.io/ngrok/ngrok-operator:0.12.2 + image: docker.io/ngrok/ngrok-operator:0.13.0 imagePullPolicy: IfNotPresent livenessProbe: httpGet: diff --git a/helm/ngrok-operator/tests/__snapshot__/controller-pdb_test.yaml.snap b/helm/ngrok-operator/tests/__snapshot__/controller-pdb_test.yaml.snap index cd0a0155..0e999277 100644 --- a/helm/ngrok-operator/tests/__snapshot__/controller-pdb_test.yaml.snap +++ b/helm/ngrok-operator/tests/__snapshot__/controller-pdb_test.yaml.snap @@ -9,8 +9,8 @@ should match snapshot: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ngrok-operator app.kubernetes.io/part-of: ngrok-operator - app.kubernetes.io/version: 0.12.2 - helm.sh/chart: ngrok-operator-0.15.0 + app.kubernetes.io/version: 0.13.0 + helm.sh/chart: ngrok-operator-0.16.0-rc.1 name: test-release-ngrok-operator-controller-pdb namespace: test-namespace spec: diff --git a/helm/ngrok-operator/tests/__snapshot__/controller-serviceaccount_test.yaml.snap b/helm/ngrok-operator/tests/__snapshot__/controller-serviceaccount_test.yaml.snap index 47513b2b..631e95ac 100644 --- a/helm/ngrok-operator/tests/__snapshot__/controller-serviceaccount_test.yaml.snap +++ b/helm/ngrok-operator/tests/__snapshot__/controller-serviceaccount_test.yaml.snap @@ -9,7 +9,7 @@ Should match the snapshot: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ngrok-operator app.kubernetes.io/part-of: ngrok-operator - app.kubernetes.io/version: 0.12.2 - helm.sh/chart: ngrok-operator-0.15.0 + app.kubernetes.io/version: 0.13.0 + helm.sh/chart: ngrok-operator-0.16.0-rc.1 name: test-release-ngrok-operator namespace: test-namespace diff --git a/helm/ngrok-operator/tests/__snapshot__/ingress-class_test.yaml.snap b/helm/ngrok-operator/tests/__snapshot__/ingress-class_test.yaml.snap index 1eaed97e..28c7355f 100644 --- a/helm/ngrok-operator/tests/__snapshot__/ingress-class_test.yaml.snap +++ b/helm/ngrok-operator/tests/__snapshot__/ingress-class_test.yaml.snap @@ -9,8 +9,8 @@ Should match snapshot: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ngrok-operator app.kubernetes.io/part-of: ngrok-operator - app.kubernetes.io/version: 0.12.2 - helm.sh/chart: ngrok-operator-0.15.0 + app.kubernetes.io/version: 0.13.0 + helm.sh/chart: ngrok-operator-0.16.0-rc.1 name: ngrok spec: controller: k8s.ngrok.com/ingress-controller diff --git a/helm/ngrok-operator/tests/agent/__snapshot__/deployment_test.yaml.snap b/helm/ngrok-operator/tests/agent/__snapshot__/deployment_test.yaml.snap index c02836f2..e45d6f98 100644 --- a/helm/ngrok-operator/tests/agent/__snapshot__/deployment_test.yaml.snap +++ b/helm/ngrok-operator/tests/agent/__snapshot__/deployment_test.yaml.snap @@ -11,8 +11,8 @@ Should match snapshot: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ngrok-operator app.kubernetes.io/part-of: ngrok-operator - app.kubernetes.io/version: 0.12.2 - helm.sh/chart: ngrok-operator-0.15.0 + app.kubernetes.io/version: 0.13.0 + helm.sh/chart: ngrok-operator-0.16.0-rc.1 name: RELEASE-NAME-ngrok-operator-agent namespace: NAMESPACE spec: @@ -72,7 +72,7 @@ Should match snapshot: fieldPath: metadata.namespace - name: HELM_RELEASE_NAME value: RELEASE-NAME - image: docker.io/ngrok/ngrok-operator:0.12.2 + image: docker.io/ngrok/ngrok-operator:0.13.0 imagePullPolicy: IfNotPresent livenessProbe: httpGet: diff --git a/helm/ngrok-operator/tests/agent/__snapshot__/service-account_test.yaml.snap b/helm/ngrok-operator/tests/agent/__snapshot__/service-account_test.yaml.snap index 0a311bf3..37563e52 100644 --- a/helm/ngrok-operator/tests/agent/__snapshot__/service-account_test.yaml.snap +++ b/helm/ngrok-operator/tests/agent/__snapshot__/service-account_test.yaml.snap @@ -9,7 +9,7 @@ Should match snapshot: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ngrok-operator app.kubernetes.io/part-of: ngrok-operator - app.kubernetes.io/version: 0.12.2 - helm.sh/chart: ngrok-operator-0.15.0 + app.kubernetes.io/version: 0.13.0 + helm.sh/chart: ngrok-operator-0.16.0-rc.1 name: test-release-ngrok-operator-agent namespace: test-namespace diff --git a/helm/ngrok-operator/tests/bindings-forwarder/__snapshot__/deployment_test.yaml.snap b/helm/ngrok-operator/tests/bindings-forwarder/__snapshot__/deployment_test.yaml.snap index 44ce16f9..d42dabf5 100644 --- a/helm/ngrok-operator/tests/bindings-forwarder/__snapshot__/deployment_test.yaml.snap +++ b/helm/ngrok-operator/tests/bindings-forwarder/__snapshot__/deployment_test.yaml.snap @@ -11,8 +11,8 @@ Should match snapshot: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ngrok-operator app.kubernetes.io/part-of: ngrok-operator - app.kubernetes.io/version: 0.12.2 - helm.sh/chart: ngrok-operator-0.15.0 + app.kubernetes.io/version: 0.13.0 + helm.sh/chart: ngrok-operator-0.16.0-rc.1 name: RELEASE-NAME-ngrok-operator-bindings-forwarder namespace: NAMESPACE spec: @@ -71,7 +71,7 @@ Should match snapshot: fieldPath: metadata.namespace - name: HELM_RELEASE_NAME value: RELEASE-NAME - image: docker.io/ngrok/ngrok-operator:0.12.2 + image: docker.io/ngrok/ngrok-operator:0.13.0 imagePullPolicy: IfNotPresent livenessProbe: httpGet: diff --git a/helm/ngrok-operator/tests/bindings-forwarder/__snapshot__/service-account_test.yaml.snap b/helm/ngrok-operator/tests/bindings-forwarder/__snapshot__/service-account_test.yaml.snap index e87d1e25..093e0c9a 100644 --- a/helm/ngrok-operator/tests/bindings-forwarder/__snapshot__/service-account_test.yaml.snap +++ b/helm/ngrok-operator/tests/bindings-forwarder/__snapshot__/service-account_test.yaml.snap @@ -9,7 +9,7 @@ Should match snapshot: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: ngrok-operator app.kubernetes.io/part-of: ngrok-operator - app.kubernetes.io/version: 0.12.2 - helm.sh/chart: ngrok-operator-0.15.0 + app.kubernetes.io/version: 0.13.0 + helm.sh/chart: ngrok-operator-0.16.0-rc.1 name: test-release-ngrok-operator-bindings-forwarder namespace: test-namespace