Giter VIP home page Giter VIP logo

kubernetes-sigs / cluster-api-provider-aws Goto Github PK

View Code? Open in Web Editor NEW
627.0 37.0 548.0 84.17 MB

Kubernetes Cluster API Provider AWS provides consistent deployment and day 2 operations of "self-managed" and EKS Kubernetes clusters on AWS.

Home Page: http://cluster-api-aws.sigs.k8s.io/

License: Apache License 2.0

Makefile 0.93% Go 97.49% Shell 1.12% Python 0.33% Dockerfile 0.08% Starlark 0.03% Smarty 0.01%
k8s-sig-cluster-lifecycle cluster-api kubernetes-cluster

cluster-api-provider-aws's Introduction

Kubernetes Cluster API Provider AWS

Powered by AWS Cloud Computing


Kubernetes-native declarative infrastructure for AWS.

What is the Cluster API Provider AWS

The Cluster API brings declarative, Kubernetes-style APIs to cluster creation, configuration and management.

The API itself is shared across multiple cloud providers allowing for true AWS hybrid deployments of Kubernetes. It is built atop the lessons learned from previous cluster managers such as kops and kubicorn.

Documentation

Please see our book for in-depth documentation.

Launching a Kubernetes cluster on AWS

Check out the Cluster API Quick Start for launching a cluster on AWS.

Features

  • Native Kubernetes manifests and API
  • Manages the bootstrapping of VPCs, gateways, security groups and instances.
  • Choice of Linux distribution among Amazon Linux 2, CentOS 7, Ubuntu(18.04, 20.04) and Flatcar using pre-baked AMIs.
  • Deploys Kubernetes control planes into private subnets with a separate bastion server.
  • Doesn't use SSH for bootstrapping nodes.
  • Installs only the minimal components to bootstrap a control plane and workers.
  • Supports control planes on EC2 instances.
  • EKS support

Compatibility with Cluster API and Kubernetes Versions

This provider's versions are compatible with the following versions of Cluster API and support all Kubernetes versions that is supported by its compatible Cluster API version:

Cluster API v1alpha4 (v0.4) Cluster API v1beta1 (v1.x)
CAPA v1alpha4 (v0.7)
CAPA v1beta1 (v1.x)
CAPA v1beta2 (v2.x, main)

(See Kubernetes support matrix of Cluster API versions).


Kubernetes versions with published AMIs

See amis for the list of most recently published AMIs.


clusterawsadm

clusterawsadm CLI tool provides bootstrapping, AMI, EKS, and controller related helpers.

clusterawsadm binaries are released with each release, can be found under assets section.

clusterawsadm could also be installed via Homebrew on macOS and linux OS. Install the latest release using homebrew:

brew install clusterawsadm

Test to ensure the version you installed is up-to-date:

clusterawsadm version

Getting involved and contributing

Are you interested in contributing to cluster-api-provider-aws? We, the maintainers and community, would love your suggestions, contributions, and help! Also, the maintainers can be contacted at any time to learn more about how to get involved.

In the interest of getting more new people involved we tag issues with good first issue. These are typically issues that have smaller scope but are good ways to start to get acquainted with the codebase.

We also encourage ALL active community participants to act as if they are maintainers, even if you don't have "official" write permissions. This is a community effort, we are here to serve the Kubernetes community. If you have an active interest and you want to get involved, you have real power! Don't assume that the only people who can get things done around here are the "maintainers".

We also would love to add more "official" maintainers, so show us what you can do!

This repository uses the Kubernetes bots. See a full list of the commands here.

Build the images locally

If you want to just build the CAPA containers locally, run

  REGISTRY=docker.io/my-reg make docker-build

Tilt-based development environment

See development section for details.

Implementer office hours

Maintainers hold office hours every two weeks, with sessions open to all developers working on this project.

Office hours are hosted on a zoom video chat every other Monday at 09:00 (Pacific) / 12:00 (Eastern) / 17:00 (Europe/London), and are published on the Kubernetes community meetings calendar.

Other ways to communicate with the contributors

Please check in with us in the #cluster-api-aws channel on Slack.

Github issues

Bugs

If you think you have found a bug please follow the instructions below.

  • Please spend a small amount of time giving due diligence to the issue tracker. Your issue might be a duplicate.
  • Get the logs from the cluster controllers. Please paste this into your issue.
  • Open a new issue.
  • Remember that users might be searching for your issue in the future, so please give it a meaningful title to help others.
  • Feel free to reach out to the cluster-api community on the kubernetes slack.

Tracking new features

We also use the issue tracker to track features. If you have an idea for a feature, or think you can help kops become even more awesome follow the steps below.

  • Open a new issue.
  • Remember that users might be searching for your issue in the future, so please give it a meaningful title to help others.
  • Clearly define the use case, using concrete examples. EG: I type this and cluster-api-provider-aws does that.
  • Some of our larger features will require some design. If you would like to include a technical design for your feature please include it in the issue.
  • After the new feature is well understood, and the design agreed upon, we can start coding the feature. We would love for you to code it. So please open up a WIP (work in progress) pull request, and happy coding.

“Amazon Web Services, AWS, and the “Powered by AWS” logo materials are trademarks of Amazon.com, Inc. or its affiliates in the United States and/or other countries."

Our Contributors

Thank you to all contributors and a special thanks to our current maintainers & reviewers:

Maintainers Reviewers
@richardcase (from 2020-12-04) @cnmcavoy (from 2023-10-16)
@Ankitasw (from 2022-10-19) @AverageMarcus (from 2022-10-19)
@dlipovetsky (from 2021-10-31) @luthermonson (from 2023-03-08)
@vincepri (og & from 2023-10-16) @faiq (from 2023-10-16)
@nrb (from 2024-05-24) @fiunchinho (from 2023-11-6)
@AndiDog (from 2023-12-13)
@damdo (from 2023-03-01)

and the previous/emeritus maintainers & reviewers:

Emeritus Maintainers Emeritus Reviewers
@chuckha @ashish-amarnath
@detiber @davidewatson
@ncdc @enxebre
@randomvariable @ingvagabund
@rudoi @michaelbeaumont
@sedefsavas @sethp-nr
@Skarlso @shivi28
@dthorsen
@pydctw

All the CAPA contributors:

cluster-api-provider-aws's People

Contributors

aaroniscode avatar andidog avatar ankitasw avatar ashish-amarnath avatar chuckha avatar cnmcavoy avatar dependabot[bot] avatar detiber avatar dlipovetsky avatar faiq avatar invidian avatar k8s-ci-robot avatar liztio avatar luthermonson avatar marcusnoble avatar michaelbeaumont avatar mtulio avatar muraee avatar ncdc avatar r4f4 avatar randomvariable avatar richardcase avatar richardchen331 avatar sedefsavas avatar sethp-nr avatar shivi28 avatar skarlso avatar tahsinrahman avatar vincepri avatar wyike avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cluster-api-provider-aws's Issues

[cluster actuator] Reconcile Internet Gateway

The MVP requires that the VPC created be configured with an Internet Gateway.

Outstanding question: Should this step be skipped if the user provides an existing VPC through the ProviderConfig?

[cluster actuator] Reconcile bastion security group

If the cluster actuator is managing the public bastion environment, then it should create a security group for the bastion host. The actuator should not create the security group if a user defines a pre-existing bastion environment through config.

/kind feature
/priority important-soon

UMBRELLA: Add common aws code.

Common utilities and wrappers can be incorporated now and doesn't need to wait on some of the design fronts.

We can distill and crib from kubicorn/prototypes/kops etc.

/assign @chuckha

Subtickets:

[cluster actuator] reconcile public subnet

The MVP requires a public subnet for hosting a bastion host. This subnet should only be created if the user does not provide configuration to suggest that a public subnet already exists. What exactly that configuration looks like is TBD.

[aws] Test framework and implementation for AWS.

In order to avoid having to manually build out fake interfaces for all AWS APIs we are interacting with we should look into leveraging some auto-generation or automation.

We can potentially leverage existing work from KOPS or openshift/cluster-operator here.

cc @csrwng
/kind feature
/priority important-soon

[cluster actuator] Reconcile bastion host

The cluster actuator should create and manage a bastion host if it is managing the bastion environment. The actuator should not create the bastion host if the user-provided config indicates that an existing bastion environment should be used.

/kind feature
/priority important-soon

[cluster actuator] Delete Internet Gateway

The MVP requires that the cluster actuator be able to delete a managed Internet Gateway.

This should not delete an Internet Gateway that is attached to non-cluster actuator managed VPC.

[cluster actuator] Reconcile apiserver Load Balancer

The cluster actuator should create and manage a load balancer for the apiserver if a user does not provide an existing load balancer.

The load balancer should be a classic ELB configured for tcp-passthrough.

Outstanding question: Should the cluster actuator or the machine actuator update membership for this load balancer?

Depends on: #37

/kind feature
/priority important-soon

UMBRELLA:Cluster Actuator

type Actuator interface {
	// Create or update the cluster
	Reconcile(*clusterv1.Cluster) error
	// Delete the cluster.
	Delete(*clusterv1.Cluster) error
}
  • Reconcile
    • #38 Reconcile VPC
    • #40 Reconcile Internet Gateway
    • Reconcile Public facing resources
      • #42 Reconcile public subnet
      • #44 Reconcile routes for public subnet
      • #45 Reconcile bastion security group
      • #46 Reconcile bastion host
    • Reconcile Private resources
      • #47 Reconcile private subnet(s)
      • #48 Reconcile routes for private subnet(s)
      • #49 Reconcile NAT Gateway
      • #50 Reconcile control plane node security group
      • #51 Reconcile worker node security group
    • #52 Reconcile Load Balancer
  • Delete
    • #39 Delete VPC
    • #41 Delete Internet Gateway
    • Delete Public facing resources
      • #43 Delete public subnet
      • #56 Delete routes for public subnet
      • #57 Delete bastion security group
      • #58 Delete bastion host
    • Delete Private resources
      • #59 Delete private subnet(s)
      • #60 Delete routes for private subnet(s)
      • #61 Delete NAT Gateway
      • #62 Delete control plane node security group
      • #63 Delete worker node security group
    • #64 Delete Load Balancer
  • #15 Define the Security Groups needed

[cluster actuator] Reconcile routes for public subnet

If the cluster actuator is managing a public subnet it should created the needed routes. The actuator should not manage routes if a user is specifying an existing public subnet should be used through config.

Depends on #42
/kind feature
/priority important-soon

[cluster actuator] Reconcile private subnet[s]

The cluster actuator should be able to create and manage private subnet(s) if the config does not indicate that the user is providing a pre-existing subnet(s).

The MVP only requires a single subnet, but there are future plans to support multi-AZ deployments, so the implementation should take that into account, such as ensuring that the subnet does not use the full cidr range of the VPC.

/kind feature
/priority important-soon

[cluster actuator] Reconcile VPC

The MVP requires that the cluster actuator be able to idempotently manage a VPC.

  • Attempting to update the VPC after creation should probably result in an error
  • The actuator should also be able to use an existing VPC defined in the Provider Config.

[cluster actuator] Delete VPC

The cluster actuator should be able to delete a VPC that was created by the actuator. It should not delete a VPC that was defined by the user in the ProviderConfig.

Rally on a spec.

The goal of this effort is to produce a spec to rally on with interested parties, then break down the work items in this repo.

I'd suggest PR-ing a KEP to this repo that we can agree on.

UMBRELLA: Machine Actuator

type Actuator interface {
	// Create the machine.
	Create(*clusterv1.Cluster, *clusterv1.Machine) error
	// Delete the machine. If no error is returned, it is assumed that all dependent resources have been cleaned up.
	Delete(*clusterv1.Cluster, *clusterv1.Machine) error
	// Update the machine to the provided definition.
	Update(*clusterv1.Cluster, *clusterv1.Machine) error
	// Checks if the machine currently exists.
	Exists(*clusterv1.Cluster, *clusterv1.Machine) (bool, error)
}
  • #31 Create
  • #32 Delete
  • #33 Update
  • #34 Exists
  • #427 kubeadm config support in provider config
  • #16 cloud-init module

[aws] Add ELB management

The MVP requires the ability to idempotently manage a Classic ELB configured for TCP-passthrough to support load balancing of the API server.

[cluster actuator] Reconcile routes for private subnet(s)

The cluster actuator should create and manage route configuration for actuator-managed private subnets. It should not create routes for user-provided pre-existing private subnets that are provided through the ProviderConfig.

Depends on: #47, #38, #30

/kind feature
/priority important-soon

[cluster actuator] Reconcile NAT Gateway

The cluster actuator should create and manage NAT gateway configuration for actuator-managed private subnets. It should not create a NAT gateway for user-provided pre-existing private subnets that are provided through the ProviderConfig.

Depends on: #47, #38, #35

/kind feature
/priority important-soon

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.