Skip to content

Conversation

@GTRekter
Copy link

@GTRekter GTRekter commented Dec 4, 2025

First version of the Linkerd OSS Agent. It enables users to inject Linkerd proxies and use Linkerd CLI subcommands to inspect certificates, and check control-plane and data-plane health.

Diagnostics commands are included to simplify troubleshooting of policies, endpoints, and profiles.

@GTRekter GTRekter force-pushed the linkerd branch 2 times, most recently from 61d5bef to bd3e335 Compare December 4, 2025 18:55
Signed-off-by: Ivan Porta <[email protected]>
Signed-off-by: Ivan Porta <[email protected]>
Signed-off-by: Ivan Porta <[email protected]>
Signed-off-by: Ivan Porta <[email protected]>
Signed-off-by: Ivan Porta <[email protected]>
Copy link
Contributor

@EItanya EItanya left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks so much for adding the linkerd tools, we're super excited to have support for more CNCF projects. I just left a few high level comments, besides that things are looking good!

}

func runKubectlManifestCommand(ctx context.Context, action, manifest string) (string, error) {
manifestPath, err := writeManifestToTempFile(manifest)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure this will work in cluster without a mounted memory volume or some such. Does this require a tmpfile or can we use stdin?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point! Sure, we can definitely use stdin without going through a temp file. :-)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

one way is to run it as kubectl -f - and stream manifest as input

// linkerd install | kubectl apply -f -
//
// Additional configuration options are documented at https://artifacthub.io/packages/helm/linkerd2/linkerd-control-plane#values
func handleLinkerdInstall(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm a little worried that the number of args here will confuse the LLM, do you think there's a smaller set of args we can start with to make sure the experience is better by default?

//
// linkerd install-cni [flags]
func handleLinkerdInstallCNI(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
skipChecks := mcp.ParseString(request, "skip_checks", "") == "true"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same comment about number of args

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, we can always add more as more requirements are found, but my guess is that there are some sane defaults we can use 99% of the time, especially at first

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants