docs/doc/source/storage/kubernetes/enable-readwriteonce-pvc-support-in-additional-namespaces.rst
Juanita-Balaraj 63cd4f5fdc CephFS RWX Support in Host-based Ceph
Incorporated patchset 1 review comments
Updated patchset 5 review comments
Updated patchset 6 review comments
Fixed merge conflicts
Updated patchset 8 review comments

Change-Id: Icd7b08ab69273f6073b960a13cf59905532f851a
Signed-off-by: Juanita-Balaraj <juanita.balaraj@windriver.com>
2021-05-03 16:39:45 -04:00

12 KiB

Enable ReadWriteOnce PVC Support in Additional Namespaces

The default general rbd-provisioner storage class is enabled for the default, kube-system, and kube-public namespaces. To enable an additional namespace, for example for an application-specific namespace, a modification to the configuration (helm overrides) of the provisioner service is required.

The following example illustrates the configuration of three additional application-specific namespaces to access the provisioner's general storage class.

Note

Due to limitations with templating and merging of overrides, the entire storage class must be redefined in the override when updating specific values.

  1. List installed helm chart overrides for the platform-integ-apps.

    ~(keystone_admin)$ system helm-override-list platform-integ-apps
    +--------------------+----------------------+
    | chart name         | overrides namespaces |
    +--------------------+----------------------+
    | ceph-pools-audit   | [u'kube-system']     |
    | cephfs-provisioner | [u'kube-system']     |
    | helm-toolkit       | []                   |
    | rbd-provisioner    | [u'kube-system']     |
    +--------------------+----------------------+
  2. Review existing overrides for the rbd-provisioner chart. You will refer to this information in the following step.

    ~(keystone_admin)$ system helm-override-show platform-integ-apps rbd-provisioner kube-system
    +--------------------+--------------------------------------------------+
    | Property           | Value                                            |
    +--------------------+--------------------------------------------------+
    | combined_overrides | classdefaults:                                   |
    |                    |   adminId: admin                                 |
    |                    |   adminSecretName: ceph-admin                    |
    |                    |   monitors:                                      |
    |                    |   - 192.168.204.4:6789                           |
    |                    |   - 192.168.204.2:6789                           |
    |                    |   - 192.168.204.3:6789                           |
    |                    |   - 192.168.204.60:6789                          |
    |                    | classes:                                         |
    |                    | - additionalNamespaces:                          |
    |                    |   - default                                      |
    |                    |   - kube-public                                  |
    |                    |   chunk_size: 64                                 |
    |                    |   crush_rule_name: storage_tier_ruleset          |
    |                    |   name: general                                  |
    |                    |   pool_name: kube-rbd                            |
    |                    |   replication: 2                                 |
    |                    |   userId: ceph-pool-kube-rbd                     |
    |                    |   userSecretName: ceph-pool-kube-rbd             |
    |                    | global:                                          |
    |                    |   defaultStorageClass: general                   |
    |                    |   replicas: 2                                    |
    |                    |                                                  |
    | name               | rbd-provisioner                                  |
    | namespace          | kube-system                                      |
    | system_overrides   | classdefaults:                                   |
    |                    |   adminId: admin                                 |
    |                    |   adminSecretName: ceph-admin                    |
    |                    |   monitors: ['192.168.204.4:6789',               |
    |                    |'192.168.204.2:6789', '192.168.204.3:6789',       |
    |                    | '192.168.204.60:6789']                           |
    |                    | classes:                                         |
    |                    | - additionalNamespaces: [default, kube-public]   |
    |                    |   chunk_size: 64                                 |
    |                    |   crush_rule_name: storage_tier_ruleset          |
    |                    |   name: general                                  |
    |                    |   pool_name: kube-rbd                            |
    |                    |   replication: 2                                 |
    |                    |   userId: ceph-pool-kube-rbd                     |
    |                    |   userSecretName: ceph-pool-kube-rbd             |
    |                    | global: {defaultStorageClass: general, replicas: |
    |                    | 2}                                               |
    |                    |                                                  |
    | user_overrides     | None                                             |
    +--------------------+--------------------------------------------------+
  3. Create an overrides yaml file defining the new namespaces. In this example we will create the file /home/sysadmin/update-namespaces.yaml with the following content:

    ~(keystone_admin)]$ cat <<EOF > ~/update-namespaces.yaml
    
    classes:
    - additionalNamespaces: [default, kube-public, new-app, new-app2, new-app3]
      chunk_size: 64
      crush_rule_name: storage_tier_ruleset
      name: general
      pool_name: kube-rbd
      replication: 2
      userId: ceph-pool-kube-rbd
      userSecretName: ceph-pool-kube-rbd
    EOF
  4. Apply the overrides file to the chart.

    ~(keystone_admin)$ system helm-override-update  --values /home/sysadmin/update-namespaces.yaml platform-integ-apps rbd-provisioner kube-system
    +----------------+-----------------------------------------+
    | Property       | Value                                   |
    +----------------+-----------------------------------------+
    | name           | rbd-provisioner                         |
    | namespace      | kube-system                             |
    | user_overrides | classes:                                |
    |                | - additionalNamespaces:                 |
    |                |   - default                             |
    |                |   - kube-public                         |
    |                |   - new-app                             |
    |                |   - new-app2                            |
    |                |   - new-app3                            |
    |                |   chunk_size: 64                        |
    |                |   crush_rule_name: storage_tier_ruleset |
    |                |   name: general                         |
    |                |   pool_name: kube-rbd                   |
    |                |   replication: 2                        |
    |                |   userId: ceph-pool-kube-rbd            |
    |                |   userSecretName: ceph-pool-kube-rbd    |
    +----------------+-----------------------------------------+
  5. Confirm that the new overrides have been applied to the chart.

    The following output has been edited for brevity.

    ~(keystone_admin)$ system helm-override-show platform-integ-apps rbd-provisioner kube-system
    +---------------------+--------------------------------------+
    | Property           | Value                                  |
    +--------------------+------------------------------------- --+
    | combined_overrides | ...                                    |
    |                    |                                        |
    | name               |                                        |
    | namespace          |                                        |
    | system_overrides   | ...                                    |
    |                    |                                        |
    |                    |                                        |
    | user_overrides     | classes:                               |
    |                    | - additionalNamespaces:                |
    |                    |   - default                            |
    |                    |   - kube-public                        |
    |                    |   - new-app                            |
    |                    |   - new-app2                           |
    |                    |   - new-app3                           |
    |                    |   chunk_size: 64                       |
    |                    |   crush_rule_name: storage_tier_ruleset|
    |                    |   name: general                        |
    |                    |   pool_name: kube-rbd                  |
    |                    |   replication: 2                       |
    |                    |   userId: ceph-pool-kube-rbd           |
    |                    |   userSecretName: ceph-pool-kube-rbd   |
    +--------------------+----------------------------------------+
  6. Apply the overrides.

    1. Run the application-apply command.

      ~(keystone_admin)$ system application-apply platform-integ-apps
      +---------------+----------------------------------+
      | Property      | Value                            |
      +---------------+----------------------------------+
      | active        | True                             |
      | app_version   | 1.0-24                            |
      | created_at    | 2019-05-26T06:22:20.711732+00:00 |
      | manifest_file | manifest.yaml                    |
      | manifest_name | platform-integration-manifest    |
      | name          | platform-integ-apps              |
      | progress      | None                             |
      | status        | applying                         |
      | updated_at    | 2019-05-26T22:27:26.547181+00:00 |
      +---------------+----------------------------------+
    2. Monitor progress using the application-list command.

      ~(keystone_admin)$ system application-list
      +-------------+---------+---------------+---------------+---------+-----------+
      | application | version | manifest name | manifest file | status  | progress  |
      +-------------+---------+---------------+---------------+---------+-----------+
      | platform-   | 1.0-24  | platform      | manifest.yaml | applied | completed |
      | integ-apps  |         | -integration  |               |         |           |
      |             |         | -manifest     |               |         |           |
      +-------------+---------+---------------+---------------+---------+-----------+

    You can now create and mount PVCs from the default provisioner's general storage class, from within these application-specific namespaces.