Backport of agent: remove agent cache dependency from service mesh leaf certificate management into release/1.16.x #17704
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.
Backport
This PR is auto-generated from #17075 to be assessed for backporting due to the inclusion of the label backport/1.16.
The below text is copied from the body of the original PR.
Description
This extracts the leaf cert management from within the agent cache.
This code was produced by the following process:
agent/cache
,agent/cache-types
,agent/auto-config
,agent/consul/servercert
were run at each stage.agent
matching.*Leaf
were run at each stage.agent/leafcert
were run at each stage after they existed.Fetch
implementation was extracted into a new package behind a "fake RPC" endpoint to make it look almost like all other cache type internals.Get/Notify/NotifyCallback/Prepopulate
from theagent/cache.Cache
implementation over into the new package. This was renamed asleafcert.Manager
.blocking=true, refresh=false
)leafcert.Manager
instead.agent/cache-types
tests were moved and gently replumbed to execute as-is against aleafcert.Manager
.waiter chan struct{}
was eventually replaced with asingleflight.Group
around cache updates, which was likely the biggest net structural change..*Leaf
tests from theagent
package were copied and made to work directly against aleafcert.Manager
to increase direct coverage.Testing & Reproduction steps
I have done a best effort attempt to port the previous leaf-cert cache type's tests over in spirit, as well as to take the e2e-ish tests in the
agent
package withLeaf
in the test name and copy those into theagent/leafcert
package to get more direct coverage, rather than coverage tangled up in the agent logic.There is no net-new test coverage, just coverage that was pushed around from elsewhere.
PR Checklist
Overview of commits