Skip to content

Releases: kedacore/http-add-on

v0.8.0

02 May 06:18
1c9f734
Compare
Choose a tag to compare

We are happy to release KEDA HTTP Add-on v0.8.0 🎉

New

  • General: Add configurable TLS on the wire support to the interceptor proxy (#907)
  • General: Add support for collecting metrics using a Prometheus compatible endpoint or by sending metrics to an OpenTelemetry's HTTP endpoint (#910)
  • General: Propagate HTTPScaledObject labels and annotations to ScaledObject (#840)
  • General: Provide support for allowing HTTP scaler to work alongside other core KEDA scalers (#489)
  • General: Support aggregation windows (#882)

Fixes

  • General: Ensure operator is aware about changes on underlying ScaledObject (#900)

Deprecations

You can find all deprecations in this overview and join the discussion here.

  • General: Deprecated targetPendingRequests in favor of spec.scalingMetric.*.targetValue (#959)

Other

  • General: Align with the new format of Ingress in the example demo (#979)
  • General: Unify loggers (#958)

New Contributors

Full Changelog: v0.7.0...v0.8.0

v0.7.0

22 Jan 10:39
a59daf2
Compare
Choose a tag to compare

Breaking Changes

  • General: host field has been removed in favor of hosts in HTTPScaledObject (#552|#888)

New

  • General: Support any resource which implements /scale subresource (#438)

Improvements

  • General: Improve Scaler reliability adding probes and 3 replicas (#870)

Fixes

  • General: Add new user agent probe (#862)
  • General: Fix external scaler getting into bad state when retrieving queue lengths fails. (#870)
  • General: Increase ScaledObject polling interval to 15 seconds (#799)
  • General: Set forward request RawPath to original request RawPath (#864)

Deprecations

You can find all deprecations in this overview and join the discussion here.

New deprecation(s):

  • General: Deprecated KEDA_HTTP_DEPLOYMENT_CACHE_POLLING_INTERVAL_MS in favor of KEDA_HTTP_ENDPOINTS_CACHE_POLLING_INTERVAL_MS (#438)

New Contributors

Full Changelog: v0.6.0...v0.7.0

v0.6.0

05 Oct 15:09
8c18bd8
Compare
Choose a tag to compare

New

  • General: Add manifests to deploy the Add-on (#716)

Improvements

  • Scaler: Decrease memory usage by allowing increasing stream interval configuration (#745)

Fixes

  • Interceptor: Add support for streaming responses (#743)
  • Interceptor: Fatal error: concurrent map iteration and map write (#726)
  • Interceptor: Keep original Host in the Host header (#331)
  • Interceptor: Provide graceful shutdown for http servers on SIGINT and SIGTERM (#731)
  • Operator: Remove ScaledObject name & app custom labels (#717)
  • Scaler: Provide graceful shutdown for grpc server on SIGINT and SIGTERM (#731)
  • Scaler: Reimplement custom interceptor metrics (#718)

Deprecations

You can find all deprecations in this overview and join the discussion here.

New deprecation(s):

  • General: host field deprecated in favor of hosts in HTTPScaledObject (#552)

Other

  • General: Adding a changelog validating script to check for formatting and order (#761)
  • General: Skip not required CI checks on PRs on new commits (#801)

New Contributors

Full Changelog: v0.5.0...v0.6.0

v0.5.0

20 Jun 05:38
ce37228
Compare
Choose a tag to compare

This is the fifth beta release of the KEDA HTTP Addon. Please see the install documentation to get started.

Changelog

New

  • Routing: Add multi-host support to HTTPScaledObject (#552)
  • Routing: Support path-based routing (#338)
  • General: Log incoming requests using the Combined Log Format (#669)

Improvements

  • General: Automatically tag Docker image with commit SHA (#567)
  • RBAC: Introduce fine-grained permissions per component and reduce required permissions (#612)
  • Operator: Migrate project to Kubebuilder v3 (#625)
  • Routing: New routing table implementation that relies on the live state of HTTPScaledObjects on the K8s Cluster instead of a ConfigMap that is updated periodically (#605)

Fixes

  • General: HTTPScaledObject is the owner of the underlying ScaledObject (#703)
  • Routing: Lookup host without port (#608)
  • Controller: Use kedav1alpha1.ScaledObject default values (#607)
  • General: Changes to HTTPScaledObjects now take effect (#605)

Breaking Changes

  • General: Pod selector labels have changed, this could force to uninstall the HTTP Add-on and reinstall it.

Deprecations

You can find all deprecations in this overview and join the discussion here.

New deprecation(s):

  • General: host field deprecated in favor of hosts in HTTPScaledObject (#552)

Previously announced deprecation(s):

  • None.

Other

  • General: Use kubernetes e2e images for e2e test and samples (#665)
  • e2e tests: Use the same e2e system as in core (#686)

Contributions

  • add CooldownPeriod to scaledobject template by @lucakuendig in #587
  • chore(deps): bump actions/cache from 3.2.3 to 3.2.4 by @dependabot in #588
  • chore: Introduce changelog by @tomkerkhove in #592
  • fix(static checks): Remove whitespace by @JorTurFer in #593
  • chore: Add Artifact Hub to release process by @tomkerkhove in #595
  • chore(deps): bump google.golang.org/grpc from 1.52.1 to 1.52.3 (#589)Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Tom Kerkhove [email protected] Co-authored-by: Jorge Turrado Ferrero [email protected] by @dependabot in #589
  • chore(deps): bump sigs.k8s.io/controller-runtime from 0.14.1 to 0.14.2 (#590)Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jorge Turrado Ferrero [email protected] by @dependabot in #590
  • chore(deps): bump sigs.k8s.io/controller-runtime from 0.14.2 to 0.14.4 (#597)Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> by @dependabot in #597
  • feat: build an extra docker tag with commit sha by @JorTurFer in #596
  • fix: Create copy of backoff struct by @abatilo in #598
  • chore(deps): bump google.golang.org/grpc from 1.52.3 to 1.53.0 by @dependabot in #603
  • chore(deps): bump actions/cache from 3.2.4 to 3.2.5 by @dependabot in #602
  • fix(automation): Automatically add new issues to GitHub Project by @tomkerkhove in #604
  • chore(deps): bump github.com/onsi/gomega from 1.26.0 to 1.27.1 by @dependabot in #606
  • fix(automation): Automatically add new issues to GitHub Project (#614 by @tomkerkhove in #614
  • routing: lookup host without port by @t0rr3sp3dr0 in #609
  • chore(deps): bump github.com/stretchr/testify from 1.8.1 to 1.8.2 by @dependabot in #617
  • chore(deps): bump actions/cache from 3.2.5 to 3.2.6 by @dependabot in #616
  • controller: use kedav1alpha1.ScaledObject default values by @t0rr3sp3dr0 in #610
  • rbac: narrow permissions by @t0rr3sp3dr0 in #613
  • chore: bump deps by @JorTurFer in #624
  • operator: upgrade kubebuilder to v3 by @t0rr3sp3dr0 in #626
  • chore: Provide update on project status (#628 by @tomkerkhove in #628
  • chore: use GH_AUTOMATION_PAT instead of GH_PROJECT_AUTOMATION_AUTH (#627) by @JorTurFer in #627
  • chore(deps): bump actions/cache from 3.2.6 to 3.3.1 (#631)Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> by @dependabot in #631
  • chore(deps): bump github.com/kedacore/keda/v2 from 2.9.3 to 2.10.0 by @dependabot in #635
  • chore(deps): bump github.com/onsi/ginkgo/v2 from 2.8.4 to 2.9.1 by @dependabot in #632
  • chore(deps): bump google.golang.org/protobuf from 1.28.1 to 1.29.0 by @dependabot in #634
  • chore(deps): bump google.golang.org/protobuf from 1.29.0 to 1.29.1 by @dependabot in #636
  • chore: Remove v1.23 from e2e tests by @JorTurFer in #637
  • chore(deps): bump actions/setup-go from 3 to 4 by @dependabot in #638
  • chore: bump deps by @JorTurFer in #645
  • Update ARM64 e2e test flow by @JorTurFer in #664
  • chore(deps): bump actions/setup-python from 4.5.0 to 4.6.0 by @dependabot in #663
  • chore(deps): bump golang.org/x/sync from 0.1.0 to 0.2.0 by @dependabot in #668
  • chore(deps): bump github.com/onsi/ginkgo/v2 from 2.9.1 to 2.9.4 by @dependabot in #666
  • fix: Use correct labels during e2e tests by @JorTurFer in #671
  • feat: Move http scaled object from single host to multi host system by @jocelynthode in #674
  • chore(deps): bump helm/kind-action from 1.5.0 to 1.7.0 by @dependabot in #679
  • chore(deps): bump actions/setup-python from 4.6.0 to 4.6.1 by @dependabot in #688
  • feat: use the same e2e system as in core by @JorTurFer in #686
  • fix verify-codegen by @t0rr3sp3dr0 in #695
  • fix: Verify manifest changes correctly by @JorTurFer in #692
  • feat: Use registry.k8s.io/e2e-test-images/agnhost instead of arschles/xkcd by @JorTurFer in #693
  • HTTPSO-based Routing Table by @t0rr3sp3dr0 in #669
  • PathPrefix-based Routing by @t0rr3sp3dr0 in #677
  • fix: HTTPScaledObject is the owner of the underlying ScaledObject by @JorTurFer in #704

New Contributors

Full Changelog: v0.4.0...v0.5.0

v0.4.0

27 Jan 11:25
b5c41c8
Compare
Choose a tag to compare

This is the fourth beta release of the KEDA HTTP Addon. Please see the install documentation to get started.

The largest change in this release is the ARM64 support. This means that an HTTP Addon installation (e.g. scaler, interceptor, and operator) can be used in ARM64 nodes. There are also other changes related with bugfixes and quality improvements.

What's Changed

New Contributors

Read more

Version 0.3.0

26 Jan 23:33
84d97e4
Compare
Choose a tag to compare

This is the third beta release of the KEDA HTTP Addon. Please see the install documentation to get started.

The largest change in this release is that operators now have the option of running a single cluster-global installation. This means that an HTTP Addon installation (e.g. scaler, interceptor, and operator) can now be scoped either to one namespace, or the entire cluster. The latter case is called a cluster-global install. If you do want to run a cluster-global HTTP Addon, you must:

  1. Not run any other KEDA HTTP Addon installations, even if they are scoped to one namespace
  2. Also run a cluster-global installation of KEDA itself

Breaking changes

There are no backward-incompatible changes to HTTPScaledObjects. However, there is a breaking change to the internal URL routing table. To overcome this, please delete your HTTP Addon installation (using helm delete if you're using the Helm chart) and re-install it at the 0.3.0 version.

Other significant changes

While the cluster-global feature is the biggest in this release, we have made several internal improvements such as:

  • Using the Kubernetes client library's informer framework in #326 (thanks to @tpiperatgod)
  • The ability to restore the target Deployment to its original replica count after deleting the associated HTTPScaledObject in #339 (thanks to @tpiperatgod)
  • Compiling operator, interceptor and scaler with the SHA of the source code they were built with, and adding an HTTP endpoint to each process's admin server to output this information in #377 (thanks to @asw101)
  • Returning a custom header for all requests that triggered a "cold start" (i.e. scaling up from 0 replicas) in #366 (thanks to @asw101)

What's Changed

  • Bump k8s.io/api from 0.22.2 to 0.22.3 by @dependabot in #307
  • Bump sigs.k8s.io/controller-runtime from 0.10.1 to 0.10.3 by @dependabot in #317
  • Updating the release process document with correct order of operations by @arschles in #327
  • Bump k8s.io/apimachinery from 0.22.3 to 0.22.4 by @dependabot in #328
  • Bump k8s.io/client-go from 0.22.2 to 0.22.4 by @dependabot in #329
  • Bump google.golang.org/grpc from 1.41.0 to 1.42.0 by @dependabot in #312
  • Add configMap informer by @tpiperatgod in #326
  • Restore target to original replica count after deleting httpscaledobject resource. by @tpiperatgod in #339
  • Upgrading images to use Go 1.17.2 by @arschles in #349
  • Adding documentation for how to issue curl requests by @arschles in #347
  • chore: Allow blank issues by @tomkerkhove in #352
  • Bump github.com/magefile/mage from 1.11.0 to 1.12.1 by @dependabot in #360
  • Bump google.golang.org/grpc from 1.42.0 to 1.43.0 by @dependabot in #358
  • converting bug report issue template to a form issue by @arschles in #363
  • Allowing cluster-global operation by @arschles in #269
  • Return custom header when request was returned from a cold start by @asw101 in #366
  • Updating dependencies by @arschles in #348
  • Bump go.uber.org/zap from 1.19.1 to 1.20.0 by @dependabot in #362
  • Bump github.com/go-logr/zapr from 0.4.0 to 1.2.2 by @dependabot in #357
  • Bump k8s.io/apimachinery from 0.23.1 to 0.23.2 by @dependabot in #376
  • Bump k8s.io/client-go from 0.23.1 to 0.23.2 by @dependabot in #375
  • Compile binaries and docker images with git SHA by @asw101 in #377
  • Bump github.com/onsi/gomega from 1.17.0 to 1.18.0 by @dependabot in #378
  • Configure WhiteSource Bolt for GitHub by @whitesource-bolt-for-github in #379
  • adding targetPendingRequests to the xkcd helm chart by @arschles in #373
  • fixing targetPendingRequests in the HTTPScaledObject v0.2.0 documenta… by @arschles in #372

New Contributors

  • @tpiperatgod made their first contribution in #326
  • @asw101 made their first contribution in #366
  • @whitesource-bolt-for-github made their first contribution in #379

Full Changelog: v0.2.0...v0.3.0

Version 0.2.0

16 Nov 19:54
b7fc02b
Compare
Choose a tag to compare

This is the second beta release of the KEDA HTTP Addon. Please see the install documentation to get started.

The largest change in this release is that the interceptor and scaler components are now multi-tenant, which means:

  • One scaler runs per namespace, and handles all HTTPScaledObjects in that namespace
  • One fleet of interceptors runs per namespace and handles all of the applications in that namespace. A fleet is defined as a Deployment of interceptors that are scaled by KEDA itself. The HTTP Addon external scaler tells KEDA how to scale the fleet.

Note: there is work pending in #240 to extend this multi-tenancy to out of the namespace scope and into the cluster-global scope

This is a beta release, we invite you to try it out and file issues if you find any bugs or have an idea for a feature you would like to see.

Changes to HTTPScaledObjects

With this release, interceptors and scalers can scale and serve 1 or more backing applications rather than just one, as was possible in v0.1.0 and before.

To route incoming HTTP requests properly, the interceptors need to be able to map any arbitrary request to a backing application or reject the request if there is no application installed to handle it. You must provide this information in every HTTPScaledObject that you submit.

There is a new spec.host field that you are required to include. This field informs interceptors that all requests for the host you provide should be forwarded to the application you specify in the scaleTargetRef.

targetPendingRequests

There is a second new field called spec.targetPendingRequests. It is optional and unrelated to the above routing functionality.

Please see the v0.2.0 HTTPScaledObject reference documentation for more details on this field.

Other Significant Changes

  • Comprehensive debugging endpoints on all three components. See developer.md for more details
  • More comprehensive unit and integration tests
  • Automatically scaling the interceptor fleet
  • Adding the ability to specify the target metric for any application, and for the interceptor fleet

Known Issues

  • When you change certain fields on an already existing HTTPScaledObject, the operator may not update the corresponding ScaledObject (#323). To work around this, please delete and re-create the HTTPScaledObject with the updated fields. This will be fixed in a patch release (e.g. v0.2.1)

Full Changelog

New Contributors

Read more

Version 0.1.0

24 Jun 15:18
8c4d4a7
Compare
Choose a tag to compare

This is the first beta version of the KEDA HTTP Add-on! It's been a while since our last release, which was 0.0.1. Since then, we've made big improvements to nearly every area of this project.

If you'd like to get started right away, please see the walkthrough documentation for this release.

Otherwise, below is a list of some of the most significant changes in this release.

HTTPScaledObject changes

Note: there is a breaking change to the HTTPScaledObject spec field in this release. Please see the last bullet point of this section for more details

  • The status field of HTTPScaledObjects is now automatically populated (by the operator) with more details on the progress of your deployment (#47)
  • You get more control over how your app is scaled, including specifying the minimum and maximum replicas (#85),
  • The HTTP Add-on operator no longer controls your application's Deployment or Service resources. You have full control over creating, updating or removing your application components, and the HTTP Add-on won't touch them anymore (#78)
    • This is a breaking change. Most old HTTPScaledObject spec fields will not work with this release

Logistics changes

Local development environment changes

  • The previous Makefile has been removed in favor of magefiles in #89
    • This change allows us to provide HTTP Add-on developers a consistent, fast, and reliable experience across platforms
    • We're also now able to provide more complex build tasks, including building and pushing container images to GitHub Container Registry in parallel

Documentation changes

  • We've done several major documentation improvements, including adding an FAQ (#71), outlining the scope of functionality of the HTTP Add-on (#81), and use cases (#81)
  • We've also added a document ensuring that this project has a pointer to the kedacore-wide code of conduct (#178)

Thanks

This project is young at the moment, and we have a wonderful and growing community. Special thanks to @ajanth97 and @khaosdoctor for their contributions.

We have a lot of features pending in this project, and we welcome new contributors to help build them. We also have documentation to write, issues to fix, and plenty of other things to do to otherwise push the KEDA HTTP Add-on project forward.

If you're interested in contributing in any way, we are willing to help you get started. Please send a direct message to arschles in the Kubernetes slack group indicating your interest.

KEDA HTTP Alpha 1

09 Feb 17:50
4141b75
Compare
Choose a tag to compare

Alpha 1 is the first official release of the KEDA HTTP Add On, and is intended as a preview for developers. With this release, we're inviting community members to try out the technology, report bugs, and generally give us feedback.

This is alpha quality software and we can't make any guarantees on its stability right now. Please do not run this code for production use cases, in a production Kubernetes cluster, or in any other production settings.

Images for this release can be found at the following locations under the v0.0.1 tag:

About Alpha 1

This project began as a prototype built on top of KEDA, hosted outside of the kedacore GitHub organization, and has transformed as an official addition to KEDA, hosted at github.com/kedacore/http-add-on. During that transformation, we believe that we've designed a high quality, cloud-native architecture with the help of several contributors across the community, and have begun implementing it.

We encourage you to try the software out in your own non-production Kubernetes clusters and tell us what you think and/or contribute back.

Thanks to Contributors

There are several notable contributors for this release. These people had a role in taking this project from a tiny prototype to this point: