Skip to content
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

Implement Go provider #70

Closed
3 tasks done
joeduffy opened this issue Jun 10, 2018 · 8 comments · Fixed by #1029
Closed
3 tasks done

Implement Go provider #70

joeduffy opened this issue Jun 10, 2018 · 8 comments · Fixed by #1029
Assignees
Labels
area/providers help-wanted We'd love your contributions on this issue kind/enhancement Improvements or new features p1 A bug severe enough to be the next item assigned to an engineer
Projects

Comments

@joeduffy
Copy link
Member

joeduffy commented Jun 10, 2018

We will add Go support to the Kubernetes provider. This includes the following work:

@joeduffy joeduffy added area/providers kind/enhancement Improvements or new features labels Jun 10, 2018
@joeduffy joeduffy added this to the 0.15 milestone Jun 10, 2018
@joeduffy
Copy link
Member Author

I think we agreed to leave this for later.

@joeduffy joeduffy modified the milestones: 0.15, 0.16 Jun 11, 2018
@hausdorff
Copy link
Contributor

Moving (tentatively) to M17, as (1) we don't have a customer asking for this, and (2) now that the Helm support has landed in TS/JS mainline pulumi-kubernetes, adding Python support at least merits considering including Helm support, which would increase the amount of work to do by a fair amount.

@hausdorff hausdorff modified the milestones: 0.16, 0.17 Jul 30, 2018
@hausdorff
Copy link
Contributor

Not prioritized for 0.17. Moving to 0.18.

@hausdorff hausdorff modified the milestones: 0.17, 0.18 Aug 22, 2018
@lukehoban lukehoban modified the milestones: 0.18, 0.19 Sep 21, 2018
@hausdorff hausdorff modified the milestones: 0.19, 0.20 Oct 22, 2018
@joeduffy joeduffy modified the milestones: 0.20, 0.22 Oct 30, 2018
@hausdorff hausdorff added kind/feature and removed kind/enhancement Improvements or new features labels Dec 18, 2018
@hausdorff hausdorff removed this from the 0.22 milestone Dec 18, 2018
@hausdorff hausdorff added the help-wanted We'd love your contributions on this issue label Dec 18, 2018
@naveensrinivasan
Copy link

Any update on this?

@hausdorff
Copy link
Contributor

@naveensrinivasan It's definitely on the horizon, but it's not clear how we're going to provide a really good experience for Kubernetes specifically, at least before Go 2 -- the deeply-nested nature of the API means there ends up being a lot of interface{}. Hence, we've marked it as "help wanted".

My personal view is that it's better to wait until we can provide a good experience, than to provide a not-very-good one that technically works. :) Could be wrong that it's not-very-good, etc., happy to hear different views on this.

cc @swgillespie @joeduffy @lukehoban @lblackstone

@Place1
Copy link

Place1 commented Feb 10, 2019

@hausdorff i'm not familiar with pulumi's source so forgive me if this is a silly comment, but why would k8s deeply nested API require the use of interface{}. Here's an example of a typed struct for a Deployment from client-go, you can click all the way through it and there's no usage of interface{}. What am i missing?

@hausdorff
Copy link
Contributor

@Place1 Think about stuff like Service's .spec.clusterIP. The value of this property is computed by the API server. To reflect this, in other languages, we make the type Output<T>. Semantically this is much like a Promise<T> -- indicating that the values may be filled in later. In Go, this is interface{}.

In some sense this is the Pulumi object model. Output<T> allows us to keep track of which resources depend on other resources (e.g., our Deployment depends on the EKS cluster).

In the case of Kubernetes specifically, the deeply-nested nature of the Kubernetes makes interface{} very cumbersome to deal with. This is in contrast to, say, the AWS resource model, which is "shallow".

@lukehoban lukehoban assigned lblackstone and unassigned hausdorff Nov 27, 2019
@EvanBoyle EvanBoyle added this to Untracked in Go Jan 27, 2020
@EvanBoyle EvanBoyle moved this from Untracked to M32 in Go Jan 28, 2020
@lukehoban lukehoban added this to the 0.32 milestone Feb 16, 2020
@lukehoban
Copy link
Member

We expect to implement this on top of the new schema-based code generators in pulumi/pulumi. There is some work in progress on that in https://github.com/pulumi/pulumi-kubernetes/commits/pgavlin/schema.

@lukehoban lukehoban moved this from M32 to In progress in Go Feb 26, 2020
@leezen leezen modified the milestones: 0.32, 0.33 Mar 9, 2020
@lblackstone lblackstone reopened this Mar 21, 2020
@lblackstone lblackstone modified the milestones: 0.33, 0.34 Mar 30, 2020
@leezen leezen moved this from In progress to Post GA in Go Apr 2, 2020
@leezen leezen removed this from the 0.34 milestone Apr 6, 2020
@infin8x infin8x added p1 A bug severe enough to be the next item assigned to an engineer kind/enhancement Improvements or new features labels Jul 10, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/providers help-wanted We'd love your contributions on this issue kind/enhancement Improvements or new features p1 A bug severe enough to be the next item assigned to an engineer
Projects
No open projects
Go
Post GA
Development

Successfully merging a pull request may close this issue.

8 participants