docs/doc/source/storage/kubernetes/install-additional-rbd-provisioners.rst
Keane Lim ceea9dda0d Storage Guide update
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>
2021-02-09 12:50:24 -05:00

107 lines
3.8 KiB
ReStructuredText

.. vgr1561030583228
.. _install-additional-rbd-provisioners:
===================================
Install Additional RBD Provisioners
===================================
You can launch additional dedicated rdb-provisioners to support specific
applications using dedicated pools, storage classes, and namespaces.
.. rubric:: |context|
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.
.. rubric:: |proc|
#. Capture a list of monitors.
This will be stored in the environment variable ``<MON\_LIST>`` and
used in the following step.
.. code-block:: none
~(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.
.. code-block:: none
~(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.
.. code-block:: none
~(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.
.. code-block:: none
~(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.
.. code-block:: none
~(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.