PVC for Traefik Ingress (prevent LetsEncrypt throttling) #2352
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.
Reference Issues or PRs
What does this implement/fix?
This is an interim fix for #2174 . It sets up a PVC for the traefik ingress pod so that the cert is on persistent storage, meaning that as new pods get recreated, they will not request new certs (which leads to the throttling problem mentioned in the issue).
The "best fix" is cert-manager or another service will handle all these requests. That's being worked on - ref #2336
In AWS, the storage class it uses is EBS-backed and therefore specific to an AZ, which means that this is not truly HA / fault tolerant (the pod will always schedule and launch on a node in the same AZ). However, there are many resources in the kubernetes_services stage that follow this same pattern so this is not introducing a new limitation, and is only intended as an interim fix anyway.
Note I have ONLY tested this in AWS. Need assistance running in other clouds. Specifically, I am not sure that the access_mode will be universal because it is relying on Kubernetes to determine the default storage class and create the volume. This seems to work OK for helm charts that do this within the
kubernetes_services
stage but this resource gets created in a prior stage, so there could be some dependency/configuration that I am missing.Put a
x
in the boxes that applyTesting
Local and AWS cloud
Any other comments?