blob: e2d080630601c420c11571d2a08ef5b56f8848e4 [file] [log] [blame] [view]
# Installing a NFS-provisioner
The Gerrit replica requires access to a persistent volume capable of running in
`Read Write Many (RWM)`-mode to store the git repositories, since the repositories
have to be accessed by mutiple pods. One possibility to provide such volumes
is to install a provisioner for NFS-volumes into the same Kubernetes-cluster.
This document will guide through the process.
The [Kubernetes external-storage project](https://github.com/kubernetes-incubator/external-storage)
provides an out-of-tree dynamic [provisioner](https://github.com/kubernetes-incubator/external-storage/tree/master/nfs)
for NFS volumes. A chart exists for easy deployment of the project onto a
Kubernetes cluster. The chart's sources can be found [here](https://github.com/helm/charts/tree/master/stable/nfs-server-provisioner).
## Prerequisites
This guide will use Helm to install the NFS-provisioner. Thus, Helm has to be
installed.
## Installing the nfs-server-provisioner chart
A custom `values.yaml`-file containing a configuration tested with the
gerrit-replica chart can be found in the `supplements/nfs`-directory in the
gerrit-replica chart's root directory. In addition a file stating the tested
version of the nfs-server-provisioner chart is present in the same directory.
If needed, adapt the `values.yaml`-file for the nfs-server-provisioner chart
further and then run:
```sh
cd $(git rev-parse --show-toplevel)/helm-charts/gerrit-replica/supplements/nfs
helm install nfs \
stable/nfs-server-provisioner \
-f values.yaml \
--version $(cat VERSION)
```
For a description of the configuration options, refer to the
[chart's documentation](https://github.com/helm/charts/blob/master/stable/nfs-server-provisioner/README.md).
Here are some tips for configuring the nfs-server-provisioner chart to work with
the gerrit-replica chart:
- Deploying more than 1 `replica` led to some reliability issues in tests and
should be further tested for now, if required.
- The name of the StorageClass created for NFS-volumes has to be the same as the
one defined in the gerrit-replica chart for `storageClasses.shared.name`
- The StorageClas for NFS-volumes needs to have the parameter `mountOptions: vers=4.1`,
due to compatibility [issues](https://github.com/kubernetes-incubator/external-storage/issues/223)
with Ganesha.
## Deleting the nfs-server-provisioner chart
***note
**Attention:** Never delete the nfs-server-provisioner chart, if there is still a
PersistentVolumeClaim and Pods using a NFS-volume provisioned by the NFS server
provisioner. This will lead to crashed pods, that will not be terminated correctly.
***
If no Pod or PVC is using a NFS-volume provisioned by the NFS server provisioner
anymore, delete it like any other chart:
```sh
helm delete nfs
```