karpenter icon indicating copy to clipboard operation
karpenter copied to clipboard

Discussion: Extending Cloud Providers

Open jonathan-innis opened this issue 2 years ago • 18 comments

Tell us about your request

There's a growing number of requests to extend the cloud providers that Karpenter supports from AWS to other cloud providers (Azure, GCP, Orcale, etc.). This issue is intended to cover the discussion of extending the number of cloud providers broadly.

Additional Context

Related Issues

aws/karpenter#2507 aws/karpenter#936

Tracking Tasks

  • [ ] #754

Attachments

No response

Community Note

  • Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue or have submitted a pull request, please leave a comment

jonathan-innis avatar Sep 19 '22 21:09 jonathan-innis

I'd like to explore two models for this: 1: Karpenter as a Library (as currently implemented here: https://github.com/bwagner5/karpenter-k3d) 2: Karpenter as an API: https://github.com/kubernetes-csi

A few table stakes in my mind:

  1. Vendors should be able to define their own API surface (e.g. AWSNodeTemplate) that's separately versioned
  2. Vendor code should live in a separate repository from Karpenter core (k8s is doing this across the board w/ in-tree / out-of-tree)

ellistarn avatar Sep 20 '22 14:09 ellistarn

Happy to work on this. Let me know how we can collaborate.

debugger24 avatar Feb 25 '23 06:02 debugger24

@debugger24 Are you interested in helping/building a particular provider? GCP? Oracle? Digital Ocean?

jonathan-innis avatar Feb 27 '23 17:02 jonathan-innis

I'd like to help with the Oracle portions of this in whatever capacity I can. If I read @ellistarn correctly, I'm okay to create a separate repo like @bwagner5 did. I haven't been able to find an equivalent open-source project on the 'net, so hopefully I'm not re-inventing a wheel. If I don't see anything in this thread in a day or so, I'll follow Brandon's example and put what little I have in a repo and share it here.

tonymarkel avatar Mar 01 '23 16:03 tonymarkel

Nope! @tonymarkel. Feel free to take a stab at the Oracle cloudprovider and share the repo in this issue!

jonathan-innis avatar Mar 01 '23 18:03 jonathan-innis

The best example you'll find is to look at aws/karpenter as the aws implementation. You'll need your provider to rely on aws/karpenter-core.

ellistarn avatar Mar 02 '23 00:03 ellistarn

Should we label this with neutrality?

sftim avatar Jun 05 '23 17:06 sftim

seems that if we want to make a cloud provider, we cannot reuse the existing repo as it is tied to AWS implementation, we need to use karpenter-core to create our own karpenter ....

many implementation is not interfaced like

  • https://github.com/aws/karpenter/tree/main/pkg/providers/instance
  • https://github.com/aws/karpenter/tree/main/pkg/providers/instancetype

Anhui-tqhuang avatar Aug 24 '23 08:08 Anhui-tqhuang

For an example of another provider implementation, check out: https://github.com/Azure/karpenter

ellistarn avatar Nov 07 '23 21:11 ellistarn

For an example of another provider implementation, check out: https://github.com/Azure/karpenter

Note the source attribution section:

https://github.com/Azure/karpenter#source-attribution

Which is to say: for folks looking to rapidly prototype a new provider the AKS provider above is proof that you can just take the existing AWS bits and replace the relevant AWS-specific stuff with your own stuff.

cc @Anhui-tqhuang

There are valid points about how we can improve the portability of the various provider interfaces, but it shouldn't be a blocker per se for folks who are eager to build now.

jackfrancis avatar Nov 07 '23 22:11 jackfrancis

Looking over this issue: I'm realizing that what this issue really is is a discussion issue around a bunch of things, providing a common space for any cloud providers that want to implement a Karpenter cloud provider to come to have an active discussion about how to do it.

There's no true exit criteria for this issue, so I'm changing this to be prefixed with "Discussion:"

jonathan-innis avatar Dec 19 '23 19:12 jonathan-innis

We can get this converted to a GitHub Discussion if you like, @jonathan-innis.

sftim avatar Dec 19 '23 20:12 sftim

We can get this converted to a GitHub Discussion

@sftim My one reservation about converting this to a discussion is routing. Do we have a good feeling which issues will get routed as discussions and which ones will just be bare-bones issues. I worry if we start having separate discussions for some one-off issues over in the Discussions tab in Github that we are going to lose people who are used to going to the issues section.

I also don't want this to be the only issue that ends up converting into a Discussion. Realistically, I see a lot of "discussion-y" issues that probably still make sense classified as issues so I wonder if we just keep this as-is for now.

Happy to hear any additional insight that you might have here.

jonathan-innis avatar Dec 26 '23 02:12 jonathan-innis

Another Datapoint this thread might be interested in: https://github.com/kubernetes/autoscaler/issues/5394#issuecomment-1485331666

Bryce-Soghigian avatar Jan 29 '24 07:01 Bryce-Soghigian

The Kubernetes project currently lacks enough contributors to adequately respond to all issues.

This bot triages un-triaged issues according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the issue is closed

You can:

  • Mark this issue as fresh with /remove-lifecycle stale
  • Close this issue with /close
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/lifecycle stale

k8s-triage-robot avatar Apr 28 '24 08:04 k8s-triage-robot

/remove-lifecycle stale

trungdlp-wolffun avatar Apr 28 '24 09:04 trungdlp-wolffun

I would argue that the outcome of this ticket is documentation that implements a dummy provider with docker containers or something simple. 😆

till avatar Apr 28 '24 09:04 till

There is a simple cloud provider at https://github.com/kubernetes-sigs/karpenter/tree/main/kwok that uses KWOK

tzneal avatar Apr 29 '24 13:04 tzneal

The Kubernetes project currently lacks enough contributors to adequately respond to all issues.

This bot triages un-triaged issues according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the issue is closed

You can:

  • Mark this issue as fresh with /remove-lifecycle stale
  • Close this issue with /close
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/lifecycle stale

k8s-triage-robot avatar Aug 22 '24 15:08 k8s-triage-robot

/remove-lifecycle stale

On Thu, Aug 22, 2024, 5:56 PM Kubernetes Triage Robot < @.***> wrote:

The Kubernetes project currently lacks enough contributors to adequately respond to all issues.

This bot triages un-triaged issues according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the issue is closed

You can:

Please send feedback to sig-contributor-experience at kubernetes/community https://github.com/kubernetes/community.

/lifecycle stale

— Reply to this email directly, view it on GitHub https://github.com/kubernetes-sigs/karpenter/issues/741#issuecomment-2305113515, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABIUWZSHVNSEAJJO26I2ENTZSYCY7AVCNFSM6AAAAAA62KU3H2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMBVGEYTGNJRGU . You are receiving this because you are subscribed to this thread.Message ID: @.***>

daper avatar Aug 23 '24 01:08 daper