
Applied review feedback. Fixed 'grey bars' formatting. Fixed gerunds and lists Added abbreviations and references Change-Id: I104d678ce3ea52bddcbc141f8aad49ea1e1971db Signed-off-by: Keane Lim <keane.lim@windriver.com>
3.8 KiB
Install Additional RBD Provisioners
You can launch additional dedicated rdb-provisioners to support specific applications using dedicated pools, storage classes, and namespaces.
This can be useful if, for example, to allow an application to have control over its own persistent volume provisioner, that is, managing the Ceph pool, storage tier, allowed namespaces, and so on, without requiring the kubernetes admin to modify the default rbd-provisioner service in the kube-system namespace.
This procedure uses standard Helm mechanisms to install a second rbd-provisioner.
Capture a list of monitors.
This will be stored in the environment variable
<MON\_LIST>
and used in the following step.~(keystone_admin)$ MON_LIST=$(ceph mon dump 2>&1 | awk /^[0-2]:/'{print $2}' | awk -F'/' '{print " - "$1}')
Create an overrides yaml file defining the new provisioner.
In this example we will create the file /home/sysadmin/my-second-provisioner-overrides.yaml.
~(keystone_admin)$ cat <<EOF > /home/sysadmin/my-second-provisioner-overrides.yaml global: adminId: admin adminSecretName: ceph-admin name: 2nd-provisioner provisioner_name: "ceph.com/2nd-rbd" classdefaults: monitors: ${MON_LIST} classes: - name: 2nd-storage pool_name: another-pool chunk_size: 64 crush_rule_name: storage_tier_ruleset replication: 1 userId: 2nd-user-secret userSecretName: 2nd-user-secret rbac: clusterRole: 2nd-provisioner clusterRoleBinding: 2nd-provisioner role: 2nd-provisioner roleBinding: 2nd-provisioner serviceAccount: 2nd-provisioner EOF
Install the chart.
~(keystone_admin)$ helm upgrade --install my-2nd-provisioner stx-platform/rbd-provisioner --namespace=isolated-app --values=/home/sysadmin/my-second-provisioner-overrides.yaml Release "my-2nd-provisioner" does not exist. Installing it now. NAME: my-2nd-provisioner LAST DEPLOYED: Mon May 27 05:04:51 2019 NAMESPACE: isolated-app STATUS: DEPLOYED ...
Note
Helm automatically created the namespace isolated-app while installing the chart.
Confirm that my-2nd-provisioner has been deployed.
~(keystone_admin)$ helm list -a NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE my-2nd-provisioner 1 Mon May 27 05:04:51 2019 DEPLOYED rbd-provisioner-0.1.0 isolated-app my-app3 1 Sun May 26 22:52:16 2019 DEPLOYED mysql-1.1.1 5.7.14 new-app3 my-new-sc-app 1 Sun May 26 23:11:37 2019 DEPLOYED mysql-1.1.1 5.7.14 new-sc-app my-release 1 Sun May 26 22:31:08 2019 DEPLOYED mysql-1.1.1 5.7.14 default ...
Confirm that the 2nd-storage storage class was created.
~(keystone_admin)$ kubectl get sc --all-namespaces NAME PROVISIONER AGE 2nd-storage ceph.com/2nd-rbd 61s general (default) ceph.com/rbd 6h39m special-storage-class ceph.com/rbd 5h58m
You can now create and mount PVCs from the new rbd-provisioner's 2nd-storage storage class, from within the isolated-app namespace.