Linkerd CNI Symlink management #635
Draft
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.
In some cases, the CNI conflist file might be a symlink to a different file located in another directory or with a different extension (e.g., in OCI it uses .conflist-current).
Problem
Right now, the sync function loops over all files with the .conflist or .conf extension. This will:
Exclude symlink files
Exclude files with an extension other than .conflist or .conf
Challenge
We can’t use a simple wildcard after .conflist, because some CNIs create temporary files. That would create a lot of noise in the logs, since the Linkerd CNI binaries would try to modify temporary files that do not exist.
Solution
In both sync function and main flow, if a .conflist or .conf file is a symlink, we will resolve it and get the path to the original file. We will then append the Linkerd configuration to that file.
Tests
Local
simple-appnamespace and validate that the DELETE is called as expected