v0.4.0
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:
- Refactor configuration and builder pattern #525 (XAMPPRocky)
- Add
StaticFilter
trait #515 (XAMPPRocky)
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 overserde_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:
- Fix security advisory in chrono #557 (markmandel)
See CHANGELOG for more details on changes.
Images available with this release: