# Install on Kubernetes

## Supported Platforms

* Kubernetes 1.23+

## Prerequisites

* Kubernetes cluster
* An [Ingress Controller](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/) such as [NGINX](https://www.nginx.com/products/nginx-ingress-controller/) deployed in the cluster
* [cert-manager](https://cert-manager.io/v0.14-docs/installation/kubernetes/) for auto SSL of custom domain
* A custom domain for use during Squidex deployment

## Use the Helm Chart

We provide a Helm chart that deploys Squidex along with MongoDB.

The helm chart creates the following resources / objects:

* Deployments
  * A Squidex primary deployment
  * And a Squidex worker deployment for background jobs&#x20;
* Statefulsets
  * A MongoDB statefulset with 3 replicas&#x20;
* PVs & PVCs
  * Persistent volumes for MongoDB
* Services
* Ingress

The Github link below contains all the details:

> <https://github.com/Squidex/squidex/tree/master/helm>

### 1. Connect to the Kubernetes Cluster

Use *kubeconfig* to connect to your Kubernetes cluster and ensure you are able to run `kubectl` commands.

### 2. Add the Repository

Here *squidex* is the name used for the repository.&#x20;

```
helm repo add squidex https://squidex.github.io/squidex/helm/
```

### 3. Install the Chart

The below command installs version 7 of Squidex. &#x20;

```
helm install squidex squidex/squidex7 --set env.URLS__BASEURL=https://squidex.your.domain --set ingress.hostName=squidex.your.domain
```

* Here `squidex/squidex7` means we are installing version 7 of Squidex.
* Replace ~~squidex.your.domain~~ with your custom domain name.

### 4. Wait for the rollout

It may take a few minutes before the rollout is successful. Run the below command to check the status:

```
kubectl rollout status deployments
```

Below is a sample screenshot of a successful rollout

<figure><img src="https://2730255609-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LrL94QfeasZ0wF6YAvB%2Fuploads%2Fs7kaQOFsKFa28ysuL4am%2F2022-12-08_16-46.png?alt=media&#x26;token=9b21b260-fa2d-4caf-8925-6ed28572e170" alt=""><figcaption><p>Successful rollout of Squidex deployments</p></figcaption></figure>

### 5. Verify resources/objects

You can verify / see all the objects created by running:

```
kubectl get all
```

<figure><img src="https://2730255609-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LrL94QfeasZ0wF6YAvB%2Fuploads%2FIWCsksUx0GROdhJHJfIV%2F2022-12-08_16-54.png?alt=media&#x26;token=6266cb45-069a-4cde-a3aa-fccfe6986a36" alt=""><figcaption><p>Screenshot of all objects deployment by the helm chart</p></figcaption></figure>

### 6. Access Squidex

Open the custom URL address on a browser to continue with Squidex setup.

## Troubleshooting

To troubleshoot, check deployment logs of the respective deployment. You can also check the pod logs or use the tools that are provided by your hosting providers to view the log stream.

```bash
kubectl logs deployment/squidex-squidex7
```

### 404 Error on Accessing URL

If you receive a 404 Error, It's mostly an ingress issue. Check the ingress class name for your ingress controller deployment.

This helm chart uses the *ingressClassName* as **nginx**.

### Before v7.0.0: Warning for ServerGC

Don't worry if you see the following log entry:

> info: Orleans.Runtime.Silo\[100404]\
> Silo starting with GC settings: ServerGC=False GCLatencyMode=Interactive\
> warn: Orleans.Runtime.Silo\[100405]\
> Note: Silo not running with ServerGC turned on - recommend checking app config : --\
> warn: Orleans.Runtime.Silo\[100405]\
> Note: ServerGC only kicks in on multi-core systems (settings enabling ServerGC have no effect on single-core machines).

This is not a critical warning. ServerGC is a special Garbage Collector as it has no positive or negative impact when running with a single core. You can just ignore it. This log entry is generated by Microsoft Orleans, a framework which has been removed with v7.0.0 and is there not relevant anymore.

**Solution**: Request more than 1 CPU&#x20;

```
resources:
  requests:
    cpu: 2
```

### More Issues?

For other issues, it is likely that you have a configuration problem not related to hosting under Kubernetes. Checkout the following documentation:

{% content-ref url="../configuration" %}
[configuration](https://docs.squidex.io/id-01-getting-started/installation/configuration)
{% endcontent-ref %}
