Skip to content

Releases: gatewayd-io/gatewayd

v0.10.1

14 Dec 13:03
b6df86a
Compare
Choose a tag to compare

This release introduces Raft-based state management for GatewayD to ensure efficient and consistent coordination between multiple instances. By leveraging HashiCorp’s Raft implementation, GatewayD now maintains a unified state for parameters like connection pools and load-balancer strategies across all instances in a cluster, ensuring high availability, consistency, scalability, and efficiency.

Key Features and Objectives:

  1. High Availability: Ensures the system remains operational even if individual instances fail. Raft provides fault tolerance by replicating state across multiple nodes, enabling consistent state retrieval and updates during failover scenarios.

  2. Consistency: Guarantees that all instances in the cluster share the same view of stateful parameters, such as connection pools and load-balancer strategies, maintaining synchronized operations across distributed instances.

  3. Scalability: Simplifies state coordination in clusters, enabling seamless scaling of GatewayD instances without introducing inconsistencies or requiring manual intervention.

  4. Efficiency: Propagates updates to stateful parameters in real-time, ensuring optimal load balancing and resource utilization across instances.

Implementation Details:

  • Unified State Management: A single Raft cluster handles stateful parameters as key-value pairs, ensuring consistency across nodes without the need for complex databases.
  • Real-time Updates: Changes in one instance are immediately propagated to others, maintaining consistency and optimal load balancing.
  • Fault Tolerance and Recovery: Raft’s persistence via BoltDB ensures reliability, while in-memory runtime state management simplifies operations.

This update resolves inconsistencies in the previous per-instance state management approach, ensuring scalable and robust operation for GatewayD clusters. A huge thanks to @sinadarbouy for his excellent work on this implementation! 🎉


This release also includes several critical updates and fixes to enhance security, improve performance, and maintain compatibility:

Security Updates:

  1. OpenSSL Update: Upgraded to 3.3.2-r1 to address CVE-2024-9143.
  2. Crypto Library Fix: Resolved CVE-2024-45337 by updating golang.org/x/crypto to the latest version.

Dependency Updates:

  1. GitHub Actions: Updated softprops/action-gh-release to v2 for enhanced functionality and compatibility.
  2. Direct Dependencies: Updated direct dependencies to their latest stable versions.

Development Improvements:

  1. SDK Update: Updated the SDK to the latest version.
  2. Go Updates: Upgrade Go to the latest version.
  3. Protobuf Changes: Regenerated Protobuf message stubs with HTTP annotations for improved API compatibility.

Linter Fixes:

  • Addressed all issues reported by linters to ensure cleaner and more maintainable code.

What's Changed

Full Changelog: v0.10.0...v0.10.1

v0.10.0

09 Nov 12:22
7f47dca
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.9.10...v0.10.0

v0.9.10

15 Oct 22:07
37fec61
Compare
Choose a tag to compare

This release marks the culmination of the v0.9.x milestone, packed with significant new features, fixes, and enhancements that have made GatewayD more robust, stable, and scalable. Key highlights include the introduction of the policy engine, aka. the Act system, in v0.9.0, the plugin scaffold feature in v0.9.5, and the load balancing feature in v0.9.7, among many others.

Over the course of this milestone, we merged 89 squashed commits into the main branch, resolved 30 issues, reviewed numerous PRs and published 11 releases — thanks to the perseverance and contributions of our amazing community. None of this would have been possible without their dedication.

Looking ahead, there's even more in store, and we invite you to get involved. Whether you're a user or a tester, your participation is crucial. If you're ready to contribute, @mostafa is here to support you every step of the way.

Full Changelog: v0.9.9...v0.9.10

v0.9.9

11 Oct 10:43
33ca9b1
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.9.8...v0.9.9

v0.9.8

29 Sep 18:49
9ec6b54
Compare
Choose a tag to compare

This release introduces several key enhancements and fixes. A significant improvement is the integration of PostgreSQL test containers for seamless integration testing, replacing hardcoded addresses with dynamic test container addresses. This ensures a consistent test environment across various packages such as api, cmd, and network, and centralizes the setup in a reusable function. Additionally, dependency updates were made, including the latest GatewayD SDK, and the gomoddirectives linter was disabled to streamline development. The plugin configuration was updated to utilize the cache plugin version 0.4.0. A major bug has been fixed that improved handling of PostgreSQL's COPY command, as explained here, plus other bugfixes and improvements.

This wouldn't be possible without @sinadarbouy's contributions. 🙏

What's Changed

Full Changelog: v0.9.7...v0.9.8

v0.9.7

10 Sep 10:04
4510a51
Compare
Choose a tag to compare

This release contain a major change, where each tenant can now connect to multiple databases, contrary to the previous one-tenant-one-database approach, and use server load balancing strategies to distribute the load among these databases. Random, round robin and weighted RR strategies with consistent hashing are supported, thanks to @sinadarbouy and @eabasir for their contributions.

What's Changed

New Contributors

Full Changelog: v0.9.6...v0.9.7

v0.9.6

03 Jun 22:23
f70e428
Compare
Choose a tag to compare

In this release of GatewayD, several updates and fixes have been made. Support for queueing asynchronous actions in the background was added (thanks to @Hamsajj 🙏). This feature allows the output of policy evaluation by Act to be published to a Pub/Sub queue on Redis and plugin and external consumers can consume and run arbitrary actions based on that.

Provenance attestation and SBOM features were added, along with an Alpine update. Setup issues were resolved. The REDIS_URL environment variable can be used to setup the cache plugin. The policy input has been enriched to include plugin parameters and its result for better policy evaluation. Dependencies were updated, including a bump of grpc-gateway to version 2.20.0. The Dockerfile linting was added to the CI workflow.

Additionally, an issue with IP address binding that prevented external access to the containers from the host machine was fixed (thanks to @sinadarbouy 🙏).

What's Changed

New Contributors

Full Changelog: v0.9.5...v0.9.6

v0.9.5

17 May 11:51
29aa557
Compare
Choose a tag to compare

This release contains a lot of improvements to the overall reliability and stability of GatewayD and a very nice feature contributed by @zeina1i (thank you 🙏). This release also has two first-time contributors: @ChrisD-Git and @smnmna99, which we are really grateful for (thank you🙏).

  • Plugin scaffolding feature: Previously the plugin template for Go was the go-to method for developing new plugins for GatewayD. @zeina1i integrated the template into the GatewayD CLI, so that you can create a new plugin scaffold and be able to test it in one place using the following command.

    $ gatewayd plugin scaffold -h
    Scaffold a plugin and store the files into a directory
    
    Usage:
      gatewayd plugin scaffold [flags]
    
    Flags:
      -h, --help                help for scaffold
      -i, --input-file string   Plugin scaffold input file (default "input.yaml")
      -o, --output-dir string   Output directory for the scaffold (default "./plugins")

    An example input file is as follows. Note that the repository name defines the plugin name.

    remote_url: https://github.com/gatewayd/test-gatewayd-plugin
    version: 0.1.0
    description: This is test plugin
    license: MIT
    authors:
      - Author 1 <[email protected]>

    For more information, please refer to the updated Plugin Developers' Guide in the docs.

  • New security policy: @ChrisD-Git contributed the security policy and guidelines, which should be followed when reporting vulnerabilities.

  • @smnmna99 added OpenTelemetry tracing to the API, which means that almost everything in GatewayD can now be traced using OTLP gRPC.

What's Changed

New Contributors

Full Changelog: v0.9.4...v0.9.5

v0.9.4

10 Apr 11:59
53d39ba
Compare
Choose a tag to compare

This is a maintenance release and it contains a lot of fixes and improvements to linting, dependency updates, build process and fixes for issues found during code inspection. The last piece of the puzzle is contributed by @likecodingloveproblems (thank you! 🙏) in #503, where he went through all the code and updated the signature of all the constructor function to receive structs, instead of individual parameters. This helps ensure code quality is on par with the latest best practices in Go ecosystem.

What's Changed

New Contributors

Full Changelog: v0.9.3...v0.9.4

v0.9.3

15 Mar 10:11
e88df0a
Compare
Choose a tag to compare

This release introduces several updates and improvements, marking a collaborative effort among multiple contributors. Key changes in this release include:

  1. Action timeout: @Hamsajj introduced a timeout for running actions, which helps in preventing actions from hanging indefinitely. This improvement contributes to the reliability of GatewayD by ensuring that actions complete in a timely manner or terminate if they exceed the specified timeout period. There are two timeouts: Act registry timeout and action timeout. Individual actions can override the registry timeout.
  2. Graceful shutdown for gRPC and HTTP servers: implemented by @zeina1i, this feature introduces a graceful shutdown process for both gRPC and HTTP servers, ensuring that servers terminate their processes smoothly without abrupt interruptions, thereby preventing potential data loss or corruption and also smooth cleaning up of the resources.
  3. Markdown generation for gatewayd command: this enhancement allows for automatic generation of markdown docs from command help texts.
  4. HTTP server bugfixes: this update fixes errors within the HTTP server, enhancing stability and reliability for end-users.
  5. Dependency updates: the dependency updates ensure GatewayD stays compatible with other packages and secure from vulnerabilities found in older versions of dependencies.

The release is a good example of the collaborative effort of the community, thanks to @Hamsajj and @zeina1i for their contributions.

What's Changed

New Contributors

Full Changelog: v0.9.2...v0.9.3