-
Notifications
You must be signed in to change notification settings - Fork 473
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
TLS: Align APIs with Personas #95
Comments
Yup, a few user stories showing the different possible personas in TLS configuration would be informative. |
User Stories Option 1: As a cluster operator, I need the ability to manage TLS configuration for #71 implements Option 2: As a developer, I need the ability to manage TLS configuration for Option 3: As a cluster operator, I need the ability to manage TLS configuration for the Currently, service-apis allows the cluster operator persona to manage TLS configuration for a |
It might be useful to write out an alternative way of looking at option 3 as:
The distinction is entirely dependent on user role and purpose of cluster - cluster authors often start with 1, then move to 2, but there will always be a dynamic tension between them. There's a third use case that is implicit in the above but not fully called out:
|
TLS is a property of an application. That is, TLS policy is per- hosted domain. A public website "www.example.com" has a different TLS policy from an internal website "www.internal.example.com", has a different TLS policy from an API endpoint "foo.api.example.com". TLS is a concern of a cluster operator. That is, an operator has security policies and business concerns that affect which finds of TLS policies are allowed. This could range from allowed TLS versions to CA bundles, allowed cipher suites, etc. An operator can also provide services to automatically provision TLS (by some criteria). It seems to me that we are still in the process of unpicking the entanglement of roles and thinking things through. For example:
In this option, are the cluster operator and the developer doing the same kind of management? I don't think we have enough information to be sure. Based on my assertions above, both personas have some interest in this scenario, but there's a number of different ways you could assign responsibility in different scenarios. |
I think it's important to remember that @danehans' option 1 definitely has a demand in the end-user community - it's why we built HTTPProxy for Contour the way we did. I've written up #102 and #103 covering the option 1 and option 2 ends of the "Who manages the TLS" spectrum. I think that, as @jpeach mentioned in another discussion, there are a few decisions tied together when we talk about "TLS":
If so:
If not:
I think that the questions that are underneath all of this are: What's the difference between a Gateway and a Route? |
@jpeach in option 3, the Cluster Operator is responsible for managing how an app (i.e.
|
I'm not sure if I quite understood what you meant, @danehans, but here's what I understood:
I'm not sure if I agree or not, I need to think more about it, just want to check I've understood correctly. I don't think that a separate CRD for TLSConfig is an answer here. There are definitely already complaints (which I think are fair) that we are replacing one object with three, let's not make it worse. I do think that a common type for TLSConfig might be useful, however. That type can then be used in the CRD document (which is what the user sees). |
Yes, you understand it correctly. Simply put, 1) a Gateway should control TLS termination and 2) if the TLS connection is terminated at the I agree with your perspective about adding a new resource for TLS config. Every time I consider the idea, I tell myself the same thing. On the other hand, it's something we should consider if it provides the necessary flexibility for managing the TLS config variations. |
Issues go stale after 90d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
Stale issues rot after 30d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
/remove-lifecycle rotten |
I've written up a proposal to support TLS feature requests that we have seen so far: https://docs.google.com/document/d/15fkzMrhN_7tA-i2mHKwZpqcjN1o2Pe9Am9Qt828x1lo/edit. Your feedback is welcome and greatly appreciated! |
I have another point that was not discussed here, but should be. As cluster operator I want to set a tls default configuration for gateways. We normally set the strongest as default and let developers weaken in case it’s required for their application for whatever reason. I think the problem I see is that the split between between gateway and route makes these kind of patterns almost impossible. |
For some sites, many of these cases can be implemented by admission controllers such as Gatekeeper. There are some policy mechanisms in the API, but it's not going to be able to capture all the policy needs. |
For me default would be a flag to a controller that can be overridden by configuration. We use this pattern in all our controllers successfully since years. Especially in kube-ingress-aws-controller that creates cloud load balancers this pattern is used for all possible configurations. |
I'm going to go ahead and close this issue as it has served the original purpose. /close |
@hbagdi: Closing this issue. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
What would you like to be added:
Docs that specify what persona or personas are responsible for TLS configuration.
Why is this needed:
This is needed to add TLS support to service-api's. Currently, all TLS config is associated to a gateway listener. Gateways will need to perform different actions for TLS connections, i.e. terminate the client-side connection and create a new tls connection to a backend service. Whether per route tls configuration is added to
Gateway
orxRoute
should be dictated by the persona responsible for managing route-specific tls configurations./assign @bowei
/cc @ironcladlou @Miciah @jpeach
PR xref: #71 #81
Issue xref: #94 #90 #49
The text was updated successfully, but these errors were encountered: