Handle cert renewal correctly#4040
Merged
jetstack-bot merged 2 commits intocert-manager:masterfrom May 21, 2021
Merged
Conversation
…on correctly Signed-off-by: irbekrm <irbekrm@gmail.com>
Contributor
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: irbekrm The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
Contributor
Author
|
/kind bug |
james-w
reviewed
May 21, 2021
james-w
reviewed
May 21, 2021
Signed-off-by: irbekrm <irbekrm@gmail.com>
052642d to
6aad750
Compare
Contributor
|
/lgtm Thanks! This fixes the bug and also makes the code and tests clearer. |
This was referenced May 21, 2021
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
See #3897 for context.
This PR changes cert's renewBefore period to be calculated as
min(renewBefore, cert duration / 3)whererenewBeforeis eithercert.spec.renewBeforeor 30d.It fixes a bug, where when cert's duration is very slightly longer than the
renewBeforeperiod, we enter a renewal loop.This has so far hit a number of Vault issuer's users.
The bug:
See the below section of cert status:
See these functions where we calculate renewal time.
This cert has
defaultRenewBefore=30d,actualDuration=30d30s, which means that we return30das therenewBeforetime here.We then calculate renewal time here.
In this case the renewal time it will be
cert.spec.NotAfter - 30dresulting in renewal time30sfrom now and we start renewing every30s(when I tested this, every cert issued by Vault had the duration with the extra30s).This particular case would have also been solved by rounding up the cert duration, but it still seems like
min(renewBefore, cert duration / 3)is a more sane formula.This PR is based on #4031 , but also refactors the renewal functionality so that these kind of bugs can be more easily spotted in future. I have added two test cases for these error cases and tested with an actual Vault instance.
Fixes #3897
Signed-off-by: irbekrm irbekrm@gmail.com