---
# System prepended metadata

title: Bee deployment fast cycle

---

# Bee deployment fast cycle

In order to simplify and shorten the feedback loop when developing bee and/or smart contract functionality we introduce a handy way to deploy a small cluster on your local machine.

Once the changes are ready to be tested against a larger cluster you can deploy it using the `bee-load-test` repository.

## Example scenario

Let's say you deployed your local cluster and want to test some new changes in smart contracts.

Deploy the smart contracts to the local geth node (url: 'http://geth-swap.localhost'):
```
npx hardhat run deploy/deploy.ts --network geth
```
This will print out the new contract addresses

Paste the addresses into the corresponding fields in the `~/.beekeeper/local.yaml`

If you made any changes to the bee code as well run `make beelocal OPTS='skip-vet' ACTION=build`

This will build the new image and put it into the local registry.

Run these commands:
```
beekeeper delete bee-cluster --cluster-name local
beekeeper create bee-cluster --cluster-name local
```

They will bring down and back up your bee instances (with the new image & configuration) but without impacting your `geth node`

## Local deployment

You need recent versions of docker and helm installed.

### commands

To install the local cluster run this command from the root of the `bee` folder:

`make beelocal OPTS='skip-vet'`

- To uninstall the instances from the cluster use `ACTION=uninstall`
- To shut down cluster use `ACTION=stop`
- To remove it clean use `ACTION=destroy`

In order the change the configuration (bzz token address and geth url) of your local cluster modify the respective values in your `~/.beekeeper.yml` file.

To change the configuration values of the bee update `~/.beekeeper/local.yaml`

### Testing the changes to the `docker-setup-contracts` project

- build, tag and push the new `docker-setup-contracts` image locally
```
docker build -t k3d-registry.localhost:5000/setup-contracts:local .
docker push k3d-registry.localhost:5000/setup-contracts:local
```
- use the image and tag in the create cluster command:

`make beelocal OPTS='skip-vet' SETUP_CONTRACT_IMAGE=k3d-registry.localhost:5000/setup-contracts SETUP_CONTRACT_IMAGE_TAG=local`

### Possible issues

- Improper configuration in `~/.beekeeper.yml` could result it network routing issues, a solution would be to back-up the existing configuration file and re-run the command (the command will fetch the latest configuration file from git).

- Helm version can be an issue, make sure you run version >= 3.9

- If you used older versions of `beelocal` you might want to get rid of old volumes/containers:
```
docker volume rm $(docker volume ls -q)
docker rm $(docker ps -a -q)
```

## AWS Deployment

From the `bee-load-test` folder:

- make sure that the configuration file reflects the parameters of the cluster you want to deploy
```
$ cat .env
export AWS_ACCOUNT_ID=7*********5
export BOOTNODE_REPLICA=1 #MAX 1
export GATEWAY_REPLICA=0 #MAX 10
export FULL_REPLICA=10 #MAX 100
export LIGHT_REPLICA=0 #MAX 20
```
- to use a custom bee image update the `image.repository` in the `helmsman-dsf/init.yml` file
- to use a custom smart contract tag update the `imageSetupContract.tag` value in `helm-values/geth.yml`
- to change the bee configuration values update the `beeConfig` params of `helm-values/bee.yml`

### commands

- to install the cluster run `NAMESPACE=my-halloween-namespace ./install.sh init`
- to uninstall the cluster run `NAMESPACE=my-halloween-namespace ./uninstall.sh init`
