Enable the proxy-injector to configure LINKERD2_PROXY_IDENTITY_*_REFRESH
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 11.5k
- Forks
- 1.4k
- Avg merge
- 3d 22h
- Merged PRs (30d)
- 53
Description
### What problem are you trying to solve?
When the linkerd controlplane becomes unavailable the proxies fail to refresh their certificate. If the controlplane is unavailable for a sufficiently large duration, the proxy certificate actually expires, which causes all communication from/to meshed pods to fail. This includes the connection to the identity service, so a new certificate cannot be acquired. When this happens all affected pods need to be identified and restarted.
### How should the problem be solved?
Enable the proxy-injector to set the following environment variables based on it's configuration:
- LINKERD2_PROXY_IDENTITY_MIN_REFRESH
- LINKERD2_PROXY_IDENTITY_MAX_REFRESH
Both are already know to the [proxy](https://github.com/linkerd/linkerd2-proxy/blob/269cbbc76b173a80f2afe9ad5e68b7c728380a68/linkerd/app/src/env.rs#L208).
### Any alternatives you've considered?
Currently, the lifetime of certificate by the identity service can be increased, but the certificate refresh is always scheduled at 70% of certificate lifetime. Depending one the required leeway certificate lifetimes increase significantly.
Lifetimes can be shortened again, when the refresh happens more often.
### How would users interact with this feature?
Once the proxy-injector supports setting these environment variables, it would make sense to also expose the setting in the helm values.
### Would you like to work on this feature?
maybe
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with linkerd2-proxy's linkerd/app/src/env.rs, where LINKERD2_PROXY_IDENTITY_MIN_REFRESH and LINKERD2_PROXY_IDENTITY_MAX_REFRESH are already defined, then trace the proxy-injector configuration and Helm values. Done means the injector sets both environment variables from configuration and the corresponding settings are exposed through Helm values.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, helm, kubernetes
- Domain
- devops, infrastructure
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100