Story: 2009987 Task: 47040 Signed-off-by: Elisamara Aoki Goncalves <elisamaraaoki.goncalves@windriver.com> Change-Id: Ie0172fc2e0b42f0534faae0ec1df4e503e3e4485
		
			
				
	
	
		
			129 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
 | 
						|
.. vgr1561030583228
 | 
						|
.. _install-additional-rbd-provisioners:
 | 
						|
 | 
						|
===================================
 | 
						|
Install Additional RBD Provisioners
 | 
						|
===================================
 | 
						|
 | 
						|
You can launch additional dedicated |RBD| 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 and cluster ID.
 | 
						|
 | 
						|
    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}' | grep -oP '(?<=v1:).*(?=/)' | awk -F' ' '{print "  - "$1}')
 | 
						|
 | 
						|
    This will be stored in the environment variable ``<CLUSTER_ID>`` and used
 | 
						|
    in the following step.
 | 
						|
 | 
						|
    .. code-block:: none
 | 
						|
 | 
						|
        ~(keystone_admin)]$ CLUSTER_ID=$(ceph fsid)
 | 
						|
 | 
						|
#.  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 > ~/my-second-provisioner-overrides.yaml
 | 
						|
        classdefaults:
 | 
						|
          monitors:
 | 
						|
        ${MON_LIST}
 | 
						|
        classes:
 | 
						|
        - additionalNamespaces:
 | 
						|
          - default
 | 
						|
          - kube-public
 | 
						|
          chunk_size: 64
 | 
						|
          clusterID: ${CLUSTER_ID}
 | 
						|
          crush_rule_name: storage_tier_ruleset
 | 
						|
          name: 2nd-provisioner
 | 
						|
          pool_name: another-pool
 | 
						|
          replication: 1
 | 
						|
          userId: 2nd-user-secret
 | 
						|
          userSecretName: 2nd-user-secret
 | 
						|
        csiConfig:
 | 
						|
        - clusterID: ${CLUSTER_ID}
 | 
						|
          monitors:
 | 
						|
        ${MON_LIST}
 | 
						|
        nodeplugin:
 | 
						|
          fullnameOverride: 2nd-nodeplugin
 | 
						|
        provisioner:
 | 
						|
          fullnameOverride: 2nd-provisioner
 | 
						|
          replicaCount: 1
 | 
						|
        driverName: cool-rbd-provisioner.csi.ceph.com
 | 
						|
        EOF
 | 
						|
 | 
						|
    .. note::
 | 
						|
 | 
						|
        The ``replicaCount`` parameter has the value 1 for SX and 2 for others.
 | 
						|
 | 
						|
#.  Gets the directory where the rbd-provisioner static overrides file is
 | 
						|
    located.
 | 
						|
 | 
						|
    This will be stored in the environment variable ``<RBD_STATIC_OVERRIDES>`` and
 | 
						|
    used in the following step.
 | 
						|
 | 
						|
    .. code-block:: none
 | 
						|
 | 
						|
        ~(keystone_admin)]$ SW_VERSION=$(system show | awk /software_version/'{print $4}')
 | 
						|
        ~(keystone_admin)]$ INTEG_APPS_VERSION=$(system application-show platform-integ-apps | awk /app_version/'{print $4}')
 | 
						|
        ~(keystone_admin)]$ RBD_STATIC_OVERRIDES=/opt/platform/fluxcd/$SW_VERSION/platform-integ-apps/$INTEG_APPS_VERSION/platform-integ-apps-fluxcd-manifests/rbd-provisioner/rbd-provisioner-static-overrides.yaml
 | 
						|
 | 
						|
#.  Install the chart.
 | 
						|
 | 
						|
    .. code-block:: none
 | 
						|
 | 
						|
        ~(keystone_admin)]$ helm upgrade --install my-2nd-provisioner stx-platform/ceph-csi-rbd --namespace=isolated-app --create-namespace --values=$RBD_STATIC_OVERRIDES --values=/home/sysadmin/my-second-provisioner-overrides.yaml
 | 
						|
        Release "my-2nd-provisioner" does not exist. Installing it now.
 | 
						|
        NAME: my-2nd-provisioner
 | 
						|
        LAST DEPLOYED: Wed Dec 14 04:20:00 2022
 | 
						|
        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 -n isolated-app
 | 
						|
        NAME              	NAMESPACE   	REVISION	UPDATED                                	STATUS  	CHART             	APP VERSION
 | 
						|
        my-2nd-provisioner	isolated-app	1       	2022-12-14 04:20:00.345212618 +0000 UTC	deployed	ceph-csi-rbd-3.6.2	3.6.2
 | 
						|
 | 
						|
#.  Confirm that the ``2nd-storage`` storage class was created.
 | 
						|
 | 
						|
    .. code-block:: none
 | 
						|
 | 
						|
        ~(keystone_admin)]$ kubectl get sc -A
 | 
						|
        NAME                PROVISIONER                         RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
 | 
						|
        2nd-provisioner     cool-rbd-provisioner.csi.ceph.com   Delete          Immediate           true                   6m4s
 | 
						|
        cephfs              cephfs.csi.ceph.com                 Delete          Immediate           true                   10m
 | 
						|
        general (default)   rbd.csi.ceph.com                    Delete          Immediate           true                   10m
 | 
						|
 | 
						|
    You can now create and mount PVCs from the new |RBD| provisioner's
 | 
						|
    ``2nd-storage`` storage class, from within the ``isolated-app``
 | 
						|
    namespace.
 |