# Install Using Helm

Kloudfuse is deployed on Kubernetes using [Helm](https://helm.sh/), following standard Helm best practices.

After ensuring that the [prerequisites](https://docs.kloudfuse.com/platform/4.0.2/setup/install/prequisites/) are complete, proceed with the following steps:

1. [Log in to the Kloudfuse Helm registry](https://docs.kloudfuse.com/platform/4.0.2/setup/install/helm/#helm-registry)

2. [Create the `kfuse` namespace](https://docs.kloudfuse.com/platform/4.0.2/setup/install/helm/#namespace)

3. [Create a secret for Docker images](https://docs.kloudfuse.com/platform/4.0.2/setup/install/helm/#secret)

4. [Create a `custom_values.yaml` file](https://docs.kloudfuse.com/platform/4.0.2/setup/install/helm/#values-yaml)

5. [Install Kloudfuse with Helm](https://docs.kloudfuse.com/platform/4.0.2/setup/install/helm/#install)

## Log in to the Kloudfuse Helm registry

Using the `token.json` you downloaded with your free trial request, run the following command:

```console
cat token.json | helm registry login -u _json_key --password-stdin us-east1-docker.pkg.dev
```

|     |     |
| --- | --- |
|  | If this step fails, see [Registry Login Failure](https://docs.kloudfuse.com/platform/4.0.2/whats-new/known-issues/#registry-login-failure) |

## Create the `kfuse` namespace

Create a new namespace `kfuse` for the Kloudfuse installation:

```console
kubectl create ns kfuse
kubectl config set-context --current --namespace=kfuse
```

## Create a secret for Docker images

Create a secret to allow Helm to pull the required Docker images:

```console
kubectl create secret docker-registry kfuse-image-pull-credentials \
        --namespace='kfuse' --docker-server 'us.gcr.io' --docker-username _json_key \
        --docker-email 'container-registry@mvp-demo-301906.iam.gserviceaccount.com' \
        --docker-password='"$(cat token.json)"'
```

## Create a `custom_values.yaml` file

1. Create a `custom_values.yaml` file. If Kloudfuse shared a YAML file with you directly, modify it as necessary.

2. Specify the required `orgId` value, typically the name of your company:
   
   ```yaml
   global:
        orgId: <YOUR COMPANY NAME>
   ```

3. Specify the required `cloudProvider` value. Valid values are `aws`, `gcp`, and `azure`:
   
   ```yaml
   global:
        cloudProvider: <ONE OF aws, gcp, or azure>
   ```

4. \[Optional\] Add a section to `custom_values.yaml` to specify cloud provider-specific ingress settings.

See [Configure cloud-specific Helm values](https://docs.kloudfuse.com/platform/4.0.2/setup/network/nginx/).

## Install Kloudfuse with Helm

To install Kloudfuse, run the `helm upgrade` command:

```console
helm upgrade --install kfuse oci://us-east1-docker.pkg.dev/mvp-demo-301906/kfuse-helm/kfuse \
  -n kfuse \
  --version <VERSION> \ (1)
  -f custom-values.yaml
```

|     |     |
| --- | --- |
| **1** | Replace `<VERSION>` with a valid Kloudfuse release value; use the most recent one.
