Installation on AWS

    We can use https://eksctl.io which is the AWS supported way of setting up a K8's cluster (EKS).

    1. Get your credentials

    export AWS_ACCESS_KEY_ID=...
    export AWS_SECRET_ACCESS_KEY=...
    

    2. Setup your EKS install config

    Copy the below (changing it as necessary) into a file called cluster.yaml. You'll need to set the {ACCOUNT_ID} to your account.

    apiVersion: eksctl.io/v1alpha5
    kind: ClusterConfig
    metadata:
      name: bionic-gpt
      region: us-east-2
    managedNodeGroups:
    - name: bionic-gpt
      instanceType: t2.large
      minSize: 2
      maxSize: 4
      spot: true
    iam:
      withOIDC: true
      serviceAccounts:
      - metadata:
          name: ebs-csi-controller-sa
          namespace: kube-system
        attachPolicyARNs:
        - "arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy"
        wellKnownPolicies:
          ebsCSIController: true
        roleName: eksctl-cluster-ebs-role
        roleOnly: true
    addons:
    - name: aws-ebs-csi-driver
      serviceAccountRoleARN: "arn:aws:iam::{ACCOUNT_ID}:role/eksctl-cluster-ebs-role"
    

    Dry Run eksctl

    First a dry run

    eksctl create cluster --dry-run -f cluster.yaml
    

    You should see something like

    accessConfig:
      authenticationMode: API_AND_CONFIG_MAP
    apiVersion: eksctl.io/v1alpha5
    availabilityZones:
    - us-east-2a
    - us-east-2b
    - us-east-2c
     ....
     ....
    

    Now Create the Cluster

    Run the command without the --dry-run.

    eksctl create cluster -f cluster.yaml
    

    And wait....

    And wait....

    Finally after 20 minutes or more you'll hopefully have an EKS cluster.

    Accessing the Kubeconfig file

    The below will export the kubeconfig to your home directory.

    eksctl utils write-kubeconfig --cluster bionic-gpt --region us-east-2
    

    You can then

    kubectl get nodes
    

    Follow the "Install Bionic" guide to continue the installation.