* docs refactor: - add local deployment guide local-dev-setup.md - deploy/local.md focuses only on deployment with latest release, links to local-dev-setup.md for local image deployment - add nav to mkdocs.yml to ensure correct order of pages - update microk8s specific info - update minikube specific info --------- Co-authored-by: Ilya Kreymer <ikreymer@gmail.com>
		
			
				
	
	
		
			137 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			137 lines
		
	
	
		
			5.1 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 pull policies in `./chart/local.yaml`, which will ensure the local images are used:
 | 
						|
```yaml
 | 
						|
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.
 |