-
Notifications
You must be signed in to change notification settings - Fork 7.8k
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
istioctl pod troubleshooting commands should be able to determine associated control plane #22274
Comments
Everything in the pilot component (deployment, configmap,etc) should get the istio.io/rev label if revision is set. are you not seeing this? |
Using master, I did one
|
ah right, the pod doesn't but the deployment does. we should probably make
the pod have it. Thanks!
The config map does, right?
…On Tue, Mar 17, 2020, 5:26 PM Ed Snible ***@***.***> wrote:
@howardjohn <https://github.com/howardjohn>
Using master, I did one istioctl manifest apply and another using revision:
canary.
- The Canary istiod pod has label "version: canary" *NOT istio.io/rev
<http://istio.io/rev>*
- Non-canary istiod pod has no label "version".
- The Canary svc has label "istio.io/rev: canary"
- Non-canary svc has no label "istio.io/rev"
- The Canary istiod-svc has label "istio.io/rev: canary"
- Non-canary istiod-svc has label no label "istio.io/rev"
- The Canary mutatingwebhookconfigurations has label "istio.io/rev:
canary"
- Non-canary mutatingwebhookconfigurations has no label "istio.io/rev"
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#22274 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAEYGXLVG2I7FHROHSWJVMDRIAIMBANCNFSM4LN72GMQ>
.
|
@howardjohn The configmap has it. Are we married to the idea that if revision is |
I think you can do it. `-l !istio.io/rev` maybe? I think it's possible I'll
look into it
…On Tue, Mar 17, 2020, 5:51 PM Ed Snible ***@***.***> wrote:
@howardjohn <https://github.com/howardjohn> The configmap has it.
Are we married to the idea that if revision is "" the istio.io/rev is not
needed? I recommend we set istio.io/rev to something, perhaps "". I can
do kubectl -n istio-system get cm --selector istio.io/rev=canary and it
works. If we set istio.io/rev to "" I can do --selector istio.io/rev==,
but there is no way to --selector a missing label.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#22274 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAEYGXLKJNFVR3MFM4QT2BTRIALHNANCNFSM4LN72GMQ>
.
|
We need a design for how the Revision is recorded in the The
That method doesn't receive the metadata of the ConfigMap, so we need to store the The obvious place to put it is in the MeshConfig. To do that, we need to modify api/mesh/v1alpha1/proxy.proto. We could also put this information into the .data.values or .data.config of the injector. |
Moving to 1.7. 1.6 has support for explicit |
If argument is specified, get the pod metadata to determine the control plane and its troubleshooting API endpoint. |
We need to be able to find the out-of-cluster control plane, instead of just assuming all control planes are in istio-system istiod pods. Currently the control plane address is passed to the proxy as an argument, that isn’t good enough. |
The initial plan was based on the idea that istioctl could look at the With Central Istiod this will not be possible. We need #24394 to find a pod's control plane. That item has not been triaged yet. |
@costinm @howardjohn I added an A command like |
To clarify, we are talking about identifying which control plane a sidecar is using, including which revision, or perhaps the address of a Central Istiod the sidecar is connected to. We are not talking about identifying which particular instance of Istiod we are connecting to inside the control plane. |
Without #24394 there is no way to determine control plane. The injector adds annotations, but these annotation don't help find XDS endpoint under Central Istiod. |
I don't think this will happen for 1.7. Any objection to targeting 1.8 for this work? |
Testing against 1.8.0
@howardjohn Would it be reasonable for the troubleshooting commands to default the |
It is impossible to accurately derive the discovery address from a pod. If we are okay with potential inaccuracies that could work. |
although it does seem quite dependant on implementation details that are very likely to change in the future |
Which command even needs this? Is it just |
Currently it is My goal is to avoid the user, in a external control plane config, supply the |
Example of where this goes wrong: user builds a custom docker image with
Why does this need istiod access? Isn't it just reading envoy config dump?
If I am right about If the |
@howardjohn You are correct, I should not have said Ignoring the mechanism, do you have an objection to pods having some kind of breadcrumb trail so that tools can find their control plane? Am I asking for the wrong kind of mechanism, or is any mechanism going to be a problem? |
It depends if it needs to be accurate, or you want a best effort. A best effort trail isn't a problem, to get the real value is much harder |
In a dual control plane scenario, the
istioctl
troubleshooting commands should be able to identify the control plane without a new--revision <rev>
argument.The Istio sidecar injector,
istio-sidecar-injector<-revision>
, SHOULD record the revision of the injector within the pod metadata. (Currently it sets MESH_CONFIG to contain the name of the Istiod service, but does set the owning control plane revision). I recommend it add a "istio.io/rev" label.Currently
istioctl
useskubectl exec
to find ALL Pilot pods. istioctl COULD use metadata added by the injector to distinguish between Pilot pods in the same revision as the sidecar. If we go this route, the Pilot deployment should include"istio.io/rev"
(it currently doesn't).Alternately,
istioctl
COULD make an additional API call to get services, to find theistiod<-revision>
service with"istio.io/rev"
label, and then use itsselector
to find the Istiod pods.My preference is for the former, which has one less API call, but I could support either approach.
cc @howardjohn @ostromart
The text was updated successfully, but these errors were encountered: