linkerd / linkerd/linkerd2

Enable the proxy-injector to configure LINKERD2_PROXY_IDENTITY_*_REFRESH

Open
#13,136 1 comment 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement pinned
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.