Handle empty Kubernetes auth tokens during server initialisation #763
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The k3s-server role bundles some vendor manifests to set up authentication to allow Sensu and Telegraf to access the Kubernetes API server. However, there is a failure case which is not handled correctly, where the token loader services attempt to read the content of the corresponding Secret resource after it has been loaded from the vendor manifests, but before the control plane has added the secret token. This will result in the loader script writing an empty access token to the token file, which will cause Telegraf to fail to start.
This PR fixes this issue by adding a check in the token loader script to ensure that the token is non-empty, and amends the execution condition in the systemd unit template so that the loader script gets executed both when the token file does not exist and when it exists but is empty.
PL-131681
@flyingcircusio/release-managers
Release process
Impact: internal.
Changelog:
Security implications