# Create a cluster

> Create a Starter or Production cluster in your own AWS account from the dashboard wizard or okctl. Starter is ready in about five minutes, Production in about ten.

A **cluster** is where your deployments run in [your own AWS account](/docs/own-cloud). This page walks through creating one. If you have not decided on a shape yet, [Clusters](/docs/own-cloud/clusters) compares **Starter** (one EC2 instance, no Ownkube fee) with **Production** (managed EKS across availability zones).

## Before you start

- A [connected AWS account](/docs/own-cloud/connect-aws). The wizard will not open without one.
- A rough idea of what you will run. Dev, staging or a side project: Starter. Live traffic that needs to survive an availability zone outage: Production.

## From the dashboard

Open your [dashboard](https://app.ownkube.io/dashboard) and click **New cluster**.

#### Starter

1. **Choose Starter**

   Select **Deploy on EC2**.

2. **Name and target**

   Pick a cluster name (`dev`, `side-project`), the AWS account, and a region. Names are lowercase letters, digits and dashes.

3. **Pick an instance type**

   | Instance | vCPU | Memory | Good for |
   |---|---|---|---|
   | `t3.medium` | 2 | 4 GiB | First apps, light prototypes |
   | `t3.large` | 2 | 8 GiB | Small production web app and a database |
   | `t3.xlarge` | 4 | 16 GiB | Several services |
   | `t3.2xlarge` | 8 | 32 GiB | Busy workloads on one node |

   You pay AWS for the instance and nothing to Ownkube. Current prices are on the [EC2 pricing page](https://aws.amazon.com/ec2/pricing/on-demand/).

4. **Review and create**

   Starter skips the networking and compute steps. Confirm the summary and click **Create cluster**. Provisioning takes about five minutes.

#### Production

1. **Choose Production**

   Select **Deploy on EKS**.

2. **Details**

   Pick a cluster name, the AWS account, a region and a Kubernetes version. The defaults are fine for most teams.

3. **Networking**

   Accept the defaults unless they clash with address ranges you already use:

   - **Pods CIDR**, default `10.244.0.0/16`
   - **Services CIDR**, default `10.96.0.0/12`

4. **Compute**

   Set **Workload vCPUs** and **Memory** to your starting capacity. Defaults are 8 vCPU and 16 GiB. This is the floor; the node pool scales above it on its own once the cluster is live.

5. **Review and create**

   The summary shows the estimated monthly Ownkube fee (\$5 per vCPU and \$1 per GiB on what you request). Click **Create cluster**. Provisioning takes about ten minutes.

## From the CLI

```bash title="Terminal"
# Starter: one instance, no Ownkube fee
okctl clusters create --name dev --account <aws-account-id> --region eu-central-1 --type starter --node-type t3.large

# Production: managed EKS with a starting floor of 8 vCPU and 16 GiB
okctl clusters create --name prod --account <aws-account-id> --region eu-central-1 --type production --vcpu 8 --memory 16

# Watch it come up
okctl clusters status <cluster-id>
```

`okctl aws list` prints the account IDs you have connected. See the [command reference](/docs/cli/commands#own-cloud) for every flag, including `--kubernetes-version`, `--pods-cidr` and `--services-cidr`.

## What happens during provisioning

1. **Account setup, once per AWS account**

   On your first cluster, Ownkube creates the shared IAM roles and a regional S3 bucket for state. About a minute, and only once.

2. **VPC and networking**

   A new VPC, subnets (public and private across availability zones on Production), NAT and security groups for the cluster.

3. **Control plane**

   Production provisions the managed EKS control plane. Starter launches the EC2 instance and bootstraps it.

4. **Platform components**

   Ownkube installs the routing, certificate and metrics components that make the platform work.

5. **Active**

   The cluster status flips to **Active** on the dashboard and it appears as a target when you create a deployment.

Creation can be cancelled while it is still running from the cluster page or with `okctl clusters cancel <cluster-id>`.

## After creation

The cluster page in your [dashboard](https://app.ownkube.io/dashboard) shows node, vCPU and memory telemetry, the VPC details, automatic update settings, and the danger zone. Everything it offers is covered in [Clusters](/docs/own-cloud/clusters).

## Limits

- **One region per cluster.** Create separate clusters for separate regions.
- **Shapes do not convert.** A Starter cluster cannot become Production. Create the new cluster and copy deployments across.
- **Own-cloud fees** land on the same [wallet](/docs/billing/usage) as Compute; Starter adds nothing to it.

- [Create a deployment](/docs/deployments/create)
- [Clusters](/docs/own-cloud/clusters)
- [Custom domains](/docs/own-cloud/custom-domains)

---

**Don't see a feature you need?** Email [support@ownkube.io](mailto:support@ownkube.io?subject=Feature%20request). Ownkube is shaped by the teams using it and we ship what our users ask for.

## Search

This site has a search endpoint: https://context7.com/api/v2/ask?siteKey=ask_c64dfe8ffaa8d3ad19576838&query=<URL-encoded question>. It returns documentation that answers the question, with a source link for each part. No API key is needed. If nothing matches, it says so.
