linkerd / linkerd2

Ultralight, security-first service mesh for Kubernetes. Main repo for Linkerd 2.x.

Home Page:https://linkerd.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Controller auto-update

olix0r opened this issue · comments

In order to closely track a release train (especially edge), it would be nice to have an auto-update operator that is responsible for watching the version-check api and replacing linkerd controller pods (possibly after some user ack).

Furthermore, this may motivate changing the inject flow to make the controller process the YAML. With auto-inject, and the general desire to have cluster-wide policy, like skip-port whitelists, profile domain policy, etc. This would also reduce the logic related to auto-inject.

It would ideally also update itself in a way that allowed it to ensure the new updater is healthy before closing gracefully (i.e., not bluntly overwriting its own kubernetes resource).

@brianredbeard We spoke at KubeCon and you mentioned that you had some advice on this issue. Would love any input you might have.

I'm really interested in this issue for edge builds.

Hello people! I saw this under the GSoC projects list and Im interested. Currently building linkerd. Can I know how to reproduce the above issue?

@SUMUKHA-PK what do you mean by reproducing the issue?

I wanted to know about any current implementations/the module where the implementation must be done actually.

There's nothing that exists so far, it would end up being a completely separate component of the control plane. Probably a Deployment with a single replica that polls version.json, checks the control plane version and then starts to update it. A naive solution would be something that pulls down the new version of the linkerd CLI, applies the YAML from install to the cluster and then does something similar for the pods that have been injected.

This is a very interesting project for me. I want to work on it in GSoC.

Great! Please drop into linkerd slack, we've got a #gsoc channel there. You'll want to start thinking through implementation details for the application and getting to know us a little better by tackling some issues. To get to know the code a little better, take a look at some of the controller and cli issues in particular.