---
description: >-
  Nexus has pre-built docker images for cloud deployment. To make the deployment
  easier we created helm chart for nexus. Follow this guide to setup nexus on
  the local or production using helm
---

# Nexus installation guide

### Background

Helm charts are maintained by Nexus Platform team and uses semantic versioning([SemVer2](https://semver.org/)) release strategy for charts

### Prerequisite for installation

1. Access to public internet
2. Helm 3+
3. Kubernetes 1.17+
4. MongoDB 4.4+ _(Follow_ [_this_](https://docs.mongodb.com/manual/installation) _guide for the installation of mongodb)_

Nexus chart repository will be accessible to public. So, Make sure you have access to the below link

{% hint style="success" %}
[https://nexusplatform.blob.core.windows.net/helm/index.yaml](https://nexusplatform.blob.core.windows.net/helm/index.yaml)
{% endhint %}

#### Helm version check

```bash
λ helm version
version.BuildInfo{Version:"v3.0.2", GitCommit:"19e47ee3283ae98139d98460de796c1be1e3975f", GitTreeState:"clean", GoVersion:"go1.13.5"}
```

#### Kubernetes version check

```bash
λ kubectl version
Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.5", GitCommit:"20c265fef0741dd71a66480e35bd69f18351daea", GitTreeState:"clean", BuildDate:"2019-10-15T19:16:51Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"windows/amd64"}
Server Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.7", GitCommit:"4683545293d792934a7a7e12f2cc47d20b2dd01b", GitTreeState:"clean", BuildDate:"2019-06-06T01:39:30Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"}
```

### Import nexus chart repository

```bash
λ helm repo add gaeaglobal https://nexusplatform.blob.core.windows.net/helm
"gaeaglobal" has been added to your repositories
```

Once chart repository has been added. Try searching for nexus chart to ensure you have access to nexus chart

```bash
λ helm search repo nexus
NAME                    CHART VERSION   APP VERSION     DESCRIPTION
gaeaglobal/nexus        0.8.1           0.8.1-alpha.3   The nexus platform for automation
```

### Nexus installation

Now, you have access to nexus chart and its ready for deployment. Refer this guide for extensive configuration of nexus deployment. But, For now lets see the simplest deployment _(Not for production use)_. For production, make sure scale up the service as per the requirement

Database URL is mandatory for any nexus deployment. You can use the values.yaml or use CLI to set these value. As a best practice let's use CLI to set sensitive data to kubernetes cluster.

Contact nexus support to get nexus docker registry and credentials to access the docker images

#### Create imagePullSecret

Default secret name is `acr-secret`. Set `imagePullSecrets` value as new secret name when installing helm chart in case of any change in secret name

```bash
λ kubectl create secret docker-registry acr-secret --namespace <namespace> --docker-server=gaeaglobal.azurecr.io --docker-username="<USERNAME>" --docker-password="<PASSWORD>"
```

#### Create helm release&#x20;

```bash
λ helm install dev gaeaglobal/nexus --namespace=nx-dev --set databaseURL="<MONGODB_FULL_URI>" --values .\values.yaml
```

#### Sample values.yaml

```bash
web:
  dnsName: https://abc.nexus-platform.com

api:
  imagePullPolicy: Always

integrationEngine:
  imagePullPolicy: Always
  replicaCount: 1

extmgr:
  imagePullPolicy: Always

notification:
  version: 0.8.0-alpha.1

scheduler:
  version: 0.8.0-alpha.7

storage:
  version: 0.7.8-alpha.1
```

{% hint style="info" %}
Name of the release is **`dev`**. Make sure you update the name before running the command&#x20;
{% endhint %}

#### Kubernetes pod&#x20;

Verify the deployment after the helm install command.&#x20;

```bash
λ kubectl get pod --namespace nx-dev
NAME                               READY   STATUS    RESTARTS   AGE
nexus-api-dev-0                    1/1     Running   0          2s
nexus-extension-mgr-dev-0          1/1     Running   0          3s
nexus-integration-engine-dev-0     1/1     Running   0          3s
nexus-integration-engine-dev-1     1/1     Running   0          3s
nexus-integration-engine-dev-2     1/1     Running   0          4s
nexus-notification-dev-0           1/1     Running   0          1m
nexus-redis-dev-577664fc4c-rhdfm   1/1     Running   0          7s
nexus-scheduler-dev-0              1/1     Running   0          1s
nexus-storage-dev-0                1/1     Running   0          7s
nexus-web-dev-0                    1/1     Running   0          2s
```
