> ## Documentation Index
> Fetch the complete documentation index at: https://docs.loqate.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Verify Helm Quick Start

> Deploy Verify to Kubernetes in minutes using Helmfile

## Prerequisites

Before installing, ensure you have:

* **Kubernetes** v1.23 or higher
* **Helm** v3.7.0 or higher
* **Helmfile** v0.144.0 or higher (recommended)
* **Docker Hub account** with access granted by Loqate
* **Loqate license key** (API key)
* **Persistent storage** - At least 250Gi ReadWriteMany (RWX) volume

<Note>
  **Recommended tools:** Istio v1.11.4+, KEDA v2.4+, Prometheus v2.34.0+ for advanced features
</Note>

## Step 1: Prepare Your Environment

Create a working directory and set environment variables.

**Unix/Linux:**

```bash theme={null}
# Create directory
mkdir -p /opt/loqate/lqtcharts
cd /opt/loqate/lqtcharts

# Set credentials (required)
export LICENSE_KEY="your-api-key"
export DOCKER_USERNAME="your-docker-username"
export DOCKER_PASSWORD="your-docker-password"

# Set custom data path (optional)
export LOQATE_NFS_SHARE="/opt/loqate/data"

# Use existing PVC (optional)
export CLAIM_OVERRIDE="your-pvc-name"
```

**Windows (PowerShell):**

```powershell theme={null}
# Create directory
New-Item -Path "\loqate\lqtcharts" -ItemType "Directory"
Set-Location "\loqate\lqtcharts"

# Set credentials (required)
$env:LICENSE_KEY="your-api-key"
$env:DOCKER_USERNAME="your-docker-username"
$env:DOCKER_PASSWORD="your-docker-password"

# Set custom data path (optional)
$env:LOQATE_NFS_SHARE="/run/desktop/mnt/host/c/loqate/data"

# Use existing PVC (optional)
$env:CLAIM_OVERRIDE="your-pvc-name"
```

<Accordion title="Storage Configuration Options">
  **Default behavior:** Creates a Persistent Volume (PV) and Persistent Volume Claim (PVC) using host filesystem at the path specified by `LOQATE_NFS_SHARE`.

  **Custom data path:** Set `LOQATE_NFS_SHARE` to your desired storage location.

  **Existing PVC:** Set `CLAIM_OVERRIDE` to use a pre-configured PVC for network storage. Skip `LOQATE_NFS_SHARE` if using this option.
</Accordion>

## Step 2: Download Helmfile

**Unix/Linux:**

```bash theme={null}
wget https://charts.loqate.com/helmfile.yaml -O helmfile.yaml
```

**Windows (PowerShell):**

```powershell theme={null}
Invoke-WebRequest https://charts.loqate.com/helmfile.yaml -OutFile helmfile.yaml
```

## Step 3: Install Verify

**Unix/Linux:**

```bash theme={null}
helmfile apply
```

**Windows (PowerShell):**

```powershell theme={null}
helmfile sync
```

The installation will:

1. Create the `loqate` namespace
2. Pull container images from Docker Hub
3. Deploy Memberlist, QueryCoordinator, and Spatial-API
4. Start InstallManager to download reference data

<Warning>
  Data download takes several hours and requires at least 250Gi storage for the full dataset.
</Warning>

## Step 4: Monitor Installation Progress

Check pod status:

```bash theme={null}
kubectl get pods -n loqate
```

Expected output during installation:

```
NAME                           READY   STATUS    RESTARTS   AGE
installmanager-xxxxx           0/1     Running   0          2m
memberlist-xxxxx               1/1     Running   0          2m
querycoordinator-xxxxx         0/1     Running   0          2m
spatial-api-xxxxx              0/1     Running   0          2m
```

Monitor data download:

```bash theme={null}
kubectl logs -f installmanager-xxxxx -n loqate
```

Installation is complete when you see `Edit complete` in the logs.

## Step 5: Test Your Installation

Open a port forward:

```bash theme={null}
kubectl port-forward -n loqate svc/querycoordinator 8900:8900
```

**Test version endpoint (Unix/Linux):**

```bash theme={null}
curl -X GET http://localhost:8900/api/version
```

Expected response:

```json theme={null}
{"version":"2.xx.x.xxxxx-xxxxxxx"}
```

**Test verification (Unix/Linux):**

```bash theme={null}
curl -X POST http://localhost:8900/verify \
  -H "Content-Type: application/json" \
  -d '{"input":[{"Address1":"The Foundation","Locality":"Chester","Country":"GB"}]}'
```

Successful response includes validated address with AVC and AQI scores.

<Accordion title="Windows PowerShell Commands">
  **Test version:**

  ```powershell theme={null}
  Invoke-WebRequest -Method GET http://localhost:8900/api/version
  ```

  **Test verification:**

  ```powershell theme={null}
  Invoke-WebRequest http://localhost:8900/verify -Method POST `
    -ContentType "application/json" `
    -Body '{"input":[{"Address1":"The Foundation","Locality":"Chester","Country":"GB"}]}'
  ```
</Accordion>

## Download Subset of Datasets

To reduce storage and download time, install only specific countries:

1. Create `silent.txt` file:

```
gbgkey=your-api-key
datachoice=selectcountries
countries=USA,GBR,CAN
```

2. Create ConfigMap:

```bash theme={null}
kubectl create configmap installmanager-config \
  --from-file=silent.txt=silent.txt \
  -n loqate
```

3. Update InstallManager values to reference the ConfigMap

4. Rerun helmfile

## Troubleshooting Installation

**Pods not starting:**

Check logs:

```bash theme={null}
kubectl logs pod-name -n loqate
```

Common issues: invalid license key, Docker Hub authentication failed, insufficient storage.

**Data download slow:**

Normal for full dataset. Monitor with:

```bash theme={null}
kubectl logs -f installmanager-xxxxx -n loqate
```

**Connection refused on port forward:**

Ensure port forward is running and QueryCoordinator pod shows `1/1` ready status.

See [Troubleshooting](/helm/troubleshooting) for more solutions.

## Next Steps

* [Configuration](/helm/configuration) - Add country-specific deployments and certified datasets
* [Usage](/helm/usage) - Learn management commands and monitoring
* [Troubleshooting](/helm/troubleshooting) - Resolve common issues
