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

[Umbrella] Support for EKS #1534

Closed
9 of 11 tasks
richardcase opened this issue Feb 7, 2020 · 20 comments
Closed
9 of 11 tasks

[Umbrella] Support for EKS #1534

richardcase opened this issue Feb 7, 2020 · 20 comments
Assignees
Labels
area/provider/eks Issues or PRs related to Amazon EKS provider kind/feature Categorizes issue or PR as related to a new feature. priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete. priority/important-soon Must be staffed and worked on either currently, or very soon, ideally in time for the next release.
Milestone

Comments

@richardcase
Copy link
Member

richardcase commented Feb 7, 2020

/kind feature

Describe the solution you'd like
I'd like to see the ability to create/manage EKS clusters using Cluster API. This is the parent issue for implementing EKS. There are sub tasks and issues listed below for implementation of specific functionality.

Anything else you would like to add:
This comes up quite a bit in discussions with customers around capi. Especially in hybrid on-prem/cloud type environments.

This relates to kubernetes-sigs/cluster-api#980 and also the associated proposal kubernetes-sigs/cluster-api#2045

Tasks:

@k8s-ci-robot k8s-ci-robot added the kind/feature Categorizes issue or PR as related to a new feature. label Feb 7, 2020
@detiber detiber added this to the Next milestone Feb 24, 2020
@detiber
Copy link
Member

detiber commented Feb 24, 2020

/priority important-longterm

@k8s-ci-robot k8s-ci-robot added the priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete. label Feb 24, 2020
@richardcase
Copy link
Member Author

/assign @richardcase

@detiber
Copy link
Member

detiber commented Apr 22, 2020

@richardcase I haven't followed along with the Managed proposal linked overly well, but I would expect that it should be possible to implement a Managed kubernetes provider leveraging a Control Plane provider and a MachinePool provider targeted towards EKS. See kubernetes-sigs/cluster-api-provider-azure#482 and the related discussion there.

@richardcase
Copy link
Member Author

Thanks @detiber - i was was just reading your comments on the PR in the Azure provider. I'll follow the approach you suggest.

Would you suggest that the managed control plan provider code be placed in controlplane\eks (or controlplane\managed) in this repo?

@detiber
Copy link
Member

detiber commented Apr 22, 2020

@richardcase lets do controlplane/eks since it's more aligned with the implementation.

@richardcase
Copy link
Member Author

richardcase commented Apr 23, 2020

@detiber - do you think the eks control plane should reuse the services (for example) or should it have its own specific versions? If we re-use then we would have to use the cluster scope for example and that expects a AWSCluster, which we could create with the control plane controller or we could refactor to work with multiple scopes. Either way i'm adding an eks service.

@detiber
Copy link
Member

detiber commented Apr 23, 2020

@richardcase I think it would make sense to re-use where possible. We should probably consider refactoring common services (on an as needed basis) to remove the need for a scope to better accommodate the reuse

@richardcase
Copy link
Member Author

@detiber - i've started to refactor the ec2 service so that networking side could be reused. Instead of removing the need for a scope i split out the networking into a network service and associated clusternetwork scope......i misread the last part of your comment about removing the need for a scope completely.

Shall i change what i've done to remove the new scope and change ReconcileNetwork to accept aNetworkParams (or something similar) instead? It would only be a minor change.

@rudoi
Copy link
Contributor

rudoi commented May 4, 2020

/cc

@richardcase
Copy link
Member Author

Work is progressing on this:

apiVersion: controlplane.cluster.x-k8s.io/v1alpha3
kind: EksControlPlane
metadata:
  name: capi-managed-test-control-plane
  namespace: default
spec:
  roleArn: arn:aws:iam::12345678:role/aws-service-role/eks.amazonaws.com/AWSServiceRoleForAmazonEKS
  version: v1.15
---
apiVersion: cluster.x-k8s.io/v1alpha3
kind: Cluster
metadata:
  name: capi-managed-test
  namespace: default
spec:
  clusterNetwork:
    pods:
      cidrBlocks:
      - 192.168.0.0/16
  controlPlaneRef:
    apiVersion: controlplane.cluster.x-k8s.io/v1alpha3
    kind: EksControlPlane
    name: capi-managed-test-control-plane
  infrastructureRef:
    apiVersion: infrastructure.cluster.x-k8s.io/v1alpha3
    kind: AWSCluster
    name: capi-managed-test

A couple of questions:

  1. A reference to a infrastructure cluster is required. Should i create AWSManagedCluster or update AWSCluster to have a IsManaged property?
  2. Can the new controllers run under the existing manager or does it have to be a new 'control plane manager' under controlplane/eks? I've started with the later as it was agreed above and is similar to the kubeadm control plane and but it would be simpler to have it part of the existing manager with flags to enable.
  3. If we stick with a separate eks control plane manager which reconciles EksControlPlane should it also reconcile any additional resources like AWSManagedCluster as well or would they be handled by the existing manager?

@detiber - would be good to get your thoughts on the above.

@richardcase
Copy link
Member Author

A new subnet stratety has been implemented, along with nat gateway/eip logic. We should probably rationalise this with the current provider (see #1643 and #1323) to avoid too much divergence.
Work has also started on the actual EKSControlPlane.

@sethp-nr
Copy link
Contributor

Hi @richardcase@dthorsen & myself are taking some time over the next couple of weeks to focus on EKS. I'm curious if you think this work's in a place where we could help with it?

@richardcase
Copy link
Member Author

@sethp-nr - its not quite in a place where collaboration would be easy. I paused work on it these last 2 days whilst i made a change to the default subnetting strategy (something i originally added for this). I also realised that some of the changes i have made are not needed so i need to undo those as there is a better way to handle it. I'll make those changes and let you know.

@sethp-nr
Copy link
Contributor

Cool, no rush here – I'll plan to review #1721 when it's ready, and otherwise let me know if there's anything you think we can do on the CAPA side.

One thing we stumbled into coming from the other direction (looking to join CAPA Machines to an existing EKS cluster) was that since nobody ran kubeadm init, we were missing a few key resources to make that go. Is that something you're already looking at?

@richardcase
Copy link
Member Author

I hadn't got to the machines part yet, so thats interesting. It will be interesting how we handle an unmanaged nodes, managed nodes and also supporting fargate.

@rudoi
Copy link
Contributor

rudoi commented Jul 1, 2020

Wanted to add some tracking details, so I will update this comment as things happen:

@richardcase
Copy link
Member Author

And also:

@richardcase
Copy link
Member Author

@rudoi - i've moved the list of items up into the description

@detiber detiber modified the milestones: Next, v0.5.x Jul 27, 2020
@randomvariable randomvariable added the area/provider/eks Issues or PRs related to Amazon EKS provider label Aug 14, 2020
@randomvariable randomvariable modified the milestones: v0.5.x, v0.6.0 Aug 14, 2020
@randomvariable randomvariable added the priority/important-soon Must be staffed and worked on either currently, or very soon, ideally in time for the next release. label Aug 14, 2020
@randomvariable randomvariable modified the milestones: v0.6.0, v0.6.1 Sep 2, 2020
@randomvariable randomvariable changed the title Support for EKS [Umbrella Issue] Support for EKS Sep 10, 2020
@randomvariable randomvariable changed the title [Umbrella Issue] Support for EKS [Umbrella] Support for EKS Sep 10, 2020
@randomvariable
Copy link
Member

Given we have issues for all of these, and a lot of these are done, going to close this one as it's not useful for milestone tracking.

/close

@k8s-ci-robot
Copy link
Contributor

@randomvariable: Closing this issue.

In response to this:

Given we have issues for all of these, and a lot of these are done, going to close this one as it's not useful for milestone tracking.

/close

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/provider/eks Issues or PRs related to Amazon EKS provider kind/feature Categorizes issue or PR as related to a new feature. priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete. priority/important-soon Must be staffed and worked on either currently, or very soon, ideally in time for the next release.
Projects
None yet
Development

No branches or pull requests

6 participants