# Run Unbound environment in local K8S This is a setup for running the Unbound environment in K8S using [KinD](https://kind.sigs.k8s.io/) ## Prerequisites ### Tools - [KinD](https://kind.sigs.k8s.io/docs/user/quick-start/#installation) - [kubectl](https://kubernetes.io/docs/tasks/tools/) - [Buildtools](https://buildtools.io) - [Lastpass CLI](https://github.com/lastpass/lastpass-cli) - [GNU Base64](https://www.gnu.org/software/coreutils/) - [Bash 4.4+](https://www.gnu.org/software/bash/) - [direnv](https://direnv.net/) to manage environment variables per directory ### Setup Create a Gitlab Personal Access Token with (at least) read_registry access and set it as environment variable GITLAB_TOKEN. Can be done with a `.envrc`-file in a parent directory: ```shell source_up .envrc export GITLAB_TOKEN= ``` Create a `.buildtools.yaml`-file in the parent directory with the following content: ```yaml targets: local: context: kind-unbound namespace: default staging: context: k8s.unbound.se namespace: staging prod: context: k8s.unbound.se namespace: default ``` ## Creating the cluster Just run the following: ```shell ./setup ``` Wait for the cluster to be ready. The K8S context should be set automatically. Check what's been deployed by running: ```shell kubectl get pod -A ``` ## Stopping/starting the cluster If you need to stop the cluster to be able to use the exposed ports for other things, run: ```shell docker stop unbound-control-plane ``` To start it again: ```shell docker start unbound-control-plane ``` ## Removing the cluster To remove the cluster completely, run: ```shell kind delete cluster --name unbound ``` ## Cleaning up retained data The setup stores data for containers in the `data`-directory. To start from scratch, stop the cluster, empty the directory and start the cluster again.