-
Notifications
You must be signed in to change notification settings - Fork 82
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support for Customizing the HAProxy Feature Version #673
base: master
Are you sure you want to change the base?
Conversation
@kinjelom please excuse the delay. First of all, thank you for creating this PR. We are discussing this PR and have a few more questions / comments. Could you expand a little more on the motivation for delivering multiple HAProxy versions in the same boshrelease? What is the specific use case where this helps you? Based on the motivation, some of the comments below may still change. With the state of our understanding, we have the following comments:
|
@peanball Wrapping haproxy in boshrelease has many advantages, but it often limits configuration flexibility. By using raw-config, we give up some convenience but gain complete configuration freedom. Currently, we mainly use haproxy-boshrelease with raw-config. I don't see a problem with the raw-config user being able to freely choose the haproxy major version. However, supporting a new major version of haproxy with the traditional boshrelease config requires significantly more work. I am starting to wonder whether combining the boshrelease approach with traditional config and raw-config is a good idea. Wouldn't it be better to create a separate boshrelease that supports only raw-config?... |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are also some open questions that would also need to be resolved (listed at the bottom). Your take on those questions would be very welcome as well.
We have the following suggestions on how to integrate this change better with our release strategy.
- Adding multiple packages for different versions is something that, e.g. the Postgres boshrelease already does, in a similar way. So conceptually this whole PR is fine overall and makes sense.
- We have lots of common things (hatop, PCRE, socat, ...) that should ideally not be repeated in each HAProxy version package. We should instead move those to a separate package. The respective HAPRoxy version jobs can then also depend on this common package.
You started something similar already with the packaging-tools.sh file. - The acceptance test execution setup will need to be adapted to run the acceptance tests with each of the HAProxy versions. Ideally this should be done as parallel as possible.
Currently, the setup is as follows: Deploy n haproxy deployments (n = ginkgo parallel execution concurrency, currently ends up being n = 7). Run the tests in parallel, distributed on the various HAProxy deployments.
For multiple HAProxy releases we'd need 3 x n HAProxy deployments, if we support 3 HAProxy versions. - The different version should be handled by the auto bump-dependencies.py script as well, instead of a fixed list of versions. This ensures that newer version are automatically pulled in and don't require manual checking.
Open questions:
- How do we pick, which versions are provided in the release?
- Should LTS versions remain until they're out of service / support?
- How many versions do we support concurrently?
- Do we want to have the current dev release included for testing?
- What do we do with tests that are targeting a feature in a newer HAProxy version that is not supported by an older version? (Potentially tagging of tests in Ginkgo)
- What should the versioning scheme look like?
- e.g. haproxy-boshrelease
v15.0.0+2.8.10+2.9.3+3.0.3
The main idea for exposing the HAProxy version number in the boshrelease version was to quickly see, which HAProxy version is deployed exactly.
- e.g. haproxy-boshrelease
Again, it would be very interesting for us to get your take and opinion on these questions -- or at least the ones that are relevant to you and your daily work.
@@ -0,0 +1,40 @@ | |||
#!/bin/bash |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please note that we have an auto-bumper in place for updating versions in ci/scripts/autobump-dependencies.py.
This script can bump the versions in specific packages and takes care of uploading blobs, etc. already.
|
||
source packaging-tools/installation.sh | ||
|
||
install_hatop "$BOSH_INSTALL_TARGET" "$HATOP_VERSION" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we could add a package that is called haproxy-common
, which would install all those helpers and provide PCRE, etc. for compilation.
The respective specific haproxy version would then only reference the haproxy blob itself, and we could reduce the amount of duplicated code as the setup of commonly available things could be done in the haproxy-common
component.
packages/keepalived/packaging
Outdated
KEEPALIVED_VERSION=2.2.8 # https://keepalived.org/software/keepalived-2.2.8.tar.gz | ||
tar xzvf keepalived/keepalived-${KEEPALIVED_VERSION}.tar.gz | ||
cd keepalived-${KEEPALIVED_VERSION}/ | ||
tar xzvf keepalived/keepalived-${KEEPALIVED_VER}.tar.gz |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The auto bumper relies on the value in the comment. Please don't remove it.
@@ -1,13 +1,14 @@ | |||
# abort script on any command that exits with a non zero value | |||
set -e -x | |||
|
|||
source meta-info/blobs-versions.env |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As noted before, we should instead set up the auto-bumper for the 3 packages, respectively pinned to their correct HAProxy version.
This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs within 15 days. |
This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs within 15 days. |
Now an HAProxy feature version
properties.ha_proxy.haproxy_feature_version
can be specified by themajor.minor
version number, one of several HAProxy packages included in this release:2.8
- support EOL: 2028-Q2 (LTS)2.9
- support EOL: 2025-Q1 (STS)3.0
- support EOL: 2029-Q2 (LTS)LTS - Long Term Support
STS - Short Term Support
Note: This release will be tested only with the default HAProxy feature version (now:
2.8
). Use other feature versions with raw configurations at your own risk.HAProxy 3.0 Major changes