Skip to content

HAProxy Data Plane API v2.3.0

Compare
Choose a tag to compare
@mjuraga mjuraga released this 11 May 12:48
· 388 commits to master since this release

Release notes

HAProxy Data Plane API v2.3.0 f1bcacc

Build from: git@github.com:haproxytech/dataplaneapi.git
Build date: 2021-05-11T09:33:20Z

Features:

HCL/YAML Configuration File:

  • added a full configuration file support
  • you can now configure all CLI options in a Data Plane API configuration file and use it using the -f CLI option
  • supported formats are yaml and hcl

AWS EC2 Service Discovery:

  • added AWS EC2 service discovery with a new endpoint /service_discovery/aws

ACL Runtime API Updates:

  • added endpoints for managing runtime acl files: /services/haproxy/runtime/acls and /services/haproxy/runtime/acl_file_entries

Inotify Configuration Watcher:

  • you can now make changes to the HAProxy configuration file in parallel with the API, and the API will pick up those changes
  • enabled by default, it can be disabled by starting with --disable-inotify

Syslog Support:

  • Data Plane API can now log to syslog in addition to logging to file and stdout

Customized Configuration Validation:

  • you can specify custom validate_cmd to use when validating HAProxy configuration file

Miscellaneous

  • New command-line and YAML/HCL configuration options for setting the uid and gid of the HAProxy Data Plane API process. The command-line flags are --uid and --gid ; the HCL/YAML arguments are uid / gid.
  • Query string parameters force_reload and skip_reload were added to the Map file and SSL certificate storage endpoints, allowing you to force a reload or skip reloads entirely. The skip_reload parameter has a higher precedence.
  • The query string parameter acl_name allows for querying an ACL by its name.
  • Transactions that fail or are committed after other transactions are made could result in a mismatched version number. These transactions will now be marked as outdated and will return an HTTP 406 Not Acceptable.
  • This release supports all available options to the server and default-server directives.
  • Support for http-request return has been added, which exposes the native response generator that was introduced in HAProxy 2.2
  • The HAProxy Data Plane API can now be configured to write its pid file using the --pid-file command-line argument or pid_file within the dataplaneapi section of the configuration file.

Changelog

f1bcacc BUILD/MINOR: go.sum: run go mod tidy
b97275c DOC/MINOR: release: remove sorting of changelog
dc91a7f BUG/MEDIUM: cluster: do not request for cert if cert was received
eed4863 TEST/MINOR: aligning configuration file to new snake case format
84856bb DOC/MINOR: discovery: adding configuration file snippets for YAML format
ab2c764 DOC/MEDIUM: using snake case for AWS regions HCL keys
c30ca95 REORG/MEDIUM: snake case for HCL and YAML keys in configuration files
cd4f849 REORG/MINOR: config: avoiding double spaces in HCL example
fca8c79 REORG/MEDIUM: config: fixing code-generation for configuration files
de441b7 BUG/MINOR: construct urls without duplicating slashes
a6cd451 BUG/MINOR: adapters: close writter when new apache middleware is created
ba204df OPTIM/MINOR: cluster: avoiding goroutines leak for monitorBootstrapKey
7b52f13 BUG/MINOR: runtime client: fix leak when reloading
667903d BUG/MINOR: discovery: AWS doesn't trigger update
f64d698 REORG/MINOR: discovery: no need for WithCancel context
c92d3e5 OPTIM/MINOR: discovery: closing goroutine if update channel is closed
e3647a2 CLEANUP/MINOR: lint: rename error var
a78333b BUG/MINOR: reload: add context to avoid goroutine leak
797f4c4 CLEANUP/MINOR: reload: adding new method instead of Init
eeda854 TEST/MINOR: runtime: testing ACL files and entry files operations
87eefcb MEDIUM: runtime: support for ACL files through runtime socket
d8d56a1 REORG/MINOR: discovery: providing logs to Consul Service Discovery
791623b OPTIM/MINOR: cluster: accepting context to avoid goroutines leak
f82f045 BUG/MINOR: watcher: clean up goroutines on dataplaneapi reload
50ca9c2 BUG/MINOR: preserving server slots base
817a870 CLEANUP/MINOR: discovery: typo on func name
209e29c REORG/MEDIUM: discovery: using context to handle reloads
c28bb70 BUG/MEDIUM: discovery: using mutex to avoid race condition
fb0c0a5 MINOR: discovery: add debug output for AWS service discovery
e8c53d5 CLEANUP: maps: simplify slice initialization
a1730da BUG/MINOR: add contex to prevent goroutine leaks
7f70e94 BUG/MINOR: discovery: Update AWS growth type default to exponential
6a53ac2 MINOR: cluster: create a new user for connecting to cluster
607f2fe MINOR: service discovery: do not save empty object to file
3565166 BUG/MAJOR: aws: terminate correct attribute
ade6d83 BUG/MINOR: discovery: triggering change for untracked services
3619550 BUG/MINOR: continue processing SIGHUP signals after the first one
13318df BUILD/MINOR: check-commit: pin version of image
dc98991 BUILD/MINOR: check-commit: trigger only on pull requests
8d28e51 REORG/MINOR: discovery: using constants and model enums
21fd460 REORG/MINOR: discovery: missing header file section
bd06165 BUG/MEDIUM: discovery: validating and persisting config file defined instances
4bc8473 MINOR: discovery: validating instance ID to UUID format
b8ca2c2 REORG/MINOR: discovery: instance validation moved to discovery package
7a40346 BUG/MINOR: discovery: Handle config error from existing AWS server
79b223c DOC/MINOR: added consul service discovery documentation
a498d0b MINOR: discovery: change whitelist/blacklist to allowlist/denylist
f88f00b BUG/MINOR: ci: use Go 1.16 version for ci builds
9a1eb19 BUILD/MINOR: check: fetch all commits on commit message check
2d7033e DOC/MINOR: add uid and gid to hcl and yaml examples
ac67748 DOC/MINOR: add uid and gid cli options
1a2017d MINOR: tests: added uid test
0e3a296 MINOR: added comand line options to set uid and gid
1da3dfd MINOR: update client native to latest version
ea8d66c TEST/MINOR: added ssl tests for force_reload and skip_reload
bcdd898 MINOR: storage: add skip_reload and force_reload query params to ssl endpoints
6edd66d DOC/MINOR: configuration file format default is HCL
c0c411e REORG/MEDIUM: configuration file default to HCL rather than YAML
5788b84 BUG/MINOR: using configuration strategy upon config file extension
f25a611 BUG/MEDIUM: nil pointer dereference for missing parent group init
0f0c96d MINOR: treat SIGHUP as reload signal
ac23d46 BUILD/MINOR: set build path from environment with fallback
159fd45 MEDIUM: cluster: address and port enforcement using qs params
b991e7e MINOR: saving advertising address and port to config file
ceeb410 MINOR: cluster: specification and operators update for querystring params
d78c042 DOC/MINOR: removing API options
54f5a67 REORG/MAJOR: removing API options CLI flags
b2dd30c DOC/MEDIUM: syslog: priority is now level
ace5dd0 BUG/MINOR: generate: missing parent group for nested struct fields
66f32ce TEST/MEDIUM: configure dataplane logging for tests and output logs on failed restarts
fdd7efe TEST/MEDIUM: fix location of dataplane config file and enable overrides within tests
a83431e TEST/MINOR: add maximum wait time for custom config dataplane/haproxy restarts
bd5b745 TEST/MEDIUM: refactor and clean up custome test run environments
f0d7efa DOC/MINOR: discovery: documenting new key for AWS regions
fc98b46 REORG/MEDIUM: discovery: switching from awsRegions to aws-regions
853668b BUILD/MINOR: tidying go mod dependencies
da36014 MINOR: acl: add optional acl_name param to query ACL's by its name
672f7a0 BUG/MINOR: maps: ignoring runtime maps when not in storage ones
4daf768 MINOR: storage: add skip_reload for maps
34e3983 DOC/MEDIUM: add info with all options available in file
8cbfdd3 MINOR: update client native to latest version
e8ad220 MINOR: maps: update id for creating new storage map files
6f57ff6 DOC/MINOR: discovery: Service Discovery on AWS
e2cce94 MINOR: discovery: add AWS instances to Service Discovery nodes at startup
c035ead MINOR: discovery: implementing AWS instance deletion
dbe353c MINOR: discovery: implementing AWS instance replace
01e33b7 MINOR: discovery: implementing AWS instances retrieval
17e2701 MINOR: discovery: implementing AWS instance retrieval
4613262 MINOR: discovery: implementing AWS instance creation
c48d32c MINOR: discovery: AWS Service Discovery specification
cc85feb TEST/MINOR: testing AWS Service Discovery
1472e4e MINOR: discovery: Service Discovery on AWS
34a78c7 MINOR: aws: configuration for AWS Service Discovery
235dd18 MINOR: abstracting the service discovery store
7de6b8c BUILD/MINOR: add -trimpath to build options
6791a53 REORG/MEDIUM: HAProxy reload backed by channel
2bd4082 REORG/MINOR: typo on notify channel struct name
9753f87 REORG/MINOR: unused code for bootstrap key changed event
0b26672 TEST/MINOR: transaction: outdated transactions return 406 on commit
82617bf MEDIUM: transaction: 406 for failed and outdated transactions upon commit
a034ed2 MEDIUM: transaction: considering only in_progress files
a5e7eab MEDIUM: transaction: marking outdated transactions on commit
2451329 BUILD: tags: ensure yaml tags are alphabetically ordered
0122ccf BUG/MINOR: service deletion upon ServiceDiscovery update
ef6b11b BUG/MEDIUM: discovery: deleting old backends upon change
7006250 BUG/MINOR: keep the msgID in generated logs
5e90009 BUG/MINOR: cluster: when storage-dr is recieved, check if all subfolders are also compatible
3b474b4 MEDIUM: cluster: add storage-dir to bootstrap key
39df264 BUG/MINOR: avoid hard-coding of values in the generated configuration file
18ea82c BUG/MEDIUM: missing deferring read unlock
7d8cdf8 TEST/MINOR: add optional parallel run capability
e485ed3 TEST/MAJOR: standardize tests and reduce dependence
8b5e113 MINOR: update e2e test descriptions with directory prefix
b270fb3 BUG/MINOR: discovery: Added storage and spoe
223a8bf MINOR: clarify syslog command-line-options
139d36c MINOR: use autodetected transport for syslog outputs
410bafe BUILD/MINOR: update CI invocation for check-commit
b59f575 DOC/MINOR: logging: documenting new syslog options
13849de REORG/MEDIUM: logging: syslog-address combines server and port
48d1269 BUILD/MINOR: go modules alignment
ef13c82 MINOR: logging: support for syslog to unix and unixgram
595c429 BUG/MEDIUM: cluster: solve race condition on connecting on cold start
5f2c222 MEDIUM: auth: option to save api users to dataplane conf file
05cda74 MINOR: config: allow configuring pid-file in dataplaneapi configuration file
0e41328 CLEANUP/MINOR: lint: resolve lint error : shadowing of variable
f2a1a57 MINOR: add command line flag for a file path to store PID
287b0ce MAJOR: models: use models from client-native
7b162c5 MINOR: new client-native ref in go.mod
75e0ae7 DOC: configuration: add documentation related to configuration file
1780853 TEST/MEDIUM: file: use file instead of arguments
46b9193 MAJOR: cfg: add option to save all settings in file
ed4f89f BUILD/MINOR: CI: clean lint cache to have consistency
bb617ca BUG/MEDIUM: transactions: decreasing counter also for mismatching version
3f72efd BUG/MEDIUM: config: add default location of path to the dataplaneapi configuration file
0e2e8b7 BUILD/MINOR: adds GOOS to makefile for cross-compilation
53976ad TEST/MINOR: spoe-group: e2e tests added
62c5358 TEST/MINOR: spoe-message: e2e tests added
a205489 TEST/MINOR: spoe-agent: e2e tests added
2b96266 TEST/MINOR: spoe-scope: e2e tests added
9835038 TEST/MINOR: spoe-files: e2e tests added
10819f2 MEDIUM: error-handling: use HandleError consistently in SPOE handlers
962dbe2 MEDIUM: e2e: enable running only one test
315ca97 DOC: tests: documenting on how to run tests in specific dir
309c65f BUG/MINOR: discovery: reload haproxy on changes
575bd7e TEST/MINOR: runtime: map entries e2e tests added
c743173 MINOR: adds http-request return
d8ee565 DOC/MINOR: e2e: correct minor spell errors
a5ef70c BUG/MINOR: disable test for inotify
84dabe3 DOC/MINOR: fixes swagger command in doc
fed7d98 MINOR: test: added test for inotify
35c231a MINOR: test: update version in x_issue_132 test
584af8e MINOR: update dependencies for inotify watcher
88c837c MINOR: linter: ignore gosec G[501]
eaca468 MINOR: added comand line option to disable inotify watcher
ad36743 MINOR: added config file watcher
2df0496 REORG/MINOR: linting: avoiding shadow declaration
1892ba8 MINOR: logging: providing msgid for syslog messages
fd229ae DOCS/MINOR: logging: documenting the syslog facility with allowed values
baeb0d7 MINOR: logging: supporting syslog customizable facility
79576aa MINOR: logging: formatting syslog message with key/value pairs
c25e62e DOCS/MEDIUM: documenting the customizable Apache CLF flag
a2cdd20 MINOR: logging: adding Apache CLF middleware with customization flag
92fedaa MINOR: docs: documenting syslog logging options
bfbc3de MINOR: logging: adding support for syslog output
3d55e42 REORG/MINOR: linting: fixing code according to current linters options
c29e241 BUG/MEDIUM: injected configuration file can be used for userlist too
e8bfd7b MINOR: add command line flag to specify backup directory
0b85f27 DOC/MINOR: adding the custom validation command
1cd13b5 MINOR: client-native: adding support for custom config file validation command
e58c91b MEDIUM: SPOE: add configuration version handler
4d11b7a BUILD/MINOR: enable overriding CGO compiler flag
17457ea REORG/MINOR: reload: using constants for reload status