-
Notifications
You must be signed in to change notification settings - Fork 212
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
update protocol detection doc #1848
Conversation
- Add NATS to the list of protocols that need opaque ports (not sure how this was dropped) - Instruct that the resource should always be set on the Service object. Signed-off-by: William Morgan <[email protected]>
Signed-off-by: William Morgan <[email protected]>
Signed-off-by: William Morgan <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🌮 lovely work @wmorgan, thank you! i left some minor notes and suggestions, but broadly, i'm very happy to see these docs gain some additional clarity.
Co-authored-by: katelyn martin <[email protected]>
Co-authored-by: katelyn martin <[email protected]>
Co-authored-by: katelyn martin <[email protected]>
1. In an [authorization policy](../server-policy/) `Server` object's | ||
`proxyProtocol` field, in which case it will apply to all pods targeted by that | ||
`Server`. | ||
This annotation *must* be set in two places: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Whoa, this is a big semantic change! Is this really true?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, when clients discover policies for a service clusterIP and port, we need to be able to know opaqueness at the service level. If the service is a headless, the service-level annotation will be ignored (because discovery cannot be for the clusterIP), but the general advice to annotate services is correct.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Specifically, the old version of this doc says that you can set config.linkerd.io/opaque-ports
on either the Service or the destination pods/namespace, but this version says that you must set it in both places. That's the semantic change I'm asking about.
It makes a lot of sense to me that there are cases that you'd want to annotate the Service; it's very surprising to me if we're changing to saying that you must annotate both the Service and the destination pods/namespace.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is also required to configure the workloads (via Server or annotation) to control inbound behavior when clients are unmeshed or do not target a clusterIP service.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Basically there are situations where one or the other suffice, and thus the "must" is not strictly necessary. But rather than describing the nuances of those situations I opted to just say, you must set it in both places. If you think that's overkill I'm not committed to the choice, so feel free to suggest other language and we can iterate.
In the interests of simplicity, I kept the guidance around setting the annotation at the Service resource relatively simple.
This content probably needs to be moved into a separate Reference doc. I did not do that in this doc.