Skip to content

v0.4.0

Compare
Choose a tag to compare
@markmandel markmandel released this 16 Nov 08:37
· 246 commits to main since this release
1d414cb

Introduction

Hello everyone, we're proud to announce version 0.4.0 of Quilkin! Quilkin is a non-transparent UDP proxy specifically designed for use with large scale multiplayer dedicated game servers deployments, to ensure security, access control, telemetry data, metrics and more. It is designed to be used behind game clients as well as in front of dedicated game servers.

This is a huge release of Quilkin, with many breaking changes across the entire system, so please check the updated
documentation for new runtime arguments, configuration formats, new filters and changes to metrics. We'd like to highlight of the biggest changes for Quilkin.

Improved CLI

Quilkin now exposes some configuration through its CLI, allowing you to much more easily use and try out Quilkin without requiring you to write a configuration file. For example, you can now a run simple static proxy like so;

quilkin run --port 7000 --to 127.0.0.1:8000

Builtin xDS Integration

When you move beyond running a single proxy instance, you typically need some kind of controller service to manage all the instances of Quilkin. We've now added a builtin xDS (an industry standard API initially created for envoy) management service into Quilkin, so instead of needing to write your own custom integration, it's provided out of the box, and is as simple as running quilkin manage.

xDS Providers

Quilkin currently comes with two "providers" aimed at two different configuration management use-cases. Both of these behave exactly the same in terms of xDS management, with the only differences being the sources of the configuration.

  • File The file provider watches a specified configuration file in the file system, and updates any active proxies with its configuration. This is perfect for simple setups and development work.
  • Agones When you need to move to managing gameservers through Kubernetes, Quilkin directly integrates with Agones, updating available proxy instances with ready gameservers, allowing you to dynamically and automatically add and remove gameservers from proxies with no effort.

GeoIP Maxmind Integration

Quilkin proxies can now be provided a Maxmind database, and will provide extra information in your metrics and logs related to the ASN/ISP that your client is connecting from. This will allow us provide more in-depth quality of service metrics out of the box that would normally require changes to your game server to be able support.

Check out the documentation for more details on features, installation and usage.

Detailed Changelog

Breaking changes:

Implemented enhancements:

  • Variable substitution with mdbook: point release docs at a release branch #609
  • Include image built in PR on CI Bot Result #593
  • Readiness probe based on number of endpoints #590
  • Docker image entrypoint should just be "/quilkin" #583
  • Configure basic configuration values with command flags #572
  • Be able to configure tracing/log levels #541
  • Use reflectors for Agones provider API #532
  • Add Metrics and logging to the xDS server #522
  • Make config::Config compatible with xDS manager #520
  • Add admin server for xDS management server #519
  • e2e tests for Agones integration #510
  • Switch to using serde_json::Value internally over serde_yaml::Value #507
  • impl prost::Message for filter configuration directly. #505
  • xDS: Support any filter #486
  • More in-depth network metrics about clients (IPv4 and IPv6) #450
  • Replace listen distributor task with multithreaded SO_REUSEPORT task. #410
  • xDS Example #233
  • Total review of guide #645 (markmandel)
  • Build macos binaries on ARM #636 (markmandel)
  • mdbook-variables for Documentation #629 (markmandel)
  • Add timestamp filter #627 (XAMPPRocky)
  • Added ASN and Prefix labels to active sessions #621 (XAMPPRocky)
  • Agones xDS Provider example #618 (markmandel)
  • (Mostly) Build tools working on arm64 #612 (markmandel)
  • Docker image entrypoint is now /quilkin #607 (markmandel)
  • Add ASN maxmind database integration #604 (XAMPPRocky)
  • Add Build Images to CI results #599 (markmandel)
  • Add ready probe endpoint #591 (XAMPPRocky)
  • Agones + Quilkin xDS integration test. #587 (markmandel)
  • Agones GameServer + Quilkin sidecar test #582 (markmandel)
  • Basic Agones GameServer integration test #580 (markmandel)
  • Add arguments to quilkin run #574 (XAMPPRocky)
  • Add BUILD_LOCAL to build tools #565 (markmandel)
  • Clarify packet direction in traces, use base64 for bytes_to_string #563 (XAMPPRocky)
  • Improve build-image incremental workflow #561 (markmandel)
  • Implement xDS in Quilkin #552 (XAMPPRocky)
  • Run Agones tests in CI #551 (markmandel)
  • Dev: Build, Push and Test Agones Integrations #549 (markmandel)
  • Tools for Agones e2e testing #545 (markmandel)
  • Adding Erin to Cargo Authors. #544 (markmandel)
  • Implemented Port reuse for downstream connection. #543 (markmandel)
  • Test Utility to enable tracing logging. #537 (markmandel)
  • Update xDS doc #528 (rezvaneh)
  • Metrics for Match Filter #511 (markmandel)
  • Add basic alpha version of the UE4 plugin #485 (XAMPPRocky)

Security fixes:

See CHANGELOG for more details on changes.

Images available with this release: