-
Notifications
You must be signed in to change notification settings - Fork 1.4k
cert-manager support #12188
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
base: main
Are you sure you want to change the base?
cert-manager support #12188
Conversation
|
@ppatierno @scholzj I'm not ready to open a final PR yet, but would be interested in some initial feedback on how I'm integrating cert-manager. At the moment we have a lot of if/else checks for Strimzi managed vs cert-manager managed. I could put in further abstractions but wanted to see if 1 you thought that was needed or could be done later, and 2 if you are happy with roughly how I've laid things out before adding the abstraction code. The things I'm still working on:
|
51adc9b to
6f41bdb
Compare
c974d46 to
765cbeb
Compare
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.
Is there a way to change this into the regular typed fields as we use for example for listeners etc.? Or do we need to keep this strange shape because type is not required and is not there by default?
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.
I'm not sure, I will investigate
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.
I'm not sure I fully follow the logic of these separate RBAC files. Does it cause errors when cert-manager is not installed? If yes, maybe we should have two full sets of files. If not, maybe it should be merged into the main installation files?
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.
My thought process was that the operator should only have access to do the things it needs. Since this is an optional feature if users don't want to use it they might prefer the operator isn't granted any permissions related to cert-manager. So it was more just allowing for tighter control over what is being granted
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.
I think we have other optional resources all included in the main files (e.g. Routes, OCP Build, Ingress). So I would probably stick with keep it all in one and leave it to the users to remove things should they not want them.
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.
This will likely need to be in common and not be Vert.x based as the UO will need it as well?
I haven't done an in depth review of the code. But some thoughts:
|
Thanks for your review @scholzj. As you've noticed there was an oversight in my outline of what was left, which I discovered on Monday when working on the Clients CA tests, which is I haven't implemented the logic to have cert-manager issue the User certificates 🤦♀️ So that is something I'm working on now. Your suggestions around the abstraction with having a CaProvider makes sense and were along the lines I was thinking, I have been wondering about even having that abstraction added as a separate PR upfront, similar to how I've already raised PRs to refactor the CaReconciler and Ca classes to make the final PR easier to review. One area I wanted to check your thoughts on was the reconcile loop. In all the reconcilers I am currently following the approach of having something like: Are you happy with this approach? The alternative which I had originally was to add the reconciling of the cert-manager Certificate resources within the |
I'm happy for more PRs if that is simple to do for you. I guess the question is how well can you actually define the interface while the cert manager work is still in progress. Sometimes it's simple, sometimes it's not. So I'm happy to leave it up to you and your judgment.
Honestly, this is not one of the things I noticed while going through it. I think this is a bit strange way to do it as it does not encapsulate the logic and leaves it spread across the reconcilers. So when I look at the reconciled, I would definitely say that it should be all in one call, which does different things depending on how the certs are managed. Ideally, I would expect that for example the KafkaReconciler does not need to know what is used for certifciate management. That said, we spent a lot of time to make the CA classes as independent on any Kube details as possible. So, how would that work? If I follow up on the diagram I shared above, maybe the CA classes should be independent on Kubernetes, but the provider should have the Kubernetes logic? E.g. be in a way Not an easy question ... 🤔 |
feebe61 to
32b9a7c
Compare
Signed-off-by: Katherine Stanley <[email protected]>
Signed-off-by: Katherine Stanley <[email protected]>
Signed-off-by: Katherine Stanley <[email protected]>
Signed-off-by: Katherine Stanley <[email protected]>
Signed-off-by: Kate Stanley <[email protected]>
Signed-off-by: Kate Stanley <[email protected]>
Signed-off-by: Kate Stanley <[email protected]>
Signed-off-by: Kate Stanley <[email protected]>
32b9a7c to
dce9b79
Compare
Signed-off-by: Kate Stanley <[email protected]>
dce9b79 to
797f5b0
Compare
|
I finally came back to this, sorry to be so late.
|
Type of change
Select the type of your PR
Description
Add support for cert-manager issued certificates
Checklist
Please go through this checklist and make sure all applicable tasks have been done