Welcome

Welcome to the Ocelot 23.3 documentation!

It is recommended to read all Release Notes if you have deployed the Ocelot app in a production environment and are planning to upgrade to major or patched versions.

The major version 23.3.0 includes several patches, the history of which is provided below.

Patches

Release Notes

Release Tag: 23.3.0
Release Codename: Twilight Texas, with codename decoding links: for men, for women, for black men.

What’s new?

  • Service Discovery: Introducing a new feature for “Customization of services creation” in two primary service discovery providers: Consul (Consul Service Builder 3) and Kubernetes (Downstream Scheme vs Port Names 3), developed by @raman-m.

    The customization for both Consul and Kube providers in service creation is achieved through the overriding of virtual methods in default implementations. The recommendation was to separate the provider’s logic and introduce public virtual and protected virtual methods in concrete classes, enabling:

    • The use of public virtual methods as dictated by interface definitions.

    • The application of protected virtual methods to allow developers to customize atomic operations through inheritance from existing concrete classes.

    • The injection of new interface objects into the provider’s constructor.

    • The overriding of the default behavior of classes.

    Ultimately, customization relies on the virtual methods within the default implementation classes, providing developers the flexibility to override them as necessary for highly tailored Consul/K8s configurations in their specific environments.
    For further details, refer to the respective pull requests for both providers: Kube (PR 2052), Consul (PR 2067).
  • Routing: Introducing the new “Upstream Headers 3” feature by @jlukawska.

    In addition to routing via UpstreamPathTemplate, you can now define an UpstreamHeaderTemplates options dictionary. For a route to match, all headers specified in this section are required to be present in the request headers.
    For more details, see PR 1312.
  • Configuration: Introducing the “DownstreamHttpVersionPolicy 3” feature by @ibnuda.

    The configurable HttpRequestMessage.VersionPolicy helps avoid HTTP protocol connection errors and stabilizes connections to downstream services, especially when you’re not developing those services, documentation is scarce, or the deployed HTTP protocol version is uncertain. For developers of downstream services, it’s possible to ConfigureKestrel server and its endpoints with new protocol settings. However, attention to version policy is also required, and this feature provides precise version settings for HTTP connections.

    Essentially, this feature promotes the use of HTTP protocols beyond 1.0/1.1, such as HTTP/2 or even HTTP/3.
    For additional details, refer to PR 1673.
  • Configuration: Introducing the new “Route Metadata” feature by @vantm.

    Undoubtedly, this is the standout feature of the release! ⭐

    Route metadata enables Ocelot developers to incorporate custom functions that address specific needs or to create their own plugins/extensions.

    In versions of Ocelot prior to 23.3.0, the configuration was limited to predefined values that Ocelot used internally. This was sufficient for official extensions, but posed challenges for third-party developers who needed to implement configurations not included in the standard FileConfiguration. Applying an option to a specific route required knowledge of the array index and other details that might not be readily accessible using the standard IConfiguration or IOptions<FileConfiguration> models from ASP.NET.

    Now, Metadata can be directly accessed in the DownstreamRoute object. Furthermore, metadata can also be retrieved from the global JSON section via the FileConfiguration.GlobalConfiguration property.
    For more information, see the details in PR 1843 on this remarkable feature.

Updates of the features

Ocelot extra packages

Stabilization (bug fixing)

See all bugs of the Spring’24 milestone

Documentation Summary

Contributing

Pull requests, issues, and commentary are welcome at the Ocelot GitHub repository.

For ideas and questions, please post them in the Ocelot Discussions space.

Our development process is detailed in the Release Process documentation.