diff --git a/microshift_install_get_ready/microshift-install-get-ready.adoc b/microshift_install_get_ready/microshift-install-get-ready.adoc index 373444be8255..7608fb2123b2 100644 --- a/microshift_install_get_ready/microshift-install-get-ready.adoc +++ b/microshift_install_get_ready/microshift-install-get-ready.adoc @@ -79,7 +79,7 @@ For most installation types, you must also take the following steps: * Decide whether you need to configure storage for the application and tasks you are using in your {microshift-short} cluster, or disable the {microshift-short} storage plug-in completely. ** For more information about creating volume groups and persistent volumes on {op-system-base}, see link:https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/configuring_and_managing_logical_volumes/overview-of-logical-volume-management_configuring-and-managing-logical-volumes[Overview of logical volume management]. -** For more information about the {microshift-short} plug-in, see xref:../microshift_storage/microshift-storage-plugin-overview.adoc#microshift-storage-plugin-overview[Dynamic storage using the LVMS plugin]. +** For more information about the {microshift-short} plug-in, see xref:../microshift_storage/microshift-storage-plugin-overview.adoc#[Dynamic storage using the LVMS plugin]. * Configure networking settings according to the access needs you plan for your {microshift-short} cluster and applications. Consider whether you want to use single or dual-stack networks, configure a firewall, or configure routes. ** For more information about {microshift-short} networking options, see xref:../microshift_networking/microshift-networking-settings.adoc#microshift-networking[Understanding networking settings]. diff --git a/microshift_storage/index.adoc b/microshift_storage/index.adoc index 2401089449e7..d6105b302022 100644 --- a/microshift_storage/index.adoc +++ b/microshift_storage/index.adoc @@ -26,7 +26,7 @@ Stateful applications deployed in containers require persistent storage. {micros [id="microshift-dynamic-provisioning-overview"] === Dynamic storage provisioning -Using dynamic provisioning allows you to create storage volumes on-demand, eliminating the need for pre-provisioned storage. For more information about how dynamic provisioning works in {product-title}, read xref:../microshift_storage/microshift-storage-plugin-overview.adoc#microshift-storage-plugin-overview[Dynamic provisioning]. +Using dynamic provisioning allows you to create storage volumes on-demand, eliminating the need for pre-provisioned storage. For more information about how dynamic provisioning works in {product-title}, read xref:../microshift_storage/microshift-storage-plugin-overview.adoc#[Dynamic provisioning using the LVMS plugin]. //[id="microshift-container-storage-interface"] //== Container Storage Interface (CSI) diff --git a/modules/dynamic-provisioning-available-plugins.adoc b/modules/dynamic-provisioning-available-plugins.adoc index 884fddd077d3..54eafa4a4ac9 100644 --- a/modules/dynamic-provisioning-available-plugins.adoc +++ b/modules/dynamic-provisioning-available-plugins.adoc @@ -28,7 +28,7 @@ ifndef::openshift-dedicated,openshift-rosa,openshift-rosa-hcp[] endif::openshift-dedicated,openshift-rosa,openshift-rosa-hcp[] |Amazon Elastic Block Store (Amazon EBS) -|`kubernetes.io/aws-ebs` +|`ebs.csi.aws.com` |For dynamic provisioning when using multiple clusters in different zones, tag each node with `Key=kubernetes.io/cluster/,Value=` where `` and `` are unique per cluster. diff --git a/modules/dynamic-provisioning-aws-definition.adoc b/modules/dynamic-provisioning-aws-definition.adoc index d601f440895e..f8cec602d22d 100644 --- a/modules/dynamic-provisioning-aws-definition.adoc +++ b/modules/dynamic-provisioning-aws-definition.adoc @@ -12,7 +12,7 @@ kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: <1> -provisioner: kubernetes.io/aws-ebs +provisioner: ebs.csi.aws.com parameters: type: io1 <2> iopsPerGB: "10" <3> diff --git a/modules/dynamic-provisioning-change-default-class.adoc b/modules/dynamic-provisioning-change-default-class.adoc index fa741550b5f3..105e45c743fc 100644 --- a/modules/dynamic-provisioning-change-default-class.adoc +++ b/modules/dynamic-provisioning-change-default-class.adoc @@ -29,8 +29,8 @@ $ oc get storageclass [source,terminal] ---- NAME TYPE -gp3 (default) kubernetes.io/aws-ebs <1> -standard kubernetes.io/aws-ebs +gp3 (default) ebs.csi.aws.com <1> +standard ebs.csi.aws.com ---- <1> `(default)` indicates the default storage class. @@ -72,6 +72,6 @@ $ oc get storageclass [source,terminal] ---- NAME TYPE -gp3 kubernetes.io/aws-ebs -standard (default) kubernetes.io/aws-ebs +gp3 ebs.csi.aws.com +standard (default) ebs.csi.aws.com ---- diff --git a/modules/dynamic-provisioning-storage-class-definition.adoc b/modules/dynamic-provisioning-storage-class-definition.adoc index 9604d7cb8323..1dbf015a17e3 100644 --- a/modules/dynamic-provisioning-storage-class-definition.adoc +++ b/modules/dynamic-provisioning-storage-class-definition.adoc @@ -11,6 +11,7 @@ The following resource shows the parameters and default values that you use to configure a storage class. This example uses the AWS ElasticBlockStore (EBS) object definition. +ifndef::openshift-rosa,openshift-rosa-hcp[] .Sample `StorageClass` definition [source,yaml] ---- @@ -32,3 +33,28 @@ parameters: <6> <4> (optional) Annotations for the storage class. <5> (required) The type of provisioner associated with this storage class. <6> (optional) The parameters required for the specific provisioner, this will change from plug-in to plug-in. +endif::openshift-rosa,openshift-rosa-hcp[] + +ifdef::openshift-rosa,openshift-rosa-hcp[] +.Sample `StorageClass` definition +[source,yaml] +---- +kind: StorageClass <1> +apiVersion: storage.k8s.io/v1 <2> +metadata: + name: <3> + annotations: <4> + storageclass.kubernetes.io/is-default-class: 'true' + ... +provisioner: ebs.csi.aws.com <5> +parameters: <6> + type: gp3-csi +... +---- +<1> (required) The API object type. +<2> (required) The current apiVersion. +<3> (required) The name of the storage class. +<4> (optional) Annotations for the storage class. +<5> (required) The type of provisioner associated with this storage class. +<6> (optional) The parameters required for the specific provisioner, this will change from plug-in to plug-in. +endif::openshift-rosa,openshift-rosa-hcp[] diff --git a/modules/persistent-storage-csi-drivers-supported.adoc b/modules/persistent-storage-csi-drivers-supported.adoc index 87e156697ca0..658e2f3d2019 100644 --- a/modules/persistent-storage-csi-drivers-supported.adoc +++ b/modules/persistent-storage-csi-drivers-supported.adoc @@ -15,14 +15,19 @@ ifndef::openshift-rosa,openshift-rosa-hcp[] The AWS EFS and GCP Filestore CSI drivers are not installed by default, and must be installed manually. For instructions on installing the AWS EFS CSI driver, see link:https://access.redhat.com/documentation/en-us/openshift_dedicated/4/html/storage/using-container-storage-interface-csi#osd-persistent-storage-aws-efs-csi[Setting up AWS Elastic File Service CSI Driver Operator]. For instructions on installing the GCP Filestore CSI driver, see link:https://access.redhat.com/documentation/en-us/openshift_container_platform/4.13/html/storage/using-container-storage-interface-csi#persistent-storage-csi-google-cloud-file-overview[Google Compute Platform Filestore CSI Driver Operator]. ==== endif::openshift-rosa,openshift-rosa-hcp[] + +ifdef::openshift-rosa,openshift-rosa-hcp[] +[IMPORTANT] +==== +The AWS EFS driver is not installed by default, and must be installed manually. For instructions about installing the AWS EFS CSI driver, see "AWS Elastic File Service CSI Driver Operator" in the _Additional resources_ section. +==== +endif::openshift-rosa,openshift-rosa-hcp[] + The following table describes the CSI drivers that are ifndef::openshift-dedicated[] -installed with {product-title} +installed with {product-title}, endif::openshift-dedicated[] -ifndef::openshift-rosa,openshift-rosa-hcp[] -supported by {product-title} -endif::openshift-rosa,openshift-rosa-hcp[] -and which CSI features they support, such as volume snapshots and resize. +supported by {product-title}, and which CSI features they support, such as volume snapshots and resize. ifndef::openshift-rosa,openshift-rosa-hcp[] [IMPORTANT] diff --git a/modules/persistent-storage-csi-efs-cross-account.adoc b/modules/persistent-storage-csi-efs-cross-account.adoc index 3ef7820fc51b..8bb13ec7fc8f 100644 --- a/modules/persistent-storage-csi-efs-cross-account.adoc +++ b/modules/persistent-storage-csi-efs-cross-account.adoc @@ -7,7 +7,14 @@ [id="persistent-storage-csi-efs-cross-account_{context}"] = AWS EFS CSI cross account support -Cross account support allows you to have an {product-title} cluster in one AWS account and mount your file system in another AWS account by using the AWS Elastic File System (EFS) Container Storage Interface (CSI) driver. +Cross account support allows you to have +ifdef::openshift-rosa,openshift-rosa-hcp[] + a {product-title} cluster +endif::openshift-rosa,openshift-rosa-hcp[] +ifndef::openshift-rosa,openshift-rosa-hcp[] + an {product-title} cluster +endif::openshift-rosa,openshift-rosa-hcp[] +in one AWS account and mount your file system in another AWS account by using the AWS Elastic File System (EFS) Container Storage Interface (CSI) driver. [NOTE] ==== @@ -16,7 +23,13 @@ Both the {product-title} cluster and EFS file system must be in the same region. .Prerequisites -* Access to an {product-title} cluster with administrator rights +* Access to +ifdef::openshift-rosa,openshift-rosa-hcp[] + a {product-title} cluster +endif::openshift-rosa,openshift-rosa-hcp[] +ifndef::openshift-rosa,openshift-rosa-hcp[] + an {product-title} cluster +endif::openshift-rosa,openshift-rosa-hcp[] cluster with administrator rights * Two valid AWS accounts diff --git a/modules/persistent-storage-csi-mysql-example.adoc b/modules/persistent-storage-csi-mysql-example.adoc index 8128b1f47c05..1250e1bc2e96 100644 --- a/modules/persistent-storage-csi-mysql-example.adoc +++ b/modules/persistent-storage-csi-mysql-example.adoc @@ -37,6 +37,7 @@ changes to the template. # oc get pvc ---- + +ifndef::openshift-dedicated,openshift-rosa,openshift-rosa-hcp[] .Example output [source,terminal] ---- @@ -45,3 +46,16 @@ ACCESS MODES STORAGECLASS AGE mysql Bound kubernetes-dynamic-pv-3271ffcb4e1811e8 1Gi RWO cinder 3s ---- +endif::openshift-dedicated,openshift-rosa,openshift-rosa-hcp[] +ifdef::openshift-dedicated,openshift-rosa,openshift-rosa-hcp[] +.Example output +[source,terminal] +---- +NAME STATUS VOLUME CAPACITY +mysql Bound kubernetes-dynamic-pv-3271ffcb4e1811e8 1Gi + +ACCESS MODES STORAGECLASS AGE +RWO gp3-csi 3s +---- +endif::openshift-dedicated,openshift-rosa,openshift-rosa-hcp[] + diff --git a/modules/storage-ephemeral-storage-manage.adoc b/modules/storage-ephemeral-storage-manage.adoc index f392fed62cee..745d071753b5 100644 --- a/modules/storage-ephemeral-storage-manage.adoc +++ b/modules/storage-ephemeral-storage-manage.adoc @@ -22,7 +22,7 @@ For example, the following quantities all represent approximately the same value [IMPORTANT] ==== -The suffixes for each byte quantity are case-sensitive. Be sure to use the correct case. Use the case-sensitive "M", such as used in "400M" to set the request at 400 megabytes. Use the case-sensitive "400Mi" to request 400 mebibytes. If you specify "400m" of ephemeral storage, the storage requests is only 0.4 bytes. +The suffixes for each byte quantity are case-sensitive. Be sure to use the correct case. Use the case-sensitive "M", such as used in "400M", to set the request at 400 megabytes. Use the case-sensitive "400Mi" to request 400 mebibytes. If you specify "400m" of ephemeral storage, the storage request is only 0.4 bytes. ==== [id=storage-ephemeral-storage-requests-limits_{context}] diff --git a/modules/storage-ephemeral-storage-overview.adoc b/modules/storage-ephemeral-storage-overview.adoc index 80a793d2e208..e825730d763f 100644 --- a/modules/storage-ephemeral-storage-overview.adoc +++ b/modules/storage-ephemeral-storage-overview.adoc @@ -25,4 +25,4 @@ ifdef::microshift[] Unlike persistent volumes, ephemeral storage is unstructured and the space is shared between all pods running on the node, other uses by the system, and {product-title}. The ephemeral storage framework allows pods to specify their transient local storage needs. It also allows {product-title} to protect the node against excessive use of local storage. endif::microshift[] -While the ephemeral storage framework allows administrators and developers to better manage local storage, I/O throughput and latency are not directly effected. \ No newline at end of file +While the ephemeral storage framework allows administrators and developers to better manage local storage, I/O throughput and latency are not directly affected. \ No newline at end of file diff --git a/modules/storage-ephemeral-vols-lifecycle.adoc b/modules/storage-ephemeral-vols-lifecycle.adoc index 9a1ce7984238..618ff01142ca 100644 --- a/modules/storage-ephemeral-vols-lifecycle.adoc +++ b/modules/storage-ephemeral-vols-lifecycle.adoc @@ -19,4 +19,4 @@ With immediate binding, the scheduler is forced to select a node that has access + This volume binding option is recommended for generic ephemeral volumes because then the scheduler can choose a suitable node for the pod. -In terms of resource ownership, a pod that has generic ephemeral storage is the owner of the PVCs that provide that ephemeral storage. When the pod is deleted, the Kubernetes garbage collector deletes the PVC, which then usually triggers deletion of the volume because the default reclaim policy of storage classes is to delete volumes. You can create quasi-ephemeral local storage by using a storage class with a reclaim policy of retain: the storage outlives the pod, and in this case, you must ensure that volume clean-up happens separately. While these PVCs exist, they can be used like any other PVC. In particular, they can be referenced as data source in volume cloning or snapshotting. The PVC object also holds the current status of the volume. +In terms of resource ownership, a pod that has generic ephemeral storage is the owner of the PVCs that provide that ephemeral storage. When the pod is deleted, the Kubernetes garbage collector deletes the PVC, which then usually triggers deletion of the volume because the default reclaim policy of storage classes is to delete volumes. You can create quasi-ephemeral local storage by using a storage class with a reclaim policy of retain: the storage outlives the pod, and in this case, you must ensure that volume clean-up happens separately. While these PVCs exist, they can be used like any other PVC. In particular, they can be referenced as data sources in volume cloning or snapshotting. The PVC object also holds the current status of the volume. diff --git a/modules/storage-expanding-filesystem-pvc.adoc b/modules/storage-expanding-filesystem-pvc.adoc index 55f35f93deb7..3a18bcc733ce 100644 --- a/modules/storage-expanding-filesystem-pvc.adoc +++ b/modules/storage-expanding-filesystem-pvc.adoc @@ -7,14 +7,18 @@ [id="expanding-pvc-filesystem_{context}"] = Expanding persistent volume claims (PVCs) with a file system -ifndef::microshift[] +ifndef::microshift,openshift-rosa,openshift-rosa-hcp[] Expanding PVCs based on volume types that need file system resizing, such as GCE, EBS, and Cinder, is a two-step process. First, expand the volume objects in the cloud provider. Second, expand the file system on the node. -endif::microshift[] +endif::microshift,openshift-rosa,openshift-rosa-hcp[] ifdef::microshift[] Expanding PVCs based on volume types that need file system resizing, such as GCE Persistent Disk volumes (gcePD), AWS Elastic Block Store EBS (EBS), and Cinder, is a two-step process. First, expand the volume objects in the cloud provider. Second, expand the file system on the node. endif::microshift[] +ifdef::openshift-rosa,openshift-rosa-hcp[] +Expanding PVCs based on volume types that need file system resizing, such as AWS Elastic Block Store EBS (EBS) is a two-step process. First, expand the volume objects in the cloud provider. Second, expand the file system on the node. +endif::openshift-rosa,openshift-rosa-hcp[] + Expanding the file system on the node only happens when a new pod is started with the volume. .Prerequisites diff --git a/modules/storage-persistent-storage-pv.adoc b/modules/storage-persistent-storage-pv.adoc index d568dc9cf837..0b8992ccce2d 100644 --- a/modules/storage-persistent-storage-pv.adoc +++ b/modules/storage-persistent-storage-pv.adoc @@ -51,7 +51,7 @@ endif::openshift-rosa,openshift-rosa-hcp[] // - GlusterFS // - Ceph RBD // - OpenStack Cinder -- AWS Elastic Block Store (EBS) +- AWS Elastic Block Store (EBS), which is installed by default. ifdef::openshift-enterprise,openshift-webscale,openshift-origin,openshift-rosa,openshift-rosa-hcp[] - AWS Elastic File Store (EFS) endif::openshift-enterprise,openshift-webscale,openshift-origin,openshift-rosa,openshift-rosa-hcp[] @@ -144,9 +144,12 @@ ifdef::openshift-enterprise,openshift-webscale,openshift-origin[] endif::[] |=== -- -1. RWOP uses the SELinux mount feature. This feature is driver dependent, and enabled by default in ODF, AWS EBS, Azure Disk, GCP PD, IBM Cloud Block Storage volume, Cinder, and vSphere. For third-party drivers, please contact your storage vendor. +1. RWOP uses the SELinux mount feature. This feature is driver dependent, and enabled by default in AWS EBS +ifndef::openshift-dedicated,openshift-rosa,openshift-rosa-hcp[] +, Azure Disk, GCP PD, IBM Cloud Block Storage volume, Cinder, vSphere, +endif::openshift-dedicated,openshift-rosa,openshift-rosa-hcp[] +and {rh-storage-first}. For third-party drivers, contact your storage vendor. -- -endif::microshift[] ifndef::microshift[] .Supported access modes for persistent volumes @@ -302,6 +305,7 @@ The following PV types support mount options: // - GlusterFS // - Ceph RBD - AWS Elastic Block Store (EBS) +- AWS Elastic File Storage (EFS) ifndef::openshift-dedicated,openshift-rosa,openshift-rosa-hcp[] - Azure Disk - Azure File @@ -315,7 +319,7 @@ ifndef::openshift-dedicated,openshift-rosa,openshift-rosa-hcp[] - Local volume - NFS - {rh-storage-first} (Ceph RBD only) -- CIFS/SMB +- CIFS/SMB - VMware vSphere [NOTE] diff --git a/storage/container_storage_interface/persistent-storage-csi-aws-efs.adoc b/storage/container_storage_interface/persistent-storage-csi-aws-efs.adoc index 3be300a4ca04..1527f13009d3 100644 --- a/storage/container_storage_interface/persistent-storage-csi-aws-efs.adoc +++ b/storage/container_storage_interface/persistent-storage-csi-aws-efs.adoc @@ -70,9 +70,11 @@ include::modules/persistent-storage-csi-efs-driver-install.adoc[leveloffset=+2] include::modules/storage-create-storage-class.adoc[leveloffset=+1] include::modules/storage-create-storage-class-console.adoc[leveloffset=+2] include::modules/storage-create-storage-class-cli.adoc[leveloffset=+2] -ifndef::openshift-dedicated[] + +ifdef::openshift-rosa,openshift-rosa-hcp[] include::modules/persistent-storage-csi-efs-cross-account.adoc[leveloffset=+1] -endif::openshift-dedicated[] +endif::openshift-rosa,openshift-rosa-hcp[] + include::modules/persistent-storage-csi-efs-create-volume.adoc[leveloffset=+1] include::modules/persistent-storage-csi-dynamic-provisioning-aws-efs.adoc[leveloffset=+1] diff --git a/storage/container_storage_interface/persistent-storage-csi.adoc b/storage/container_storage_interface/persistent-storage-csi.adoc index 01fc6fd6c1b6..0fc3e9a59149 100644 --- a/storage/container_storage_interface/persistent-storage-csi.adoc +++ b/storage/container_storage_interface/persistent-storage-csi.adoc @@ -24,6 +24,12 @@ include::modules/persistent-storage-csi-driver-daemonset.adoc[leveloffset=+2] include::modules/persistent-storage-csi-drivers-supported.adoc[leveloffset=+1] +ifdef::openshift-rosa,openshift-rosa-hcp[] +[role="_additional-resources"] +.Additional resources +* xref:../../storage/container_storage_interface/persistent-storage-csi-aws-efs.adoc#persistent-storage-csi-aws-efs[AWS Elastic File Service CSI Driver Operator] +endif::openshift-rosa,openshift-rosa-hcp[] + include::modules/persistent-storage-csi-dynamic-provisioning.adoc[leveloffset=+1] include::modules/persistent-storage-csi-mysql-example.adoc[leveloffset=+1] diff --git a/storage/persistent_storage/persistent-storage-aws.adoc b/storage/persistent_storage/persistent-storage-aws.adoc index 3c1ac325bad9..dea493a2fc30 100644 --- a/storage/persistent_storage/persistent-storage-aws.adoc +++ b/storage/persistent_storage/persistent-storage-aws.adoc @@ -7,25 +7,21 @@ include::_attributes/common-attributes.adoc[] toc::[] ifdef::openshift-rosa,openshift-rosa-hcp,openshift-dedicated[] -{product-title} clusters are prebuilt with four storage classes that use Amazon Elastic Block Store (Amazon EBS) volumes. These storage classes are ready to use and some familiarity with Kubernetes and AWS is assumed. +{product-title} clusters are prebuilt with two storage classes that use Amazon Elastic Block Store (Amazon EBS) volumes. These storage classes are ready to use and some familiarity with Kubernetes and AWS is assumed. -Following are the four prebuilt storage classes: +The following are the two prebuilt storage classes: [options="header"] |=== | Name | Provisioner -| gp2 | kubernetes.io/aws-ebs - | gp2-csi | ebs.csi.aws.com -| gp3 (default) | kubernetes.io/aws-ebs - -| gp3-csi | ebs.csi.aws.com +| gp3-csi (default) | ebs.csi.aws.com |=== -The gp3 storage class is set as default; however, you can select any of the storage classes as the default storage class. +The gp3-csi storage class is set as default; however, you can select any of the storage classes as the default storage class. endif::openshift-rosa,openshift-rosa-hcp,openshift-dedicated[] ifndef::openshift-rosa,openshift-rosa-hcp,openshift-dedicated[]