-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Linkerd Add-Ons #3794
Comments
@Pothulapati The Helm approach sounds great to me 👍 I guess chart addons would live in their own separate github repos, and we'd add them to our Helm repo at a place like But thinking about the CLI side of things, we might actually need access to the files of those subcharts, just like we currently consume the linkerd2 chart in order to build the manifests. So we could either pull them and include them when building the release, or maybe better, pull them dynamically during You said you had some ideas about the CLI part. Do you mind opening an issue? I think it's worth thinking on both the Helm and CLI parts in parallel 🤔 |
We should be explicit about this decision. I've been assuming they'd all be in the same repo. That'll make contribution more difficult though. What would we need to get put together so that these addons can live in separate repos but still have a consistent look and feel? I'm thinking we'll want some kind of common CI toolbox at the bare minimum. I'm of the opinion that we should be concrete about what we'd like to do for splitting Grafana and Prometheus out and go from there. |
IMO, they should just live under At least we should initially focus on the local file-path add-ons and later try to move them out-of-tree if needed. |
So, Add-on Model is planned to be done using helm charts as the underlying tool.
The
Now, we have to replicate the same model using the
How does the CLI know about the templates of the sub-charts? Should it also maintain them? or just get those details from IMO, We should have a similar config for add-ons in type (
// Values contains the top-level elements in the Helm charts
Values struct {
Stage string `json:"stage"`
ControllerImage string `json:"controllerImage"`
.
.
.
// Add-Ons For Linkerd
Grafana *add_ons.Grafana `json:"grafana"`
} This follows the already exisitng pattern of having config in
The By Helm, Users can always pass a new For Linkerd Install, How should the add-on values be over-written? I was thinking, we should allow users to perform Is there a better approach rather than passing values? We could do
The add-ons Values should be stored somehewhere. So that we can retrieve and update them, for handing upgrades. This can be done by adding another field in
For Upgrades, this config-map will be parsed and all the add-ons that are present will be overriden with this config.
Add-Ons can also be highly-available. This can just work by specificying relavant values for add-ons in |
After talking to @grampelberg, |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed in 14 days if no further activity occurs. Thank you for your contributions. |
Linkerd Add-Ons
Goals
Non-Goals
All of the above cases, can always be done by using the official helm-charts/operators of those components.
Example Add-ons
Why not use Helm Charts as dependencies?
This can remove the hassle of having them in our code-base but introduces the following problems
Procedure
There will be add-ons in
charts/add-ons/tracing
, where each chart has its own templating, values and structure.All charts will be mentoned as dependencies, to
linkerd
.Add-ons will be optional using [conditional field](https://v2.helm.sh/docs/developing_charts/ #tags-and-condition-fields-in-requirements-yaml)
global.Add-ons.<add-on>.Enabled
.The same
global.Add-ons.<add-on>.Enabled
can be used to toggle stuff in thelinkerd
parent chart based on the component is present or not. Ex--control-plane-trace
flag in control-plane components can be toggled based onglobal.Add-ons.tracing.Enabled
Each Sub-Chart dosen't have to depend on
partials
again, asLinkerd
depends on that, and helm would make that automatically available for other siblings charts i.eadd-ons
in this case.Each Sub-Chart can be made configurable by using
global.Add-ons.<add-on>.property
rather than using it's ownValues.yaml
, to make configuration also available usinglinkerd install
.Values can be passed between linkerd and sub-charts by:
Linkerd
->Add-On
:.Proxy
,.Namespace
, etc..Values.global.<name>
Add-On
->Linkerd
:Values.global.Add-Ons.<name>.property
.Upgrades would work automatically, as the install cli flags are stored in the config map automatically.
Pre-requisite Changes Required
.Values.Proxy.*
, etc to.Values.global.Proxy.*
, etc. This would need changes in linkerd install, and injector code as they re-use the same templates.I'm working on the above mentioned changes at https://github.com/linkerd/linkerd2/compare/master...Pothulapati:add-ons?expand=1
This contains the pre-requisite helm changes. Once I get the linkerd install, and inject changes, will open a draft PR. Looking for feedback till then.
@ihcsim @grampelberg @alpeb
The text was updated successfully, but these errors were encountered: