137 lines
5.2 KiB
Markdown
137 lines
5.2 KiB
Markdown
# Setup for Local Development
|
|
|
|
## Installation
|
|
|
|
First, see our [Local Deployment guide](../deploy/local.md#installing-kubernetes) for instructions on how to install the latest release with [Kubernetes](https://kubernetes.io/) with [Helm 3](https://v3.helm.sh/).
|
|
|
|
## Local Dev Configuration
|
|
|
|
The local deployment guide explains how to deploy Browsertrix Cloud with latest published images.
|
|
|
|
However, if you are developing locally, you will need to use your local images instead.
|
|
|
|
We recommend the following setup:
|
|
|
|
1. Copy the provided `./chart/examples/local-config.yaml` Helm configuration file to a separate file `local.yaml`,
|
|
so that local changes to it will not be accidentally committed to git. From the root directory:
|
|
```sh
|
|
cp ./chart/examples/local-config.yaml ./chart/local.yaml
|
|
```
|
|
|
|
2. Uncomment `backend_image`, `frontend_image`, and pull policies in `./chart/local.yaml`, which will ensure the local images are used:
|
|
```yaml
|
|
backend_image: docker.io/webrecorder/browsertrix-backend:latest
|
|
frontend_image: docker.io/webrecorder/browsertrix-frontend:latest
|
|
backend_pull_policy: 'Never'
|
|
frontend_pull_policy: 'Never'
|
|
```
|
|
|
|
??? info "MicroK8S"
|
|
|
|
For microk8s, the pull policies actually need to be set to `IfNotPresent` instead of `Never`:
|
|
|
|
```yaml
|
|
backend_pull_policy: 'IfNotPresent'
|
|
frontend_pull_policy: 'IfNotPresent'
|
|
```
|
|
|
|
This will ensure images are pulled from the MicroK8S registry (configured in next section).
|
|
|
|
|
|
|
|
3. Build the local backend and frontend images. The exact process depends on the Kubernetes environment you've selected in your initial deployment. Environment specific build instructions are as follows:
|
|
|
|
??? info "Docker Desktop"
|
|
|
|
Rebuild the local images by running `./scripts/build-backend.sh` and/or `./scripts/build-frontend.sh` scripts to build the images in the local Docker.
|
|
|
|
??? info "MicroK8S"
|
|
|
|
MicroK8s uses its own container registry, running on port 32000.
|
|
|
|
1. Ensure the registry add-on is enabled by running `microk8s enable registry`
|
|
|
|
2. Set `export REGISTRY=localhost:32000/` and then run `./scripts/build-backend.sh` and/or `./scripts/build-frontend.sh` to rebuild the images into the MicroK8S registry.
|
|
|
|
3. In `./chart/local.yaml`, also uncomment the following lines to use the local images:
|
|
```yaml
|
|
backend_image: "localhost:32000/webrecorder/browsertrix-backend:latest"
|
|
frontend_image: "localhost:32000/webrecorder/browsertrix-frontend:latest"
|
|
```
|
|
|
|
??? info "Minikube"
|
|
|
|
Minikube comes with its own image builder to update the images used in Minikube.
|
|
|
|
To build the backend image, run:
|
|
|
|
```shell
|
|
minikube image build -t webrecorder/browsertrix-backend:latest ./backend
|
|
```
|
|
|
|
To build a local frontend image, run:
|
|
|
|
```shell
|
|
minikube image build -t webrecorder/browsertrix-frontend:latest ./frontend
|
|
```
|
|
|
|
??? info "K3S"
|
|
|
|
K3S uses `containerd` by default. To use local images, they need to be imported after rebuilding.
|
|
|
|
1. Rebuild the images with Docker by running by running `./scripts/build-backend.sh` and/or `./scripts/build-frontend.sh` scripts. (Requires Docker to be installed as well).
|
|
|
|
2. Serializer the images to .tar:
|
|
```shell
|
|
docker save webrecorder/browsertrix-backend:latest > ./backend.tar
|
|
docker save webrecorder/browsertrix-frontend:latest > ./frontend.tar
|
|
```
|
|
|
|
3. Import images into k3s containerd:
|
|
```shell
|
|
k3s ctr images import --base-name webrecorder/browsertrix-backend:latest ./backend.tar
|
|
k3s ctr images import --base-name webrecorder/browsertrix-frontend:latest ./frontend.tar
|
|
```
|
|
|
|
4. If you'd like to change other options, you can uncomment them as needed in `./chart/local.yaml`
|
|
or add additional overrides from `./chart/values.yaml`
|
|
|
|
For example, to set a superuser email to `my_super_user_email@example.com` and password to `MySecretPassword!`, uncomment that block and set:
|
|
```yaml
|
|
superuser:
|
|
# set this to enable a superuser admin
|
|
email: my_super_user_email@example.com
|
|
|
|
# optional: if not set, automatically generated
|
|
# change or remove this
|
|
password: MySecretPassword!
|
|
```
|
|
|
|
5. Once the images have been built and config changes made in `./chart/local.yaml`,
|
|
|
|
the cluster can be re-deployed by running:
|
|
```sh
|
|
helm upgrade --install -f ./chart/values.yaml \
|
|
-f ./chart/local.yaml btrix ./chart/
|
|
```
|
|
|
|
??? info "MicroK8S"
|
|
|
|
If using microk8s, the commend will be:
|
|
|
|
```sh
|
|
microk8s helm3 upgrade --install -f ./chart/values.yaml -f ./chart/local.yaml btrix ./chart/
|
|
```
|
|
|
|
Refer back to the [Local Development guide](../deploy/local.md#waiting-for-cluster-to-start) for additional information on running and debugging your local cluster.
|
|
|
|
## Update the Images
|
|
|
|
After making any changes to backend code (in `./backend`) or frontend code (in `./frontend`), you'll need to rebuild the images as specified above, before running `helm upgrade ...` to re-deploy.
|
|
|
|
Changes to settings in `./chart/local.yaml` can be deployed with `helm upgrade ...` directly.
|
|
|
|
## Deploying Frontend Only
|
|
|
|
If you are just making changes to the frontend, you can also [deploy the frontend separately](frontend-dev.md) using a dev server for quicker iteration.
|