---
# System prepended metadata

title: Untitled

---

## Create a cluster using cluster API in AWS (CAPA)

In order to create a cluster in an installation using the new cluster API in aws environment you can follow these simple steps:

### Create yaml files

  - Create a template for a yaml file using `kubectl gs template cluster` command. An example of the command would be:
  ```
  kubectl gs template cluster --provider capa --organization YOUR_ORG > cluster.yaml
  ```
  You can check all the available paramaters in the [command reference]({{< relref "/ui-api/kubectl-gs/template-cluster" >}})

  - This command will return several objects that you need to create in your management cluster to create your cluster. You can now edit the file to include your preferred options.
  ``` yaml 
  ---
apiVersion: v1
data:
  values: |
    aws: {}
    bastion: {}
    clusterName: brhf3
    controlPlane:
      replicas: 3
    machinePools:
    - instanceType: m5.xlarge
      maxSize: 10
      minSize: 3
      name: machine-pool0
      rootVolumeSizeGB: 300
    network:
      availabilityZoneUsageLimit: 3
    organization: YOUR_ORG
kind: ConfigMap
metadata:
  creationTimestamp: null
  labels:
    YOUR_ORG.io/cluster: brhf3
  name: brhf3-userconfig
  namespace: org-YOUR_ORG
---
apiVersion: application.YOUR_ORG.io/v1alpha1
kind: App
metadata:
  labels:
    app-operator.YOUR_ORG.io/version: 0.0.0
  name: brhf3
  namespace: org-YOUR_ORG
spec:
  catalog: cluster
  config:
    configMap:
      name: ""
      namespace: ""
    secret:
      name: ""
      namespace: ""
  kubeConfig:
    context:
      name: ""
    inCluster: true
    secret:
      name: ""
      namespace: ""
  name: cluster-aws
  namespace: org-YOUR_ORG
  userConfig:
    configMap:
      name: brhf3-userconfig
      namespace: org-YOUR_ORG
  version: 0.9.2
---
apiVersion: v1
data:
  values: |
    clusterName: brhf3
    organization: YOUR_ORG
kind: ConfigMap
metadata:
  creationTimestamp: null
  labels:
    YOUR_ORG.io/cluster: brhf3
  name: brhf3-default-apps-userconfig
  namespace: org-YOUR_ORG
---
apiVersion: application.YOUR_ORG.io/v1alpha1
kind: App
metadata:
  labels:
    app-operator.YOUR_ORG.io/version: 0.0.0
  name: brhf3-default-apps
  namespace: org-YOUR_ORG
spec:
  catalog: cluster
  config:
    configMap:
      name: ""
      namespace: ""
    secret:
      name: ""
      namespace: ""
  kubeConfig:
    context:
      name: ""
    inCluster: true
    secret:
      name: ""
      namespace: ""
  name: default-apps-aws
  namespace: org-YOUR_ORG
  userConfig:
    configMap:
      name: brhf3-default-apps-userconfig
      namespace: org-YOUR_ORG
  version: 0.5.4

  ``` 

## Creating the cluster

Applying this files to the management cluster is enough to create the cluster. When this happens cluster operator takes control and creates the necessary resources for the new workload cluster.
```  
  kubectl apply -f cluster.yaml
```
You can check that the cluster has been properly created using `kubectl get clsuters` in the management cluster.
```
kubectl get clusters -n org-YOUR_ORG 
NAME    PHASE         AGE     VERSION
brhf3   Provisioned   10m
``` 