Linkerd2: Support annotation to override default timeouts for Linkerd-proxy DNS canonicalization

Created on 24 Jun 2020  路  14Comments  路  Source: linkerd/linkerd2

Feature Request

What problem are you trying to solve?

Currently, Linkerd proxy provides LINKERD2_PROXY_DNS_CANONICALIZE_TIMEOUT environment variable that allows the default 100ms timeout to be overridden. https://github.com/linkerd/linkerd2-proxy/pull/175
However there is no proxy configuration or annotation to override this environment value during helm or customized installation or even using release pipeline

How should the problem be solved?

we should probably provide linkerd config annotation that can override environment variables like LINKERD2_PROXY_DNS_CANONICALIZE_TIMEOUT

config.linkerd.io/proxy-dns-canonicalize-timeout : "200"

Any alternatives you've considered?

Alternatively we should consider providing CLI flag too --proxy-dns-canonicalize-timeout

How would users interact with this feature?

For example, we can add annotation to our proxy config,

             annotations:
                   config.linkerd.io/proxy-dns-canonicalize-timeout : "200"

or can also be done manually using linkerd CLI
kubectl get deployment ... | linkerd inject --proxy-dns-canonicalize-timeout : "200" | kubectl apply -

arecontroller areinject areinjector good first issue help wanted

Most helpful comment

I would like to work on this issue!

All 14 comments

@Abrishges Thanks for the issue. I'm just wondering if you will be interested in working on this; I can point you in the right direction. It will require some knowledge with Go.

I would like to work on this issue!

@grampelberg WDYT of just adding this as a config annotation as a starter, without the CLI option?

SGTM

Not saying this is a good idea, but should we just make it possible to override arbitrary proxy variables?

Hey @ArthurSens, This could be similar to https://github.com/linkerd/linkerd2/pull/4608 and looking at it might help.

Feel free to reach out here, if you have any questions :)

@grampelberg That will be great if we want all proxy variables to be overridable. At the moment, not all of them are. And I can see why we don't want variables like LINKERD2_PROXY_DESTINATION_SVC_ADDR, LINKERD2_PROXY_IDENTITY_DIR to be (directly) configurable. fwiw, I'd also feel better about making things more configurable, if we also provide tooling to detect abnormal config.

Hello everyone, I've made some changes that you can see here. A new attribute was added to the ProxyInit struct, but I couldn't find where exactly linkerd uses that struct to configure the proxy-init container. What am I missing?

And just to be sure... am I following the right direction with the changes so far?

@ArthurSens Yup, that's the right file where we serialize the Go structs that hold the Helm variables. I'm gonna move the rest of the code-level details to the #contributor channel.

@ArthurSens I ran this in my local environment and it's looking good, so far.

I also read through your conversation with @ihcsim on slack, so I think I'm all caught up. Is there anything I can help with on this? I'd love to see it merged!

Hey @cpretzer @ihcsim, wanted to say that it has been some time since the last time I worked on this and I'm afraid that I won't be able to put as much effort as I'd like to it.

I think it would be better for linkerd if someone else was assigned to this

Thanks for the update @ArthurSens, we really appreciate all the effort that you have put in. 馃檹 馃槃

When you have time again, we'd love to work with you on this or other PRs.

Closing for now. If anyone is interested in picking up the work, please comment here

We need this as well. 100ms seems a bit low under load for most clusters.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

adleong picture adleong  路  4Comments

wmorgan picture wmorgan  路  3Comments

ihcsim picture ihcsim  路  4Comments

skalinets picture skalinets  路  3Comments

steve-fraser picture steve-fraser  路  4Comments