-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
[installer]: deprecate static message bus password and replace with secret #15905
Conversation
8318571
to
5b4275f
Compare
2845cd9
to
94492fa
Compare
0e6f3b4
to
1b5dc78
Compare
started the job as gitpod-build-sje-deprecate-messagebus-pass.8 because the annotations in the pull request description changed |
started the job as gitpod-build-sje-deprecate-messagebus-pass.9 because the annotations in the pull request description changed |
started the job as gitpod-build-sje-deprecate-messagebus-pass.10 because the annotations in the pull request description changed |
started the job as gitpod-build-sje-deprecate-messagebus-pass.11 because the annotations in the pull request description changed |
/hold so I can rebase the golden files before final merge |
/werft run 👍 started the job as gitpod-build-sje-deprecate-messagebus-pass.13 |
a707f57
to
f1b106d
Compare
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.
LGTM apart from the above comment! Init container does seem to be a bit complicated but seems to be the only way without changing too much logic. Hoping we can move to using extraConfiguration
option in the future so that we don't have to pass the password at two different places 🤔
/hold Just in case
I tried to review the code, but it was a bit too large for me to judge with confidence. |
@geropl yes, it's a bigger than I'd have hoped. Happy to sync with you if you need it |
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.
Reviewed the diff, and chatted with Simon.
LGTM!
Previously, this was defined as a Helm secret inline. Now, this uses the way that the Installer supports by default.
f1b106d
to
bd70425
Compare
/unhold Rebased from |
/hold |
bd70425
to
a71f403
Compare
/unhold |
Description
The experimental config had a
staticMessagebusPassword
key which violates our rules on configuration, namely "sensitive data must be stored in a secret".To that end, this deprecates the old behaviour and replaces with a new
messageBus
object in the config. I took the decision to put it in a new object because, as a dependency, it's plausible that we'll need to have additional configuration options in the future (similar to registry/db/storage).The complexity with this ticket is that RabbitMQ load definitions secret which requires the password. As there's no documentation on how to achieve that, the load definition secret stores the password as
%PASSWORD%
, I've created an init container which reads the load definition and password secrets and replaces%PASSWORD%
with the actual password and then saves it to theemptyDir
which is what's actually used by the RabbitMQ resource.If no password is given or the old
experimental
config is used, this stores the given password in a secret so RabbitMQ can read it.There is no
MapValue
for the experimental config that can be done because it's too complex to create a secret for a time-limited deprecated function. The deprecated message doesn't display the password because I don't want to write credentials into logs, even if the password is easily readable.Related Issue(s)
Fixes #15899
How to test
Install a cluster with the following config. To check that the new secret has been promulgated, run
kubectl exec -it -n gitpod deployments/server -- env | grep MESSAGEBUS_PASSWORD
1. No password specified (default)
No special config required
2. Deprecated
experimental
config3. New password secret
Release Notes
Documentation
Build Options:
Experimental feature to run the build with GitHub Actions (and not in Werft).
If enabled this will build
install/preview
Valid options are
all
,workspace
,webapp
,ide
,jetbrains
,vscode
,ssh