# Deploy a Kubernetes Cluster

[PREV: Setup](00-setup.md) <==> [NEXT: Deploy a Fabric Network](20-fabric.md)

---

With cloud-native Fabric, all the components can run directly on your development workstation.  In this exercise, you will configure:

- A local [kind](https://kind.sigs.k8s.io) cluster, running Kubernetes in Docker.

- A local [Ingress controller](https://github.com/kubernetes/ingress-nginx), routing traffic into the cluster at the `*.localho.st` virtual DNS domain.

- A local [Container Registry](https://docs.docker.com/registry/insecure/), allowing you to upload chaincode Docker images to the cluster.

![Local KIND](../images/CloudReady/10-kube.png)


## Ready?

```shell

just check-setup 

```

## Kubernetes IN Docker (KIND)

- Set the cluster ingress domain and target k8s namespace.  The `localho.st` domain is a public DNS wildcard resolver
  mapping `*.localho.st` to 127.0.0.1.
```shell

export WORKSHOP_INGRESS_DOMAIN=localho.st
export WORKSHOP_NAMESPACE=test-network

```

- Create a [kind](https://kind.sigs.k8s.io) cluster, Nginx ingress, and local container registry:
```shell

just kind

```

- Open a new terminal window and observe the target namespace:
```shell

# KIND will set the current kubectl context in ~/.kube/config 
kubectl cluster-info

k9s -n test-network

```


## Trouble? 

- Run KIND on a [multipass VM](11-kube-multipass.md) on your local system
- Run KIND on an [EC2 instance](12-kube-ec2-vm.md) at AWS


## Take it Further: 

- Run the workshop on an [IKS or EKS Cloud Kubernetes cluster](13-kube-public-cloud.md).
- Run the workshop on an AWS VM, using your AWS account and an EC2 [#cloud-config](../../infrastructure/ec2-cloud-config.yaml).

---
[PREV: Setup](00-setup.md) <==> [NEXT: Deploy a Fabric Network](20-fabric.md)

