> For the complete documentation index, see [llms.txt](https://kubernauts.gitbook.io/tk8/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kubernauts.gitbook.io/tk8/docs/en/provisioner/aws/cli.md).

# cli

You can download the TK8 CLI for Linux and Mac OSX under releases [here](https://github.com/kubernauts/tk8/releases).

Make sure you have the sufficient permissions to create following resources in AWS

* VPC with Public/Private Subnets, and NAT Gateways in different Availability Zones
* EC2 instances used for bastion host, masters, etcd, and worker nodes
* AWS ELB in the Public Subnet for accessing the Kubernetes API from the internet
* IAM Roles which will be used with the nodes

Provide the AWS credentials in either of the following ways:

* [AWS IAM Instance Profile](https://docs.aws.amazon.com/codedeploy/latest/userguide/getting-started-create-iam-instance-profile.html)
* [Configuration and Credential Files](https://docs.aws.amazon.com/cli/latest/userguide/cli-config-files.html)
* [Environment Variables](https://docs.aws.amazon.com/cli/latest/userguide/cli-environment.html). You will need to specify `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`.
* [Config file](https://raw.githubusercontent.com/kubernauts/tk8/master/config.yaml.example)

## Create a cluster

Adapt the `config.yaml` file to specify the cluster details. [Example config](https://github.com/kubernauts/tk8/tree/b67a26605dd9e78d74b0a1451e9a397bf9252788/config.yaml.example):

```yaml
aws:
   clustername: kubernauts
   os: centos
   aws_access_key_id: ""
   aws_secret_access_key: ""
   aws_ssh_keypair: ""
   aws_default_region: ""
   aws_vpc_cidr_block : "10.250.192.0/18"
   aws_cidr_subnets_private : '["10.250.192.0/20","10.250.208.0/20"]'
   aws_cidr_subnets_public : '["10.250.224.0/20","10.250.240.0/20"]'
   aws_bastion_size : "t2.medium"
   aws_kube_master_num : 1
   aws_kube_master_size : "t2.medium"
   aws_etcd_num : 1
   aws_etcd_size : "t2.medium"
   aws_kube_worker_num : 1
   aws_kube_worker_size : "t2.medium"
   aws_elb_api_port : 6443
   k8s_secure_api_port : 6443
   kube_insecure_apiserver_address : "0.0.0.0"
   kubeadm_enabled: false
   kube_network_plugin: "flannel"
```

Once done run:

```
tk8 cluster install aws
```

Post installation the **kubeconfig** will be available at: *$(pwd)/inventory/yourWorkspaceOrClusterName/artifacts/admin.conf*

**Do not** delete the inventory directory post installation as the cluster state will be saved in it.

## Destroy the provisioned cluster

Make sure you are in same directory where you executed `tk8 cluster install aws` with the inventory directory. If you use a different workspace name with the --name flag please provided it on destroying too.

To delete the provisioned cluster run:

```
tk8 cluster destroy aws
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://kubernauts.gitbook.io/tk8/docs/en/provisioner/aws/cli.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
