-
Notifications
You must be signed in to change notification settings - Fork 4k
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
doc: proposal custom cloud provider over gRPC #3140
doc: proposal custom cloud provider over gRPC #3140
Conversation
/assign @MaciekPytel |
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 the idea is sound, but this design is missing a lot of details (most importantly all the stuff related to NodeGroups).
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.
overall i think it's a nice idea, i added a few of my nits.
i also agree with @MaciekPytel's comments.
I went through your proposal and had a query:
|
Some more points:
|
We would also need to define the contract between gRPC client and server, basically the messages, error-codes, and so on. Wondering if that should be part of this proposal as well?
|
I think a bit of common sense would help here, golang is the language commonly used in Kubernetes. If users want to code on a different language that would be up to them. Besides of that, this is not a requirement neither a motivation for this proposal.
This external provider could be extended to satisfy that purpose. It should not be considered as the initial requirement in my opinion, (solving a problem at the time). We could iterate over it and leave the design open to expose the processors per provider in the future.
I have to argue about this. The Regarding #3127, I think the development and maintenance cost of moving out all the cloud providers is really high. This proposal tries to add a new external provider without re-designing the whole CA. The impact is minimal and everyone could benefit from it. |
Inline replies:
This external provider could be extended to satisfy that purpose. It should not be considered as the initial requirement in my opinion, (solving a problem at the time). We could iterate over it and leave the design open to expose the processors per provider in the future.
I have to argue about this. The runtime complexity would depend on where this external provider would seat. I believe the purpose is being flexible and dynamic here. gRPC doesn't offer a bit penalty in terms of computation.
|
Does #3127 cover this scenario ?
You are making deployment assumptions that will depend on how and where the grpc server leaves. I suggest you have a look at grafana go plugins.
Honestly, I didn't like your initial approach because was unrealistic and hard to maintain in a longer term. However you just made some changes that might ease this integration, that makes me like it more now. There are many questions to be answered there but there is some progress. |
Inline replies:
Honestly, I didn't like your initial approach because was unrealistic and hard to maintain in a longer term.
|
What is the status of this PR? Did you address the comments? |
@mwielgus I didn't address them yet. I'd try to address them during this week. |
129372e
to
731269c
Compare
@hectorj2f great stuff, keep going! It can resolve a bunch of use cases: #3644 |
731269c
to
469984e
Compare
c82924c
to
ec51d46
Compare
@MaciekPytel @Bessonov @hardikdr @elmiko I finally managed to get some time to invest on this KEP to address the last comments. Let me know if you want me to specify the error codes as well. |
474f987
to
a0f94ff
Compare
Signed-off-by: Hector Fernandez <[email protected]>
Signed-off-by: Hector Fernandez <[email protected]>
0beaa93
to
c4c4de2
Compare
It seems i hit the docker request limit in my travis build, |
Hi @hectorj2f 👋 |
Signed-off-by: Hector Fernandez <[email protected]>
c4c4de2
to
68c9844
Compare
@MaciekPytel I addressed the last minor comments. |
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.
/lgtm
/approve
Left some minor comments, but I don't think those are blocking for merging this.
### Refresh | ||
|
||
Refresh is called before every main loop and can be used to dynamically update cloud provider state. | ||
In particular the list of node groups returned by NodeGroups can change as a result of this action. |
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.
nit: To clarify - results of other calls (such as NodeGroups(), NodeGroup.MinSize(), etc) must not change unless Refresh is called. We should document that explicitly.
int32 minSize = 2; | ||
|
||
// MaxSize of the node group on the cloud provider | ||
int32 maxSize = 3; |
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 if we should actually include min, max and debug. min/max can change (after Refresh() call), while id is the consistent group identifier. For something like NodeGroupForNode it seems more consistent to return permanent id and not some settings that can change later on.
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: elmiko, hectorj2f, Kafei59, MaciekPytel The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
One more comment - in the meantime #3789 extended the cloudprovider API with another optional call. It should trivially convert into grpc (struct with a field for each option in NodeGroupAutoscalingOptions) or alternatively it can be skipped in initial version. |
@MaciekPytel Good. I'll update the proposal to include that new api call, and address the minor comments. |
Hi all, is there any work being done to implement this provider? If not, would a PR be welcomed? |
Hi @migueleliasweb, |
As discussed over Slack with @MaciekPytel, I share a proposal to make CA more plugable and allow calling custom cloud providers without having to fork the CA.