sigs.k8s.io/cluster-api-provider-aws@v1.5.5/docs/proposal/20180827-mvp-architecture.md (about)

     1  # AWS Provider MVP
     2  
     3  This is a proposal for possible MVP candidates for cluster-api-provider-aws. Features referenced are from the [Features Document](features.md).
     4  
     5  ## Table of Contents
     6  
     7  A table of contents is helpful for quickly jumping to sections of a KEP and for highlighting any additional information provided beyond the standard KEP template.
     8  [Tools for generating][] a table of contents from markdown are available.
     9  
    10  - [AWS Provider MVP](#aws-provider-mvp)
    11    - [Table of Contents](#table-of-contents)
    12    - [Summary](#summary)
    13    - [Motivation](#motivation)
    14      - [Goals](#goals)
    15      - [Non-Goals](#non-goals)
    16    - [Proposal](#proposal)
    17      - [Implementation Details/Notes/Constraints](#implementation-detailsnotesconstraints)
    18        - [Features Implemented for Private Networking, Single AZ](#features-implemented-for-private-networking-single-az)
    19        - [Filling in Gaps from Feature List](#filling-in-gaps-from-feature-list)
    20    - [Alternatives](#alternatives)
    21      - [Public Networking, Single AZ](#public-networking-single-az)
    22        - [Features Implemented for Public Networking, Single AZ](#features-implemented-for-public-networking-single-az)
    23  
    24  ## Summary
    25  
    26  In order to limit scope of the project and to be able to deliver an MVP implementation of the AWS Provider for the Cluster API, this proposal presents an infrastructure architecture to target for the initial release of the AWS Provider.
    27  
    28  ## Motivation
    29  
    30  ### Goals
    31  
    32  - An MVP implementation for cluster-api-provider-aws
    33  - kubeadm-driven installation
    34  
    35  ### Non-Goals
    36  
    37  - Cluster-api potential impedance mismatches:
    38    - EKS-based deployments (25)
    39    - Auto Scaling Groups (20)
    40  - Separate control of public/private network selection between control plane and workers.
    41  - Multi-AZ-based deployments (9, 14)
    42  - Instance Creation
    43    - placement groups (15)
    44    - Dedicated Tenancy (17)
    45    - Spot Instances
    46  - Accessibility
    47    - Private API Server Access (23)
    48    - VPC PrivateLink (31)
    49  - Default to pre-baked images and leveraging kubeadm for deployment
    50    - Custom CRI configuration (33, 34)
    51    - Custom kubelet configuration (39)
    52    - [Red Hat] Arbitrary bootstrap script support (40)
    53    - Custom API Server configuration (41, 42)
    54  - Deploying etcd to dedicated hosts (47, 48)
    55  
    56  ## Proposal
    57  
    58  ### Implementation Details/Notes/Constraints
    59  
    60  Private Networking, Single AZ
    61  
    62  ![Private Networking, Single AZ](20180827-mvp-architecture-private.png)
    63  
    64  #### Features Implemented for Private Networking, Single AZ
    65  
    66  - VPC: 1, 2, 3
    67  - Control Plane Placement: 5, 7, 8
    68  - Worker Node Placement: 10, 12, 13, 16
    69  - Worker Node Scaling: 18, 19
    70  - API Server Access: 21, 22, 43
    71  - Type of Control Plane: 24, 26
    72  - CRI: None
    73  - Container Hosts: 36, 37, 38
    74  - API Server Configuration: None
    75  - etcd location: 45, 46
    76  
    77  #### Filling in Gaps from Feature List
    78  
    79  - Require predefined IAM Roles/Instance Profiles
    80  - Security Groups created on demand or use predefined
    81  - Bootstrapping
    82    - Pre-baked images containing binaries required as input
    83    - Cloud-init driven using kubeadm
    84    - Kubeadm config used to provide customization
    85  
    86  ## Alternatives
    87  
    88  ### Public Networking, Single AZ
    89  
    90  ![Public Networking, Single AZ](20180827-mvp-architecture-public.png)
    91  
    92  #### Features Implemented for Public Networking, Single AZ
    93  
    94  - VPC: 1, 2, 3
    95  - Control Plane Placement: 5, 6, 8
    96  - Worker Node Placement: 10, 11, 13, 16
    97  - Worker Node Scaling: 18, 19
    98  - API Server Access: 21, 22, 43
    99  - Type of Control Plane: 24, 26
   100  - CRI: None
   101  - Container Hosts: 36, 37, 38
   102  - API Server Configuration: None
   103  - etcd location: 45, 46