# Provision

## What Will You Do

In this part, you will provision an Amazon EKS cluster with AWS Fargate profiles.

## Update Cluster Specification
- Open a suitable YAML editor and copy/paste the example EKS cluster specification provided below.
- Save the file as "fargate-demo.yaml" (an example)

**Cluster Spec Explained**

In the example cluster spec provided,

- The name of the EKS cluster will be "fargate-demo" and it is configured to be provisioned in the "defaultproject" in your Org.
- The EKS cluster is configured with one managed node group (i.e. "managed") and two Fargate profiles (i.e. "fp-dev" and "fp-demo")

The following items in the declarative cluster specification will need to be updated/customized for your environment.

- cluster name: "fargate-demo"
- project: "defaultproject"
- cloud credential: "aws-cc"
- region: "us-west-2"
- AWS Tags as required in your AWS account

```
apiVersion: infra.k8smgmt.io/v3
kind: Cluster
metadata:
  name: fargate-demo
  project: defaultproject
spec:
  blueprintConfig:
    name: minimal
    version: latest
  cloudCredentials: aws-cc
  config:
    fargateProfiles:
    - name: fp-dev
      selectors:
      - namespace: dev
    - name: fp-demo
      selectors:
      - labels:
          env: demo
        namespace:
    addons:
    - name: kube-proxy
      version: latest
    - name: vpc-cni
      version: latest
    - name: coredns
      version: latest
    managedNodeGroups:
    - amiFamily: AmazonLinux2
      desiredCapacity: 1
      instanceType: t3.large
      maxSize: 3
      minSize: 1
      name: managed
    metadata:
      name: fargate-demo
      region: us-west-2
      tags:
        email: user@rafay.co
        env: qa
      version: latest
    vpc:
      autoAllocateIPv6: false
      clusterEndpoints:
        privateAccess: true
        publicAccess: false
      cidr: 192.168.0.0/16
  type: aws-eks
```

## Provision EKS Cluster
- Type the command below to provision the EKS cluster

```
rctl apply -f fargate-demo.yaml
```

If there are no errors, you will be presented with a "Task ID" that you can use to check progress/status. Note that this step requires creation of infrastructure in your AWS account and can take ~20-30 minutes to complete.

```
{
  "taskset_id": "lk5opd2",
  "operations": [
    {
      "operation": "NodegroupCreation",
      "resource_name": "managed",
      "status": "PROVISION_TASK_STATUS_PENDING"
    },
    {
      "operation": "ClusterCreation",
      "resource_name": "fargate-demo",
      "status": "PROVISION_TASK_STATUS_PENDING"
    }
  ],
  "comments": "The status of the operations can be fetched using taskset_id",
  "status": "PROVISION_TASKSET_STATUS_PENDING"
}
```

- Navigate to the specified "project" in your Org
- Click on Infrastructure -> Clusters.

The provisioning process can take approximately 30 minutes to fully complete. Once provisioning is complete, you should see a healthy cluster in the project in your Org
