├── .github ├── CODEOWNERS ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── question.md │ └── request-for-enhancement.md └── workflows │ └── antora.yml ├── .gitignore ├── CONTRIBUTING.adoc ├── README.md ├── antora-playbook-local.yml ├── antora-playbook.yml ├── imgs ├── Github-get-raw-link.png ├── open-PR-dashboard.png ├── open-PR-long-2.png └── open-PR-long.png ├── misc ├── ansible-deployment │ ├── README.md │ ├── add_machinesets.yml │ ├── check_nodes.yml │ ├── create_ocs_cluster.yml │ ├── install_ceph_tools.yml │ ├── install_ocs_operator.yml │ └── ocs_deploy.yml ├── deploy_quickly.sh └── workerocs-machines.yaml ├── training ├── antora.yml └── modules │ ├── ROOT │ └── pages │ │ └── index.adoc │ ├── infra-nodes │ ├── nav.adoc │ └── pages │ │ └── ocs4-infra-nodes.adoc │ ├── ocs4 │ ├── attachments │ │ ├── .file-uploader-zone-deployment.yaml.swp │ │ ├── backup.yaml │ │ ├── cluster-monitoring-config.yaml │ │ ├── cluster-workerocs-us-east-2-ebs.yaml │ │ ├── cluster-workerocs-us-east-2.yaml │ │ ├── cluster-workerocs.yaml │ │ ├── configurable-rails-app.yaml │ │ ├── create_machinesets.sh │ │ ├── file-uploader-zone-deployment.yaml │ │ ├── my-shared-storage-snapshot.yaml │ │ ├── obc_app_example.yaml │ │ ├── ocs-storagecluster-ceph-mirror.yaml │ │ ├── photo-album.tar.gz │ │ ├── postgresql-clone.yaml │ │ ├── rbd-mirror.yaml │ │ ├── replicapool.yaml │ │ └── restore.yaml │ ├── images │ │ ├── ACM-25-application-successfull.png │ │ ├── ACM-411-Create-application.png │ │ ├── ACM-Cluster-set-created.png │ │ ├── ACM-Cluster-sets.png │ │ ├── ACM-Create-application.png │ │ ├── ACM-Installed-Operator-noversion.png │ │ ├── ACM-Installed-Operator.png │ │ ├── ACM-OperatorHub.png │ │ ├── ACM-Submariner-addon-installed.png │ │ ├── ACM-Submariner-addon.png │ │ ├── ACM-application-delete-resources.png │ │ ├── ACM-application-delete.png │ │ ├── ACM-application-form1.png │ │ ├── ACM-application-form2.png │ │ ├── ACM-application-form2a-metro.png │ │ ├── ACM-application-form2a.png │ │ ├── ACM-application-form3.png │ │ ├── ACM-application-form3a.png │ │ ├── ACM-application-successfull.png │ │ ├── ACM-bos-25-application-successfull.png │ │ ├── ACM-bos-Submariner-addon-installed.png │ │ ├── ACM-bos-application-form3a.png │ │ ├── ACM-bos-managed-clusters-import.png │ │ ├── ACM-local-cluster-import.png │ │ ├── ACM-managed-clusters-import.png │ │ ├── KMS-Vault-Adv-Settings.jpg │ │ ├── KMS-Vault-Settings.jpg │ │ ├── KMS-Vault-StorageClass.jpg │ │ ├── MCG-Console-photo-album-buckets.png │ │ ├── MCG-Console-photo-album-objects.png │ │ ├── MCO-apply-drpolicy.png │ │ ├── MCO-bos-apply-drpolicy.png │ │ ├── MCO-bos-drpolicy-selections.png │ │ ├── MCO-bos-select-application.png │ │ ├── MCO-create-first-drpolicy.png │ │ ├── MCO-drpolicy-replication-interval.png │ │ ├── MCO-drpolicy-selections.png │ │ ├── MCO-select-application.png │ │ ├── OCP-copy-login-command.png │ │ ├── OCP4-OADP-operator-installed.png │ │ ├── OCP4-OADP-operatorhub-continue.png │ │ ├── OCP4-OADP-operatorhub-filter.png │ │ ├── OCP4-OADP-operatorhub-install.png │ │ ├── OCP4-OADP-operatorhub-install2.png │ │ ├── OCP4-OCS4-Clone-PVC-config.png │ │ ├── OCP4-OCS4-Clone-PVC-view.png │ │ ├── OCP4-OCS4-Clone-PVC.png │ │ ├── OCP4-OCS4-Snapshot-config.png │ │ ├── OCP4-OCS4-Snapshot-restore-config.png │ │ ├── OCP4-OCS4-Snapshot-restore.png │ │ ├── OCP4-OCS4-Snapshot.png │ │ ├── OCS-OCP-CephCluster-Alerts.png │ │ ├── OCS-OCP-CephClusterCriticallyFull.png │ │ ├── OCS-OCP-CephClusterNearFull.png │ │ ├── OCS-OCP-CephClusterReadOnly.png │ │ ├── OCS-OCP-CephOSD-Alerts.png │ │ ├── OCS-OCP-OperatorHub.png │ │ ├── OCS-PVCResize-choose-expand-menu.png │ │ ├── OCS-PVCResize-enter-new-size.png │ │ ├── OCS-PVCResize-pvcnearfull-alert.png │ │ ├── OCS-PVCResize-select-project.png │ │ ├── OCS-PVCResize-verify-resize-worked2.png │ │ ├── OCS-Pods-Diagram.png │ │ ├── OCS-dashboard-healthy.png │ │ ├── OCS-noobaa-dashboard-healthy.png │ │ ├── OCS4-4.7-OCP-CreateStorageCluster.png │ │ ├── OCS4-4.7-OCP-Encryption-PV-Keys.png │ │ ├── OCS4-4.7-OCP-Encryption-PVParameters.png │ │ ├── OCS4-4.7-OCP-Encryption-SC-Basic.png │ │ ├── OCS4-4.7-OCP-Encryption-SCList.png │ │ ├── OCS4-4.7-OCP-Encryption-StorageCluster-Advanced.png │ │ ├── OCS4-4.7-OCP-Encryption-StorageCluster-Basic.png │ │ ├── OCS4-4.7-OCP-Encryption-StorageCluster-Node.png │ │ ├── OCS4-4.7-OCP-Encryption-StorageCluster-Ready.png │ │ ├── OCS4-4.7-OCP-Encryption-StorageCluster-Review.png │ │ ├── OCS4-4.7-OCP-Encryption-VaultLogin.png │ │ ├── OCS4-4.7-OCP-Encryption-VaultOCSExpansionKeyList.png │ │ ├── OCS4-4.7-OCP-Encryption-VaultOCSKeyList.png │ │ ├── OCS4-4.7-OCP-Encryption-VaultSecretEngines.png │ │ ├── OCS4-4.7-OCP-InstalledOperators.png │ │ ├── OCS4-4.7-OCP-InstalledOperatorsEncryption.png │ │ ├── OCS4-4.7-OCP-MachineSet-2-CountMenu.png │ │ ├── OCS4-4.7-OCP-MachineSet-2-Raw.png │ │ ├── OCS4-4.7-OCP-MachineSet-3-CountMenu.png │ │ ├── OCS4-4.7-OCP-MachineSet-3-Raw.png │ │ ├── OCS4-4.7-OCP-MachineSet-Scale-0.png │ │ ├── OCS4-4.7-OCP-MachineSet-Scale-2.png │ │ ├── OCS4-4.7-OCP-MachineSet-Scaled.png │ │ ├── OCS4-4.7-OCP-Nodes-Scaled.png │ │ ├── OCS4-4.7-OCP-OperatorHub-Filter.png │ │ ├── OCS4-4.7-OCP4-ClassArbiterScreen.png │ │ ├── OCS4-4.7-OCP4-CreateStorageCluster.png │ │ ├── OCS4-4.7-OCP4-InstalledOperators.png │ │ ├── OCS4-4.7-OCP4-InternalAttached.png │ │ ├── OCS4-4.7-OCP4-OperatorHub-Install.png │ │ ├── OCS4-4.7-OCP4-OperatorHub-InstalledOperators.png │ │ ├── OCS4-4.7-OCP4-OperatorHub-LSOInstall.png │ │ ├── OCS4-4.7-OCP4-OperatorHub-LSOSubscribe.png │ │ ├── OCS4-4.7-OCP4-OperatorHub-Subscribe.png │ │ ├── OCS4-4.7-OCP4-StorageClusterArbiterScreen.png │ │ ├── OCS4-4.7-OCP4-StorageClusterArbiterScreenNew.png │ │ ├── OCS4-4.7-OCP4-StorageClusterDetails.png │ │ ├── OCS4-4.7-OCP4-StorageClusterDetailsNew.png │ │ ├── OCS4-4.7-OCP4-StorageClusterLSOConfiguration.png │ │ ├── OCS4-4.7-OCP4-StorageClusterLSOStorageClass.png │ │ ├── OCS4-4.7-OCP4-StorageClusterReview.png │ │ ├── OCS4-4.7-OCP4-StorageClusterReviewNew.png │ │ ├── OCS4-OCP-OperatorHub-Filter.png │ │ ├── OCS4-OCP-OperatorHub-LSOFilter.png │ │ ├── OCS4-OCP4-OperatorHub-Install.png │ │ ├── OCS4-OCP4-OperatorHub-Subscribe.png │ │ ├── OCS4-OCP4-Overview-Location.png │ │ ├── OCS4-OCP4-Storage-Cluster-overview-reachit.png │ │ ├── OCS4-OCP4-View-Operator.png │ │ ├── OCS4-OCP4-config-screen-all.png │ │ ├── OCS4-OCP4-config-screen-storage-cluster.png │ │ ├── OCS4-OCP4-finished-cluster-install.png │ │ ├── OCS4-add-capacity.png │ │ ├── OCS4-config-screen-partial1.png │ │ ├── OCS4-config-screen-partial2.png │ │ ├── OCS4-config-screen-partial3.png │ │ ├── OCS4-metrodr-zones.png │ │ ├── OCS_arch.png │ │ ├── ODF-4.7-Hashicorp-Vault_DownloadPage.png │ │ ├── ODF-4.7-OCP4-ApplicationArticles-FO-FB.png │ │ ├── ODF-4.7-OCP4-multicluster-dr-architecture.png │ │ ├── ODF-4.7-OCP4-multicluster-dr-lab.png │ │ ├── ODF-connect-external-storage.png │ │ ├── ODF-create-storagesystem.png │ │ ├── ODF-external-storage-details.png │ │ ├── ODF-mirror-peer-yaml.png │ │ ├── ODF-multicluster-orchestrator-install.png │ │ ├── ODF-multicluster-orchestrator-installed.png │ │ ├── ODF-multicluster-orchestrator.png │ │ ├── ODF_download_script_external_storage.png │ │ ├── ODR-411-Cluster-operator.png │ │ ├── ODR-411-DRPlacementControl-delete.png │ │ ├── ODR-411-DRPlacementControl-failback-metro.png │ │ ├── ODR-411-DRPlacementControl-failover-metro.png │ │ ├── ODR-411-DRPlacementControl-instance.png │ │ ├── ODR-Cluster-operator.png │ │ ├── ODR-DRPlacementControl-create-instance.png │ │ ├── ODR-DRPlacementControl-delete.png │ │ ├── ODR-DRPlacementControl-failback-metro.png │ │ ├── ODR-DRPlacementControl-failback.png │ │ ├── ODR-DRPlacementControl-failover-metro.png │ │ ├── ODR-DRPlacementControl-failover.png │ │ ├── ODR-DRPlacementControl-instance.png │ │ ├── ODR-DRPolicy-API.png │ │ ├── ODR-DRPolicy-create-instance.png │ │ ├── ODR-bos-411-DRPlacementControl-failback.png │ │ ├── ODR-bos-411-DRPlacementControl-failover.png │ │ ├── RHCS-stretch-cluster-arbiter.png │ │ ├── System-Name-MCG-Console.png │ │ ├── ceph101-cephfs.png │ │ ├── ceph101-crushfromobjecttoosd.png │ │ ├── ceph101-dataprotection.png │ │ ├── ceph101-differentstoragetypes.png │ │ ├── ceph101-krbd.png │ │ ├── ceph101-librados.png │ │ ├── ceph101-librbd.png │ │ ├── ceph101-overview.png │ │ ├── ceph101-rados.png │ │ ├── ceph101-rbdlayout.png │ │ ├── ceph101-rgw.png │ │ ├── ceph101-thefullpicture.png │ │ ├── ceph101-timeline.png │ │ ├── metrics-alertingcontextualmenu.png │ │ ├── metrics-alertinghomepage.png │ │ ├── metrics-alertingleftpanemenu.png │ │ ├── metrics-alertingstatusfilter.png │ │ ├── metrics-alertingviewrule.png │ │ ├── metrics-complexcephgraph.png │ │ ├── metrics-complexcephquery.png │ │ ├── metrics-complexocpgraph.png │ │ ├── metrics-metricsleftpanemenu.png │ │ ├── metrics-queryfield.png │ │ ├── metrics-simplecephgraph.png │ │ ├── metrics-simplecephquery.png │ │ ├── photo-album-images.png │ │ ├── photo-album-select-upload.png │ │ ├── rails-postgresql-failed.png │ │ ├── sample-app-down-primary.png │ │ └── uploader_screen_upload.png │ ├── nav.adoc │ ├── pages │ │ ├── ocs.adoc │ │ ├── ocs4-additionalfeatures-dbwal.adoc │ │ ├── ocs4-additionalfeatures-devtype.adoc │ │ ├── ocs4-additionalfeatures-override.adoc │ │ ├── ocs4-additionalfeatures-segregation.adoc │ │ ├── ocs4-cluster-downsize.adoc │ │ ├── ocs4-cluster-storage-quotas.adoc │ │ ├── ocs4-enable-rgw.adoc │ │ ├── ocs4-encryption.adoc │ │ ├── ocs4-install-no-ui-1scale.adoc │ │ ├── ocs4-install-no-ui.adoc │ │ ├── ocs4-metro-multi-no-ui.adoc │ │ ├── ocs4-metro-multi-rhcs-aws.adoc │ │ ├── ocs4-metro-stretched-no-ui.adoc │ │ ├── ocs4-metro-stretched-ui.adoc │ │ ├── ocs4-metro-stretched.adoc │ │ ├── ocs4-multisite-replication.adoc │ │ ├── odf.adoc │ │ ├── odf4-install-no-ui.adoc │ │ ├── odf4-multisite-ramen.adoc │ │ ├── odf410-metro-ramen.adoc │ │ ├── odf410-multisite-ramen.adoc │ │ ├── odf411-metro-ramen.adoc │ │ ├── odf411-multisite-ramen.adoc │ │ └── rhcs-stretched-deploy.adoc │ └── partials │ │ ├── deploy_toolbox.adoc │ │ ├── dr_multicluster_sample_application.adoc │ │ ├── dr_sample_application.adoc │ │ ├── install_oadp_ui.adoc │ │ └── metro-multi-basictesting.adoc │ └── ocs4perf │ ├── attachments │ ├── Dockerfile │ ├── cephfs-ext-loop.yaml │ ├── cephfs-loop.yaml │ ├── cephrbd-ext-loop.yaml │ ├── cephrbd-loop.yaml │ ├── file-random-read-4k.sh │ ├── file-random-read-4m.sh │ ├── file-random-readwrite-4k.sh │ ├── file-random-readwrite-4m.sh │ ├── file-random-write-4k.sh │ ├── file-random-write-4m.sh │ ├── file-sequential-read-1g.sh │ ├── file-sequential-read-4m.sh │ ├── file-sequential-readwrite-1g.sh │ ├── file-sequential-readwrite-4m.sh │ ├── file-sequential-write-1g.sh │ ├── file-sequential-write-4m.sh │ ├── obc-loop.yaml │ ├── obc-rgw-ext.yaml │ ├── obc-rgw.yaml │ ├── sysbench-rwo-idle.yaml │ ├── sysbench-rwo-rread-4k.yaml │ ├── sysbench-rwo-rread-4m.yaml │ ├── sysbench-rwo-rreadwrite-4k.yaml │ ├── sysbench-rwo-rreadwrite-4m.yaml │ ├── sysbench-rwo-rwrite-4k.yaml │ ├── sysbench-rwo-rwrite-4m.yaml │ ├── sysbench-rwo-sread-1g.yaml │ ├── sysbench-rwo-sread-4m.yaml │ ├── sysbench-rwo-sreadwrite-1g.yaml │ ├── sysbench-rwo-sreadwrite-4m.yaml │ ├── sysbench-rwo-swrite-1g.yaml │ ├── sysbench-rwo-swrite-4m.yaml │ ├── sysbench-rwx-idle.yaml │ ├── sysbench-rwx-rread-4k.yaml │ ├── sysbench-rwx-rread-4m.yaml │ ├── sysbench-rwx-rreadwrite-4k.yaml │ ├── sysbench-rwx-rreadwrite-4m.yaml │ ├── sysbench-rwx-rwrite-4k.yaml │ ├── sysbench-rwx-rwrite-4m.yaml │ ├── sysbench-rwx-sread-1g.yaml │ ├── sysbench-rwx-sread-4m.yaml │ ├── sysbench-rwx-sreadwrite-1g.yaml │ ├── sysbench-rwx-sreadwrite-4m.yaml │ ├── sysbench-rwx-swrite-1g.yaml │ └── sysbench-rwx-swrite-4m.yaml │ ├── nav.adoc │ └── pages │ └── ocs4perf.adoc └── ui ├── .nojekyll ├── css └── site.css ├── img ├── header_logo.svg └── header_logo_reverse.svg ├── partials ├── footer-content.hbs └── header-content.hbs └── ui.yml /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # These owners will be the default owners for everything in 2 | # the repo. Unless a later match takes precedence, 3 | # These people will be requested for 4 | # review when someone opens a pull request. 5 | * @netzzer @likid0 6 | 7 | training/modules/infra-nodes @mmgaggle @netzzer 8 | training/modules/ocs4perf @netzzer 9 | training/modules/ocs4/pages/ocs4-enable-rgw.adoc @guimou -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: You followed the guide and something is not working 4 | title: '' 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **Section in which you face the issue** 14 | Provide the Section title or a link to the section 15 | 16 | **To Reproduce** 17 | Steps to reproduce the behavior: 18 | 1. Go to '...' 19 | 2. Click on '....' 20 | 3. Scroll down to '....' 21 | 4. See error 22 | 23 | **Expected behavior** 24 | A clear and concise description of what you expected to happen. 25 | 26 | **Screenshots** 27 | If applicable, add screenshots to help explain your problem. 28 | 29 | **Environment** 30 | - OS: [e.g. OSX, Fedora,...] 31 | - Browser [e.g. chrome, safari] 32 | 33 | **Did you use OCP deployed by the RHPDS workshop?** 34 | Yes/No 35 | 36 | **Additional context** 37 | Add any other context about the problem here. 38 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/question.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Question 3 | about: Anything that is not a Bug or RFE 4 | title: '' 5 | labels: question 6 | assignees: '' 7 | 8 | --- 9 | 10 | 11 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/request-for-enhancement.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Request for Enhancement 3 | about: You have an idea for additional content 4 | title: '' 5 | labels: enhancement, need review 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Do you need more detailed steps on an existing section? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I don't fully understand what I'm doing in this section [...] 12 | 13 | **Describe what you would like to see** 14 | A clear and concise description of what you want to experience. 15 | 16 | **Describe alternatives you've considered** 17 | Maybe all we're missing is a link to already existing documentation elsewhere? 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the request. 21 | -------------------------------------------------------------------------------- /.github/workflows/antora.yml: -------------------------------------------------------------------------------- 1 | 2 | name: Build and Deploy Site with Antora 3 | 4 | on: 5 | push: 6 | branches: 7 | - master 8 | env: 9 | SITE_DIR: 'site' 10 | jobs: 11 | build_site: 12 | name: "Build site with Antora" 13 | runs-on: [ubuntu-latest] 14 | steps: 15 | - name: Checkout 16 | uses: actions/checkout@v2 17 | - name: "Generate site using Antora in Docker" 18 | run: docker run -v $PWD:/antora --rm -t antora/antora --cache-dir=./.cache/antora antora-playbook.yml 19 | - name: "List folder" 20 | run: | 21 | ls -ltr $GITHUB_WORKSPACE/build/ 22 | ls -ltr $GITHUB_WORKSPACE/build/site 23 | - name: "Upload generated site" 24 | uses: actions/upload-artifact@v1.0.0 25 | with: 26 | name: site 27 | path: "${{ github.workspace }}/build/${{ env.SITE_DIR }}" 28 | deploy_site: 29 | runs-on: [ubuntu-latest] 30 | needs: [build_site] 31 | name: "Deploy GitHub Pages" 32 | steps: 33 | - name: Setup Node.js for use with actions 34 | uses: actions/setup-node@v2-beta 35 | with: 36 | node-version: '12' 37 | - name: Checkout 38 | uses: actions/checkout@v2 39 | - name: Download generated site 40 | uses: actions/download-artifact@v1 41 | with: 42 | name: site 43 | path: "${{ github.workspace }}/${{ env.SITE_DIR }}" 44 | - name: Deploy to GitHub Pages 45 | uses: JamesIves/github-pages-deploy-action@3.2.1 46 | with: 47 | # ACCESS_TOKEN: # optional 48 | GITHUB_TOKEN: "${{ github.token}}" 49 | FOLDER: "${{ env.SITE_DIR }}" 50 | BRANCH: 'gh-pages' 51 | COMMIT_MESSAGE: "[CI] Publish Documentation for ${{ github.sha }}" -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.html 2 | *.pdf 3 | build/ 4 | .cache/ -------------------------------------------------------------------------------- /CONTRIBUTING.adoc: -------------------------------------------------------------------------------- 1 | # Contributing 2 | :toc: right 3 | :toclevels: 2 4 | :icons: font 5 | :language: bash 6 | :numbered: 7 | // Activate experimental attribute for Keyboard Shortcut keys 8 | :experimental: 9 | 10 | Then contributing to this repository, please follow the below style guide. 11 | 12 | ## Pull Request Policy 13 | 14 | Since people have started using this repository, no un-reviewed code will be allowed in the master branch. 15 | 16 | Follow the <> procedure to add your content. This applies to new documents as well as additions to already existing documents. 17 | 18 | Once you are satisfied with your content and it has been verified by you, open a pull request to merge your branch into master. 19 | 20 | To open a PR you can follow these steps: 21 | 22 | .If you have recently pushed to your branch, Github will allow you to quickly open a PR 23 | image::imgs/open-PR-dashboard.png[] 24 | 25 | .If you did not recently push to your branch, go to the branch overview: 26 | image::imgs/open-PR-long.png[] 27 | 28 | .Start a PR from the overview 29 | image::imgs/open-PR-long-2.png[] 30 | 31 | ## Adding Content 32 | 33 | - Create a new branch in which you work. The branch name should include your name. 34 | * Including your name helps us in finding out if the branch can be recycled 35 | - Only work inside of your branch 36 | - Write your content in ASCIIdoc format - respect the ASCIIdoc styling information below 37 | 38 | ## Testing work locally 39 | 40 | To test your work locally before we deploy it to master, you can execute this command in the root of your Git project: 41 | 42 | [source] 43 | ---- 44 | # Podman 45 | podman run -v $PWD:/antora:Z --rm -t antora/antora --cache-dir=./.cache/antora antora-playbook-local.yml 46 | # Docker 47 | docker run -v $PWD:/antora --rm -t antora/antora --cache-dir=./.cache/antora antora-playbook-local.yml 48 | ---- 49 | 50 | Afterwards you will find a new folder `build`. Point your browser to build/site/index.html in this git repository to preview your changes. 51 | 52 | 53 | ## ASCIIdoc styling 54 | 55 | ### Document header 56 | 57 | It is best practice to copy this to the beginning of your workshop: 58 | 59 | ---- 60 | = YOUR TITLE 61 | :icons: font 62 | :source-language: bash 63 | :numbered: 64 | // Activate experimental attribute for Keyboard Shortcut keys 65 | :experimental: 66 | ---- 67 | 68 | This produces good defaults for your document. 69 | 70 | ### Executable commands 71 | 72 | To make our lifes easier once we move over to Homeroom, please tag each executable command and follow this styling: 73 | 74 | [source,role="execute"] 75 | ---- 76 | oc get replicaset -n openshift-monitoring 77 | ---- 78 | .Example output: 79 | ---- 80 | NAME DESIRED CURRENT READY AGE 81 | cluster-monitoring-operator-84cd9df668 1 1 1 6d23h 82 | grafana-5db6fd97f8 1 1 1 6d23h 83 | kube-state-metrics-895899678 1 1 1 6d23h 84 | openshift-state-metrics-77d5f699d8 1 1 1 6d23h 85 | prometheus-adapter-57db7c5495 0 0 0 6d4h 86 | prometheus-adapter-67469c5b8b 0 0 0 6d23h 87 | prometheus-adapter-74f79b678f 0 0 0 6d4h 88 | prometheus-adapter-7cd7578f49 2 2 2 6d 89 | prometheus-operator-5df7bc8b4f 0 0 0 6d23h 90 | prometheus-operator-6584955c55 0 0 0 6d23h 91 | prometheus-operator-cbfd89f9 1 1 1 6d23h 92 | telemeter-client-66db9b8bb5 0 0 0 6d23h 93 | telemeter-client-7c65855db4 1 1 1 6d23h 94 | ---- 95 | 96 | 97 | ### Do not require people to pull the repository 98 | 99 | Expect people to not pull the ocs-training repository. 100 | 101 | If you want to apply a specific file, use the raw link from within Github 102 | 103 | image::imgs/Github-get-raw-link.png[] 104 | 105 | [red]*Do NOT do this:* 106 | 107 | Create kafka topic 108 | ``` 109 | oc apply -f 02-kafka-topic.yaml 110 | ``` 111 | 112 | [green]*Instead DO this:* 113 | 114 | Create kafka topic 115 | ---- 116 | oc apply -f https://github.com/red-hat-storage/ocs-training/raw/master/ocs4kafka/02-kafka-topic.yaml 117 | ---- 118 | 119 | ### Keyboard shortcuts 120 | 121 | Keyboard shortcuts should leverage the built-in ASCIIdoc format 122 | 123 | [red]*Do NOT do this:* 124 | 125 | press ``ctrl+c`` to cancel 126 | 127 | [green]*Instead DO this:* 128 | 129 | press kbd:[Ctrl+C] to cancel 130 | 131 | 132 | For this to work, you need to first activate the experimental features in your document by adding this to the top: 133 | 134 | ---- 135 | // Activate experimental attribute for Keyboard Shortcut keys 136 | :experimental: 137 | ---- 138 | 139 | ### Kubernetes objects should be printed in bold text 140 | 141 | [red]*Do NOT do this:* 142 | 143 | Once you finished these steps, you can see that we successfully mounted the rwx pvc inside of our toolbox pod, while it is also still mounted on the registry pods. 144 | 145 | [green]*Instead DO this:* 146 | 147 | Once you finished these steps, you can see that we successfully mounted the *RWX PVC* inside of our toolbox *Pod*, while it is also still mounted on the registry *Pods*. 148 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # OCS-training 2 | 3 | This repository contains several different documents regarding uncommon or new installation options or best practices. 4 | All content is ment to be consumed via [the website](https://red-hat-storage.github.io/ocs-training) 5 | All activites were developed for OpenShift Container Platform (OCP 4) running on AWS in the `us-east-1` region. Running these activites on OCP 4.x on VMWare or other clouds should be possible, but is not tested. 6 | 7 | Please go to https://red-hat-storage.github.io/ocs-training now 8 | 9 | ## Contribute content 10 | 11 | We welcome any contributions! If you find something that is wrong, either create an issue in Github or (even better) hand in a PR. 12 | Check out the [Contribution guide](CONTRIBUTING.adoc) for our guidelines. 13 | -------------------------------------------------------------------------------- /antora-playbook-local.yml: -------------------------------------------------------------------------------- 1 | site: 2 | title: OCS Training 3 | url: https://red-hat-storage.github.io/ocs-training 4 | start_page: training::index.adoc 5 | robots: allow 6 | content: 7 | sources: 8 | # - url: https://github.com/red-hat-storage/ocs-training.git 9 | - url: . 10 | branches: [HEAD] 11 | start_paths: [training] 12 | edit_url: "{web_url}/edit/{refname}/{path}" 13 | - url: git@github.com:red-hat-data-services/RDRhelper.git 14 | branches: [master] 15 | start_paths: [docs] 16 | edit_url: "{web_url}/edit/{refname}/{path}" 17 | ui: 18 | bundle: 19 | url: https://gitlab.com/antora/antora-ui-default/-/jobs/artifacts/master/raw/build/ui-bundle.zip?job=bundle-stable 20 | snapshot: true 21 | supplemental_files: ui 22 | # output: 23 | # clean: true 24 | # dir: ./site 25 | -------------------------------------------------------------------------------- /antora-playbook.yml: -------------------------------------------------------------------------------- 1 | site: 2 | title: OCS Training 3 | url: https://red-hat-storage.github.io/ocs-training 4 | start_page: training::index.adoc 5 | robots: allow 6 | keys: 7 | google_analytics: "G-LGCEEZGN54" 8 | content: 9 | sources: 10 | - url: https://github.com/red-hat-storage/ocs-training.git 11 | # - url: . 12 | branches: [master] 13 | start_paths: [training] 14 | edit_url: "{web_url}/edit/{refname}/{path}" 15 | - url: git@github.com:red-hat-data-services/RDRhelper.git 16 | branches: [master] 17 | start_paths: [docs] 18 | edit_url: "{web_url}/edit/{refname}/{path}" 19 | ui: 20 | bundle: 21 | url: https://gitlab.com/antora/antora-ui-default/-/jobs/artifacts/master/raw/build/ui-bundle.zip?job=bundle-stable 22 | snapshot: true 23 | supplemental_files: ui 24 | # output: 25 | # clean: true 26 | # dir: ./site 27 | -------------------------------------------------------------------------------- /imgs/Github-get-raw-link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/imgs/Github-get-raw-link.png -------------------------------------------------------------------------------- /imgs/open-PR-dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/imgs/open-PR-dashboard.png -------------------------------------------------------------------------------- /imgs/open-PR-long-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/imgs/open-PR-long-2.png -------------------------------------------------------------------------------- /imgs/open-PR-long.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/imgs/open-PR-long.png -------------------------------------------------------------------------------- /misc/ansible-deployment/README.md: -------------------------------------------------------------------------------- 1 | # Ansible scripts to deploy OCS4 on OCP4.2 2 | 3 | ## Prerequisites 4 | 5 | - Ansible ([Installation guide](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html)) 6 | - Python packages: openshift, requests 7 | 8 | ## Installation 9 | 10 | Connect to your OpenShift Cluster: 11 | 12 | ```bash 13 | oc login --token= --server= 14 | ``` 15 | 16 | Launch with: 17 | 18 | ```bash 19 | ansible-playbook ocs-deploy.yaml 20 | ``` 21 | -------------------------------------------------------------------------------- /misc/ansible-deployment/add_machinesets.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - hosts: localhost 3 | vars: 4 | ansible_python_interpreter: "{{ ansible_playbook_python }}" 5 | gather_facts: no 6 | 7 | tasks: 8 | - name: validate machine sets 9 | block: 10 | - name: Checking current machinesets 11 | k8s_facts: 12 | api_version: machine.openshift.io/v1beta1 13 | kind: MachineSet 14 | namespace: openshift-machine-api 15 | register: r_get_machinesets 16 | - name: Parsing data 17 | set_fact: 18 | machinesets: "{{ r_get_machinesets | json_query('resources[*].spec.selector.matchLabels.\"machine.openshift.io/cluster-api-machineset\"') | unique | count }}" 19 | - debug: 20 | msg: 21 | - You currently have {{ machinesets|int }} machinesets 22 | - fail: 23 | msg: You don't have the right number of machinesets (6) 24 | when: (machinesets|int != 6) 25 | 26 | - name: add machine sets 27 | block: 28 | - name: Getting cluster id 29 | set_fact: 30 | cluster_id: "{{ r_get_machinesets | json_query('resources[0].metadata.labels.\"machine.openshift.io/cluster-api-cluster\"') }}" 31 | - name: Getting new machinesets definitions 32 | uri: 33 | url: https://raw.githubusercontent.com/red-hat-storage/ocs-training/master/misc/workerocs-machines.yaml 34 | return_content: yes 35 | register: machinesets_yml 36 | - name: Adding new machinesets 37 | openshift_raw: 38 | api: v1 39 | state: present 40 | definition: "{{ machinesets_yml.content | regex_replace('cluster-28cf-t22gs',cluster_id) }}" 41 | 42 | - name: validate machinesets 43 | block: 44 | - name: Waiting for new machinesets readiness 45 | k8s_facts: 46 | api_version: machine.openshift.io/v1beta1 47 | kind: MachineSet 48 | namespace: openshift-machine-api 49 | register: r_get_machinesets 50 | until: r_get_machinesets | json_query('resources[?spec.template.metadata.labels.\"machine.openshift.io/cluster-api-machine-role\"==\'workerocs\'].status.readyReplicas') | count | int == 3 51 | retries: 30 52 | delay: 15 53 | - debug: 54 | msg: 55 | - "You currently have {{ r_get_machinesets | json_query('resources[?spec.template.metadata.labels.\"machine.openshift.io/cluster-api-machine-role\"==\"workerocs\"].status.readyReplicas') | count }} ready OCS worker machinesets" 56 | 57 | - name: validate OCP worker nodes 58 | block: 59 | - name: Validating new OCP worker nodes readiness 60 | k8s_facts: 61 | api_version: v1 62 | kind: Node 63 | label_selectors: node-role.kubernetes.io/worker 64 | register: worker_nodes 65 | until: worker_nodes | json_query('resources[*].metadata.name') | unique | count >= 5 66 | retries: 30 67 | delay: 15 68 | - debug: 69 | msg: 70 | - "You currently have {{ worker_nodes | json_query('resources[*].metadata.name') | unique | count }} OCP worker nodes" 71 | -------------------------------------------------------------------------------- /misc/ansible-deployment/check_nodes.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - hosts: localhost 3 | vars: 4 | ansible_python_interpreter: "{{ ansible_playbook_python }}" 5 | gather_facts: no 6 | 7 | tasks: 8 | - python_requirements_facts: 9 | dependencies: 10 | - openshift 11 | - requests 12 | 13 | - name: validate that the OCP environment has 3 master and 3 worker nodes 14 | block: 15 | - name: Getting nodes list 16 | k8s_facts: 17 | kind: Node 18 | register: Nodes 19 | - name: Finding masters and workers 20 | set_fact: 21 | workers: "{{ Nodes | json_query('resources[*].metadata.labels.\"node-role.kubernetes.io/worker\"') | count }}" 22 | masters: "{{ Nodes | json_query('resources[*].metadata.labels.\"node-role.kubernetes.io/master\"') | count }}" 23 | - debug: 24 | msg: 25 | - "OK" 26 | - "Workers: {{ workers }}" 27 | - "Masters: {{ masters }}" 28 | - name: Fail on problem 29 | fail: 30 | msg: You don't have enough masters or workers 31 | when: (workers|int < 2 or masters|int < 3) 32 | 33 | -------------------------------------------------------------------------------- /misc/ansible-deployment/create_ocs_cluster.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - hosts: localhost 3 | vars: 4 | ansible_python_interpreter: "{{ ansible_playbook_python }}" 5 | gather_facts: no 6 | 7 | tasks: 8 | 9 | - name: install ocs cluster 10 | block: 11 | - name: Getting definition file 12 | uri: 13 | url: https://raw.githubusercontent.com/openshift/ocs-operator/release-4.2/deploy/crds/ocs_v1_storagecluster_cr.yaml 14 | return_content: yes 15 | register: ocs_cluster_yml 16 | - name: Creating OCS cluster 17 | k8s: 18 | api: v1 19 | state: present 20 | definition: "{{ ocs_cluster_yml.content | regex_replace('name: example-storagecluster','name: ocs-storagecluster') }}" 21 | 22 | - name: validate ocs cluster 23 | block: 24 | - name: Validating MON Pods are running 25 | k8s_facts: 26 | api_version: v1 27 | kind: Pod 28 | namespace: openshift-storage 29 | label_selectors: 30 | - app = rook-ceph-mon 31 | register: mons 32 | until: (mons | json_query('resources[*].status.conditions[?type==`Ready`][].status')) == ["True","True","True"] 33 | retries: 30 34 | delay: 15 35 | - debug: 36 | msg: 37 | - "All MON pods are running" 38 | 39 | 40 | -------------------------------------------------------------------------------- /misc/ansible-deployment/install_ceph_tools.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - hosts: localhost 3 | vars: 4 | ansible_python_interpreter: "{{ ansible_playbook_python }}" 5 | gather_facts: no 6 | 7 | tasks: 8 | 9 | - name: install Ceph toolbox 10 | block: 11 | - name: Getting definition file 12 | uri: 13 | url: https://raw.githubusercontent.com/rook/rook/release-1.1/cluster/examples/kubernetes/ceph/toolbox.yaml 14 | return_content: yes 15 | register: ocs_cluster_yml 16 | - name: Installing Ceph toolbox 17 | k8s: 18 | api: v1 19 | state: present 20 | definition: "{{ ocs_cluster_yml.content | regex_replace('namespace: rook-ceph','namespace: openshift-storage') }}" 21 | 22 | - name: validate Ceph toolbox 23 | block: 24 | - name: Validating Ceph toolbox is running 25 | k8s_facts: 26 | api_version: v1 27 | kind: Pod 28 | namespace: openshift-storage 29 | label_selectors: 30 | - app = rook-ceph-tools 31 | register: tools 32 | until: (tools | json_query('resources[*].status.conditions[?type==`Ready`][].status')) == ["True"] 33 | retries: 30 34 | delay: 15 35 | - debug: 36 | msg: 37 | - "Ceph toolbox is running" 38 | 39 | 40 | -------------------------------------------------------------------------------- /misc/ansible-deployment/install_ocs_operator.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - hosts: localhost 3 | vars: 4 | ansible_python_interpreter: "{{ ansible_playbook_python }}" 5 | gather_facts: no 6 | 7 | tasks: 8 | 9 | - name: install ocs operator 10 | block: 11 | - name: Getting operator definition 12 | uri: 13 | url: https://raw.githubusercontent.com/openshift/ocs-operator/release-4.2/deploy/deploy-with-olm.yaml 14 | return_content: yes 15 | register: ocs_operator_yml 16 | - name: Adding operator 17 | k8s: 18 | api: v1 19 | state: present 20 | definition: "{{ ocs_operator_yml.content }}" 21 | 22 | - name: validate operators 23 | block: 24 | - name: Validating new operators are running 25 | k8s_facts: 26 | api_version: operators.coreos.com/v1alpha1 27 | kind: ClusterServiceVersion 28 | namespace: openshift-storage 29 | register: operators 30 | # | to_json | from_json | needed because of this bug: https://github.com/ansible/ansible/issues/27299 31 | until: ((operators | to_json | from_json | json_query('resources[?contains(metadata.name, \'local-storage-operator\')].status.phase | [0]')) == "Succeeded") and ((operators | to_json | from_json | json_query('resources[?contains(metadata.name, \'ocs-operator\')].status.phase | [0]')) == "Succeeded") 32 | retries: 30 33 | delay: 15 34 | - debug: 35 | msg: 36 | - "Operators are ready" 37 | 38 | 39 | -------------------------------------------------------------------------------- /misc/ansible-deployment/ocs_deploy.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - import_playbook: check_nodes.yml 3 | - import_playbook: add_machinesets.yml 4 | - import_playbook: install_ocs_operator.yml 5 | - import_playbook: create_ocs_cluster.yml 6 | - import_playbook: install_ceph_tools.yml 7 | 8 | -------------------------------------------------------------------------------- /misc/deploy_quickly.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Stop on first error 4 | set -e 5 | 6 | CLUSTERID=$(oc get machineset -n openshift-machine-api -o jsonpath='{.items[0].metadata.labels.machine\.openshift\.io/cluster-api-cluster}') 7 | 8 | curl -s https://raw.githubusercontent.com/red-hat-storage/ocs-training/master/misc/workerocs-machines.yaml | sed "s/cluster-28cf-t22gs/$CLUSTERID/g" | oc apply -f - 9 | # cat workerocs-machines.yaml | sed "s/cluster-28cf-t22gs/$CLUSTERID/g" | oc apply -f - 10 | 11 | oc apply -f https://raw.githubusercontent.com/openshift/ocs-operator/release-4.2/deploy/deploy-with-olm.yaml 12 | 13 | # Wait until we have three machinesets - each with one availableReplica 14 | # Ignore errors temporarily 15 | echo "Waiting on OCS workers to become available" 16 | set +e 17 | until [[ $(oc get machinesets -n openshift-machine-api -l machine.openshift.io/cluster-api-machine-type=workerocs -o jsonpath='{.items[*].status.availableReplicas}') = "1 1 1" ]] 18 | do 19 | echo -n "." 20 | sleep 5 21 | done 22 | set -e 23 | echo "Worker OCS machines are ready now" 24 | 25 | # Create the OCS cluster 26 | curl -s https://raw.githubusercontent.com/openshift/ocs-operator/release-4.2/deploy/crds/ocs_v1_storagecluster_cr.yaml | sed 's/name: example-storagecluster/name: ocs-storagecluster/g' | oc apply -f - 27 | # Create the Ceph toolbox 28 | curl -s https://raw.githubusercontent.com/rook/rook/release-1.1/cluster/examples/kubernetes/ceph/toolbox.yaml | sed 's/namespace: rook-ceph/namespace: openshift-storage/g'| oc apply -f - 29 | 30 | # Wait for tools pod to be ready 31 | oc wait -n openshift-storage -l app=rook-ceph-tools po --for=condition=Ready --timeout=5m 32 | 33 | # Waiting for MON Pods 34 | echo "Waiting for all three MON Pods to appear" 35 | until [[ $(kubectl get pods -l app=rook-ceph-mon -o 'jsonpath={..status.conditions[?(@.type=="Ready")].status}') = "True True True" ]]; 36 | do 37 | echo -n "." 38 | sleep 5 39 | done 40 | -------------------------------------------------------------------------------- /training/antora.yml: -------------------------------------------------------------------------------- 1 | name: training 2 | title: OCS Installation and Configuration 3 | version: master 4 | nav: 5 | - modules/ocs4/nav.adoc 6 | - modules/ROOT/nav.adoc 7 | - modules/infra-nodes/nav.adoc 8 | - modules/ocs4perf/nav.adoc 9 | -------------------------------------------------------------------------------- /training/modules/ROOT/pages/index.adoc: -------------------------------------------------------------------------------- 1 | = OCS Training 2 | 3 | Welcome to the ocs-training! 4 | Note - this is not Red Hat official documentation for OCS. For the official documentation, please see https://access.redhat.com/documentation/en-us/red_hat_openshift_container_storage 5 | 6 | Discover our documents in the left navigation menu 7 | -------------------------------------------------------------------------------- /training/modules/infra-nodes/nav.adoc: -------------------------------------------------------------------------------- 1 | 2 | * xref:ocs4-infra-nodes.adoc[Deploying on Infra nodes] 3 | -------------------------------------------------------------------------------- /training/modules/infra-nodes/pages/ocs4-infra-nodes.adoc: -------------------------------------------------------------------------------- 1 | = Install Openshift Container Storage (OCS) on OpenShift infrastructure nodes 2 | 3 | == Why use Infrastructure nodes? 4 | 5 | Using Infrastructure nodes to schedule OpenShift Container Storage (OCS) 6 | resources will save on OpenShift Container Platform (OCP) subscription 7 | costs. Any OCP node that has a `infra` node-role label will only require 8 | OCS subscription but no OCP subscription. # Background Currently the 9 | Machine API cannot handle the creation of nodes carrying only the 10 | `node-role.kubernetes.io/infra` node-role label. Nodes created with the 11 | Machine API can only have node-roles added along with the default 12 | `node-role.kubernetes.io/worker`. 13 | 14 | A common approach is desirable for consistency across environments, both 15 | those with and without Machine API support (reference section below for 16 | manual configuration of `infa` nodes). Because of this, it is highly 17 | recommended in all cases to have nodes with the dual `worker/infra` 18 | node-role or label. # Anatomy of an Infrastructure node Infrastructure 19 | nodes for use with OCS have a few attributes. The `infra` node-role 20 | label is required to ensure the node does not consume OCP entitlements. 21 | Effectively, the `infra` node-role label is responsible for ensuring 22 | only OCS entitlements are necessary for the nodes running OCS. 23 | 24 | * Labeled with `node-role.kubernetes.io/infra` 25 | 26 | Adding a OCS taint with a NoSchedule effect is also required so that the 27 | `infra` node will only schedule OCS resources. 28 | 29 | * Tainted with `node.ocs.openshift.io/storage="true"` 30 | 31 | The label identifies the OCP node as a `infra` node so that OCP 32 | subscription cost is not applied. The taint prevents non-OCS resources 33 | to be scheduled on the tainted nodes. If using local storage devices for 34 | OCS then a toleration will need to be added to allow 35 | `Local Storage Operator` (LSO) resources to schedule on the `infra` 36 | nodes. Reference section below for how this is done. 37 | 38 | Example of the taint and labels required on infrastructure node that 39 | will be used to run OCS services: 40 | 41 | .... 42 | spec: 43 | taints: 44 | - effect: NoSchedule 45 | key: node.ocs.openshift.io/storage 46 | value: "true" 47 | metadata: 48 | creationTimestamp: null 49 | labels: 50 | node-role.kubernetes.io/worker: "" 51 | node-role.kubernetes.io/infra: "" 52 | cluster.ocs.openshift.io/openshift-storage: "" 53 | .... 54 | 55 | == Machine sets for creating Infrastructure nodes 56 | 57 | If the Machine API is supported in the 58 | environment, then labels should be added to the templates for the 59 | Machine Sets that will be provisioning the infrastructure nodes. Avoid 60 | the anti-pattern of adding labels manually to nodes created by the 61 | machine API. Doing so is analogous to adding labels to pods created by a 62 | deployment. In both cases, when the pod/node fails, the replacement 63 | pod/node will not have the appropriate labels. 64 | 65 | NOTE: In EC2 environments, you will want three machine sets, each 66 | configured to provision infrastructure nodes in a distinct availability 67 | zone (i.e, us-east-2a, us-east-2b, us-east-2c). Currently OCS does not 68 | support deploying in more than 3 availability zones. 69 | 70 | Example Machine Set template that creates nodes with the appropriate 71 | taint and labels required for infrastructure nodes that will be used to 72 | run OCS services: 73 | 74 | .... 75 | template: 76 | metadata: 77 | creationTimestamp: null 78 | labels: 79 | machine.openshift.io/cluster-api-cluster: kb-s25vf 80 | machine.openshift.io/cluster-api-machine-role: worker 81 | machine.openshift.io/cluster-api-machine-type: worker 82 | machine.openshift.io/cluster-api-machineset: kb-s25vf-infra-us-west-2a 83 | spec: 84 | taints: 85 | - effect: NoSchedule 86 | key: node.ocs.openshift.io/storage 87 | value: "true" 88 | metadata: 89 | creationTimestamp: null 90 | labels: 91 | node-role.kubernetes.io/infra: "" 92 | cluster.ocs.openshift.io/openshift-storage: "" 93 | .... 94 | 95 | == Manual creation of Infrastructure nodes 96 | 97 | Only when the Machine APi is not supported in the environment should 98 | labels be directly applied to nodes. Manual creation will require that 99 | at least 3 OCP worker nodes are available to schedule OCS services and 100 | that these nodes have sufficient CPU and memory resources. To avoid the 101 | OCP subscription cost the following is required: 102 | 103 | .... 104 | oc label node node-role.kubernetes.io/infra="" 105 | oc label node cluster.ocs.openshift.io/openshift-storage="" 106 | .... 107 | 108 | Adding a NoSchedule OCS taint is also required so that the `infra` node 109 | will only schedule OCS resources and repel any other non-OCS workloads. 110 | 111 | .... 112 | oc adm taint node node.ocs.openshift.io/storage="true":NoSchedule 113 | .... 114 | 115 | == Warning: Do not remove worker node-role 116 | 117 | The removal of the `worker` node-role is not recommended. If already 118 | removed, it should be added again to each `infra` node. Adding a `infra` 119 | node-role and OCS taint is sufficient to conform to entitlement 120 | exemption requirements, and it is not necessary to remove the `worker` 121 | node-role. In fact, removing the `worker` node-role from `infra` nodes 122 | can cause issues unless changes are made both to the OpenShift scheduler 123 | and to `MachineConfig` resources. 124 | 125 | == Toleration for Local Storage Operator 126 | 127 | When local storage devices are used for creating the OCS cluster (i.e., 128 | AWS i3en.3xlarge instance type) then LSO will need to installed before 129 | OCS can be deployed. In order to allow the LSO pods to schedule on the 130 | `infra` nodes with the OCS NoSchedule taint, a toleration has to be 131 | added to the `LocalVolume` custom resource file. 132 | 133 | Here is an example with the toleration 134 | `node.ocs.openshift.io/storage=true` added. 135 | 136 | .... 137 | apiVersion: local.storage.openshift.io/v1 138 | kind: LocalVolume 139 | metadata: 140 | name: local-block 141 | namespace: local-storage 142 | labels: 143 | app: ocs-storagecluster 144 | spec: 145 | tolerations: 146 | - key: "node.ocs.openshift.io/storage" 147 | value: "true" 148 | effect: NoSchedule 149 | nodeSelector: 150 | nodeSelectorTerms: 151 | - matchExpressions: 152 | - key: cluster.ocs.openshift.io/openshift-storage 153 | operator: In 154 | values: 155 | - '' 156 | storageClassDevices: 157 | - storageClassName: localblock 158 | volumeMode: Block 159 | devicePaths: 160 | ... 161 | .... 162 | 163 | This will allow LSO pods to schedule and PVs to be created from devices 164 | listed under `devicePaths:`. The recommended practice is to use 165 | /dev/disk/by-id/ to identify the storage devices that will be used for 166 | OCS. 167 | -------------------------------------------------------------------------------- /training/modules/ocs4/attachments/.file-uploader-zone-deployment.yaml.swp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/attachments/.file-uploader-zone-deployment.yaml.swp -------------------------------------------------------------------------------- /training/modules/ocs4/attachments/backup.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: velero.io/v1 2 | kind: Backup 3 | metadata: 4 | namespace: oadp-operator 5 | name: backup1 6 | spec: 7 | includedNamespaces: 8 | - my-database-app 9 | excludedResources: 10 | - imagetags.image.openshift.io 11 | snapshotVolumes: false 12 | -------------------------------------------------------------------------------- /training/modules/ocs4/attachments/cluster-monitoring-config.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: cluster-monitoring-config 5 | namespace: openshift-monitoring 6 | data: 7 | config.yaml: | 8 | prometheusK8s: 9 | volumeClaimTemplate: 10 | metadata: 11 | name: prometheusdb 12 | spec: 13 | storageClassName: ocs-storagecluster-ceph-rbd 14 | resources: 15 | requests: 16 | storage: 40Gi 17 | alertmanagerMain: 18 | volumeClaimTemplate: 19 | metadata: 20 | name: alertmanager 21 | spec: 22 | storageClassName: ocs-storagecluster-ceph-rbd 23 | resources: 24 | requests: 25 | storage: 40Gi 26 | -------------------------------------------------------------------------------- /training/modules/ocs4/attachments/create_machinesets.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ##Check if we have jq 4 | if ! command -v jq &> /dev/null 5 | then 6 | echo "jq could not be found" 7 | exit 8 | fi 9 | 10 | ## Create Machineset from previous template just modifiying the instance type 11 | for MACHINESET in $(oc get -n openshift-machine-api machinesets -o name | grep -v ocs ) 12 | do 13 | oc get -n openshift-machine-api "$MACHINESET" -o json | jq ' 14 | del( .metadata.uid, .metadata.managedFields, .metadata.selfLink, .metadata.resourceVersion, .metadata.creationTimestamp, .metadata.generation, .status) | 15 | (.metadata.name, .spec.selector.matchLabels["machine.openshift.io/cluster-api-machineset"], .spec.template.metadata.labels["machine.openshift.io/cluster-api-machineset"]) |= sub("worker";"workerocs") | 16 | (.spec.template.spec.providerSpec.value.instanceType) |= "m5.4xlarge" | 17 | (.spec.template.spec.metadata.labels["cluster.ocs.openshift.io/openshift-storage"]) |= ""' | oc apply -f - 18 | done 19 | 20 | ## If using a RHPDS env with single AZ, create 3 replicas in same AZ. 21 | if [ $(oc get -n openshift-machine-api machinesets -o name | grep ocs | wc -l) -eq 1 ] 22 | then 23 | OCS_MACHINESET=$(oc get -n openshift-machine-api machinesets -o name | grep ocs) 24 | oc scale -n openshift-machine-api "$OCS_MACHINESET" --replicas=3 25 | fi 26 | -------------------------------------------------------------------------------- /training/modules/ocs4/attachments/file-uploader-zone-deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | annotations: 5 | deployment.kubernetes.io/revision: "4" 6 | image.openshift.io/triggers: '[{"from":{"kind":"ImageStreamTag","name":"file-uploader:latest"},"fieldPath":"spec.template.spec.containers[?(@.name==\"file-uploader\")].image"}]' 7 | openshift.io/generated-by: OpenShiftNewApp 8 | labels: 9 | app: file-uploader 10 | app.kubernetes.io/component: file-uploader 11 | app.kubernetes.io/instance: file-uploader 12 | manager: kube-controller-manager 13 | name: file-uploader 14 | namespace: my-shared-storage 15 | spec: 16 | progressDeadlineSeconds: 600 17 | replicas: 4 18 | revisionHistoryLimit: 10 19 | selector: 20 | matchLabels: 21 | deployment: file-uploader 22 | strategy: 23 | rollingUpdate: 24 | maxSurge: 25% 25 | maxUnavailable: 25% 26 | type: RollingUpdate 27 | template: 28 | metadata: 29 | annotations: 30 | openshift.io/generated-by: OpenShiftNewApp 31 | creationTimestamp: null 32 | labels: 33 | deployment: file-uploader 34 | spec: 35 | containers: 36 | - image: image-registry.openshift-image-registry.svc:5000/my-shared-storage/file-uploader:latest 37 | imagePullPolicy: IfNotPresent 38 | name: file-uploader 39 | ports: 40 | - containerPort: 8080 41 | protocol: TCP 42 | - containerPort: 8443 43 | protocol: TCP 44 | resources: {} 45 | terminationMessagePath: /dev/termination-log 46 | terminationMessagePolicy: File 47 | volumeMounts: 48 | - mountPath: /opt/app-root/src/uploaded 49 | name: my-shared-storage 50 | dnsPolicy: ClusterFirst 51 | nodeSelector: 52 | node-role.kubernetes.io/worker: "" 53 | restartPolicy: Always 54 | schedulerName: default-scheduler 55 | securityContext: {} 56 | terminationGracePeriodSeconds: 30 57 | topologySpreadConstraints: 58 | - labelSelector: 59 | matchLabels: 60 | deployment: file-uploader 61 | maxSkew: 1 62 | topologyKey: topology.kubernetes.io/zone 63 | whenUnsatisfiable: DoNotSchedule 64 | - labelSelector: 65 | matchLabels: 66 | deployment: file-uploader 67 | maxSkew: 1 68 | topologyKey: kubernetes.io/hostname 69 | whenUnsatisfiable: ScheduleAnyway 70 | volumes: 71 | - name: my-shared-storage 72 | persistentVolumeClaim: 73 | claimName: my-shared-storage 74 | -------------------------------------------------------------------------------- /training/modules/ocs4/attachments/my-shared-storage-snapshot.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: snapshot.storage.k8s.io/v1beta1 2 | kind: VolumeSnapshot 3 | metadata: 4 | name: my-shared-storage-snapshot 5 | namespace: my-shared-storage 6 | spec: 7 | volumeSnapshotClassName: ocs-storagecluster-cephfsplugin-snapclass 8 | source: 9 | persistentVolumeClaimName: my-shared-storage 10 | -------------------------------------------------------------------------------- /training/modules/ocs4/attachments/obc_app_example.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: obc-test 5 | --- 6 | apiVersion: objectbucket.io/v1alpha1 7 | kind: ObjectBucketClaim 8 | metadata: 9 | name: obc-test 10 | namespace: obc-test 11 | spec: 12 | generateBucketName: "obc-test-noobaa" 13 | storageClassName: openshift-storage.noobaa.io 14 | --- 15 | apiVersion: batch/v1 16 | kind: Job 17 | metadata: 18 | name: obc-test 19 | namespace: obc-test 20 | labels: 21 | app: obc-test 22 | spec: 23 | template: 24 | metadata: 25 | labels: 26 | app: obc-test 27 | spec: 28 | restartPolicy: OnFailure 29 | containers: 30 | - image: amazon/aws-cli:latest 31 | command: ["sh"] 32 | args: 33 | - '-c' 34 | - 'aws --endpoint https://$BUCKET_HOST:$BUCKET_PORT --no-verify-ssl s3 ls' 35 | name: obc-test 36 | env: 37 | - name: BUCKET_NAME 38 | valueFrom: 39 | configMapKeyRef: 40 | name: obc-test 41 | key: BUCKET_NAME 42 | - name: BUCKET_HOST 43 | valueFrom: 44 | configMapKeyRef: 45 | name: obc-test 46 | key: BUCKET_HOST 47 | - name: BUCKET_PORT 48 | valueFrom: 49 | configMapKeyRef: 50 | name: obc-test 51 | key: BUCKET_PORT 52 | - name: AWS_DEFAULT_REGION 53 | valueFrom: 54 | configMapKeyRef: 55 | name: obc-test 56 | key: BUCKET_REGION 57 | - name: AWS_ACCESS_KEY_ID 58 | valueFrom: 59 | secretKeyRef: 60 | name: obc-test 61 | key: AWS_ACCESS_KEY_ID 62 | - name: AWS_SECRET_ACCESS_KEY 63 | valueFrom: 64 | secretKeyRef: 65 | name: obc-test 66 | key: AWS_SECRET_ACCESS_KEY 67 | -------------------------------------------------------------------------------- /training/modules/ocs4/attachments/ocs-storagecluster-ceph-mirror.yaml: -------------------------------------------------------------------------------- 1 | allowVolumeExpansion: true 2 | apiVersion: storage.k8s.io/v1 3 | kind: StorageClass 4 | metadata: 5 | name: ocs-storagecluster-ceph-mirror 6 | parameters: 7 | clusterID: openshift-storage 8 | csi.storage.k8s.io/controller-expand-secret-name: rook-csi-rbd-provisioner 9 | csi.storage.k8s.io/controller-expand-secret-namespace: openshift-storage 10 | csi.storage.k8s.io/fstype: ext4 11 | csi.storage.k8s.io/node-stage-secret-name: rook-csi-rbd-node 12 | csi.storage.k8s.io/node-stage-secret-namespace: openshift-storage 13 | csi.storage.k8s.io/provisioner-secret-name: rook-csi-rbd-provisioner 14 | csi.storage.k8s.io/provisioner-secret-namespace: openshift-storage 15 | imageFeatures: layering 16 | imageFormat: "2" 17 | pool: replicapool 18 | provisioner: openshift-storage.rbd.csi.ceph.com 19 | reclaimPolicy: Retain 20 | volumeBindingMode: Immediate 21 | -------------------------------------------------------------------------------- /training/modules/ocs4/attachments/photo-album.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/attachments/photo-album.tar.gz -------------------------------------------------------------------------------- /training/modules/ocs4/attachments/postgresql-clone.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: postgresql-clone 5 | namespace: my-database-app 6 | spec: 7 | storageClassName: ocs-storagecluster-ceph-rbd 8 | accessModes: 9 | - ReadWriteOnce 10 | resources: 11 | requests: 12 | storage: 15Gi 13 | dataSource: 14 | kind: PersistentVolumeClaim 15 | name: postgresql 16 | -------------------------------------------------------------------------------- /training/modules/ocs4/attachments/rbd-mirror.yaml: -------------------------------------------------------------------------------- 1 | kind: CephRBDMirror 2 | metadata: 3 | name: rbd-mirror 4 | namespace: openshift-storage 5 | spec: 6 | # the number of rbd-mirror daemons to deploy 7 | count: 1 8 | peers: 9 | secretNames: 10 | # Secret containing the peer token 11 | - SECRET 12 | resources: 13 | # The pod requests and limits 14 | limits: 15 | cpu: "1" 16 | memory: "2Gi" 17 | requests: 18 | cpu: "1" 19 | memory: "2Gi" 20 | -------------------------------------------------------------------------------- /training/modules/ocs4/attachments/replicapool.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: ceph.rook.io/v1 2 | kind: CephBlockPool 3 | metadata: 4 | name: replicapool 5 | namespace: openshift-storage 6 | spec: 7 | replicated: 8 | size: 3 9 | mirroring: 10 | enabled: true 11 | mode: image 12 | # specify the schedules on which snapshots should be taken 13 | snapshotSchedules: 14 | - interval: 1h 15 | # startTime: 00:00:00-05:00 16 | statusCheck: 17 | mirror: 18 | disabled: false 19 | interval: 60s 20 | -------------------------------------------------------------------------------- /training/modules/ocs4/attachments/restore.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: velero.io/v1 2 | kind: Restore 3 | metadata: 4 | namespace: oadp-operator 5 | name: restore1 6 | spec: 7 | backupName: backup1 8 | includedNamespaces: 9 | - my-database-app 10 | -------------------------------------------------------------------------------- /training/modules/ocs4/images/ACM-25-application-successfull.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ACM-25-application-successfull.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ACM-411-Create-application.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ACM-411-Create-application.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ACM-Cluster-set-created.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ACM-Cluster-set-created.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ACM-Cluster-sets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ACM-Cluster-sets.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ACM-Create-application.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ACM-Create-application.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ACM-Installed-Operator-noversion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ACM-Installed-Operator-noversion.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ACM-Installed-Operator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ACM-Installed-Operator.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ACM-OperatorHub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ACM-OperatorHub.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ACM-Submariner-addon-installed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ACM-Submariner-addon-installed.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ACM-Submariner-addon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ACM-Submariner-addon.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ACM-application-delete-resources.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ACM-application-delete-resources.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ACM-application-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ACM-application-delete.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ACM-application-form1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ACM-application-form1.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ACM-application-form2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ACM-application-form2.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ACM-application-form2a-metro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ACM-application-form2a-metro.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ACM-application-form2a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ACM-application-form2a.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ACM-application-form3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ACM-application-form3.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ACM-application-form3a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ACM-application-form3a.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ACM-application-successfull.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ACM-application-successfull.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ACM-bos-25-application-successfull.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ACM-bos-25-application-successfull.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ACM-bos-Submariner-addon-installed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ACM-bos-Submariner-addon-installed.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ACM-bos-application-form3a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ACM-bos-application-form3a.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ACM-bos-managed-clusters-import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ACM-bos-managed-clusters-import.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ACM-local-cluster-import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ACM-local-cluster-import.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ACM-managed-clusters-import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ACM-managed-clusters-import.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/KMS-Vault-Adv-Settings.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/KMS-Vault-Adv-Settings.jpg -------------------------------------------------------------------------------- /training/modules/ocs4/images/KMS-Vault-Settings.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/KMS-Vault-Settings.jpg -------------------------------------------------------------------------------- /training/modules/ocs4/images/KMS-Vault-StorageClass.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/KMS-Vault-StorageClass.jpg -------------------------------------------------------------------------------- /training/modules/ocs4/images/MCG-Console-photo-album-buckets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/MCG-Console-photo-album-buckets.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/MCG-Console-photo-album-objects.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/MCG-Console-photo-album-objects.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/MCO-apply-drpolicy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/MCO-apply-drpolicy.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/MCO-bos-apply-drpolicy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/MCO-bos-apply-drpolicy.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/MCO-bos-drpolicy-selections.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/MCO-bos-drpolicy-selections.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/MCO-bos-select-application.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/MCO-bos-select-application.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/MCO-create-first-drpolicy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/MCO-create-first-drpolicy.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/MCO-drpolicy-replication-interval.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/MCO-drpolicy-replication-interval.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/MCO-drpolicy-selections.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/MCO-drpolicy-selections.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/MCO-select-application.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/MCO-select-application.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCP-copy-login-command.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCP-copy-login-command.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCP4-OADP-operator-installed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCP4-OADP-operator-installed.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCP4-OADP-operatorhub-continue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCP4-OADP-operatorhub-continue.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCP4-OADP-operatorhub-filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCP4-OADP-operatorhub-filter.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCP4-OADP-operatorhub-install.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCP4-OADP-operatorhub-install.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCP4-OADP-operatorhub-install2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCP4-OADP-operatorhub-install2.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCP4-OCS4-Clone-PVC-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCP4-OCS4-Clone-PVC-config.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCP4-OCS4-Clone-PVC-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCP4-OCS4-Clone-PVC-view.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCP4-OCS4-Clone-PVC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCP4-OCS4-Clone-PVC.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCP4-OCS4-Snapshot-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCP4-OCS4-Snapshot-config.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCP4-OCS4-Snapshot-restore-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCP4-OCS4-Snapshot-restore-config.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCP4-OCS4-Snapshot-restore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCP4-OCS4-Snapshot-restore.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCP4-OCS4-Snapshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCP4-OCS4-Snapshot.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS-OCP-CephCluster-Alerts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS-OCP-CephCluster-Alerts.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS-OCP-CephClusterCriticallyFull.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS-OCP-CephClusterCriticallyFull.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS-OCP-CephClusterNearFull.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS-OCP-CephClusterNearFull.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS-OCP-CephClusterReadOnly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS-OCP-CephClusterReadOnly.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS-OCP-CephOSD-Alerts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS-OCP-CephOSD-Alerts.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS-OCP-OperatorHub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS-OCP-OperatorHub.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS-PVCResize-choose-expand-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS-PVCResize-choose-expand-menu.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS-PVCResize-enter-new-size.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS-PVCResize-enter-new-size.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS-PVCResize-pvcnearfull-alert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS-PVCResize-pvcnearfull-alert.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS-PVCResize-select-project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS-PVCResize-select-project.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS-PVCResize-verify-resize-worked2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS-PVCResize-verify-resize-worked2.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS-Pods-Diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS-Pods-Diagram.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS-dashboard-healthy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS-dashboard-healthy.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS-noobaa-dashboard-healthy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS-noobaa-dashboard-healthy.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP-CreateStorageCluster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP-CreateStorageCluster.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP-Encryption-PV-Keys.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP-Encryption-PV-Keys.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP-Encryption-PVParameters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP-Encryption-PVParameters.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP-Encryption-SC-Basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP-Encryption-SC-Basic.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP-Encryption-SCList.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP-Encryption-SCList.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP-Encryption-StorageCluster-Advanced.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP-Encryption-StorageCluster-Advanced.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP-Encryption-StorageCluster-Basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP-Encryption-StorageCluster-Basic.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP-Encryption-StorageCluster-Node.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP-Encryption-StorageCluster-Node.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP-Encryption-StorageCluster-Ready.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP-Encryption-StorageCluster-Ready.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP-Encryption-StorageCluster-Review.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP-Encryption-StorageCluster-Review.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP-Encryption-VaultLogin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP-Encryption-VaultLogin.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP-Encryption-VaultOCSExpansionKeyList.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP-Encryption-VaultOCSExpansionKeyList.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP-Encryption-VaultOCSKeyList.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP-Encryption-VaultOCSKeyList.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP-Encryption-VaultSecretEngines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP-Encryption-VaultSecretEngines.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP-InstalledOperators.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP-InstalledOperators.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP-InstalledOperatorsEncryption.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP-InstalledOperatorsEncryption.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP-MachineSet-2-CountMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP-MachineSet-2-CountMenu.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP-MachineSet-2-Raw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP-MachineSet-2-Raw.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP-MachineSet-3-CountMenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP-MachineSet-3-CountMenu.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP-MachineSet-3-Raw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP-MachineSet-3-Raw.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP-MachineSet-Scale-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP-MachineSet-Scale-0.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP-MachineSet-Scale-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP-MachineSet-Scale-2.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP-MachineSet-Scaled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP-MachineSet-Scaled.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP-Nodes-Scaled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP-Nodes-Scaled.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP-OperatorHub-Filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP-OperatorHub-Filter.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP4-ClassArbiterScreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP4-ClassArbiterScreen.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP4-CreateStorageCluster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP4-CreateStorageCluster.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP4-InstalledOperators.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP4-InstalledOperators.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP4-InternalAttached.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP4-InternalAttached.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP4-OperatorHub-Install.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP4-OperatorHub-Install.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP4-OperatorHub-InstalledOperators.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP4-OperatorHub-InstalledOperators.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP4-OperatorHub-LSOInstall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP4-OperatorHub-LSOInstall.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP4-OperatorHub-LSOSubscribe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP4-OperatorHub-LSOSubscribe.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP4-OperatorHub-Subscribe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP4-OperatorHub-Subscribe.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP4-StorageClusterArbiterScreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP4-StorageClusterArbiterScreen.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP4-StorageClusterArbiterScreenNew.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP4-StorageClusterArbiterScreenNew.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP4-StorageClusterDetails.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP4-StorageClusterDetails.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP4-StorageClusterDetailsNew.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP4-StorageClusterDetailsNew.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP4-StorageClusterLSOConfiguration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP4-StorageClusterLSOConfiguration.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP4-StorageClusterLSOStorageClass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP4-StorageClusterLSOStorageClass.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP4-StorageClusterReview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP4-StorageClusterReview.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-4.7-OCP4-StorageClusterReviewNew.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-4.7-OCP4-StorageClusterReviewNew.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-OCP-OperatorHub-Filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-OCP-OperatorHub-Filter.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-OCP-OperatorHub-LSOFilter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-OCP-OperatorHub-LSOFilter.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-OCP4-OperatorHub-Install.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-OCP4-OperatorHub-Install.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-OCP4-OperatorHub-Subscribe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-OCP4-OperatorHub-Subscribe.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-OCP4-Overview-Location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-OCP4-Overview-Location.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-OCP4-Storage-Cluster-overview-reachit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-OCP4-Storage-Cluster-overview-reachit.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-OCP4-View-Operator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-OCP4-View-Operator.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-OCP4-config-screen-all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-OCP4-config-screen-all.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-OCP4-config-screen-storage-cluster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-OCP4-config-screen-storage-cluster.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-OCP4-finished-cluster-install.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-OCP4-finished-cluster-install.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-add-capacity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-add-capacity.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-config-screen-partial1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-config-screen-partial1.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-config-screen-partial2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-config-screen-partial2.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-config-screen-partial3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-config-screen-partial3.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS4-metrodr-zones.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS4-metrodr-zones.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/OCS_arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/OCS_arch.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODF-4.7-Hashicorp-Vault_DownloadPage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODF-4.7-Hashicorp-Vault_DownloadPage.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODF-4.7-OCP4-ApplicationArticles-FO-FB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODF-4.7-OCP4-ApplicationArticles-FO-FB.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODF-4.7-OCP4-multicluster-dr-architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODF-4.7-OCP4-multicluster-dr-architecture.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODF-4.7-OCP4-multicluster-dr-lab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODF-4.7-OCP4-multicluster-dr-lab.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODF-connect-external-storage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODF-connect-external-storage.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODF-create-storagesystem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODF-create-storagesystem.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODF-external-storage-details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODF-external-storage-details.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODF-mirror-peer-yaml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODF-mirror-peer-yaml.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODF-multicluster-orchestrator-install.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODF-multicluster-orchestrator-install.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODF-multicluster-orchestrator-installed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODF-multicluster-orchestrator-installed.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODF-multicluster-orchestrator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODF-multicluster-orchestrator.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODF_download_script_external_storage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODF_download_script_external_storage.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODR-411-Cluster-operator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODR-411-Cluster-operator.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODR-411-DRPlacementControl-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODR-411-DRPlacementControl-delete.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODR-411-DRPlacementControl-failback-metro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODR-411-DRPlacementControl-failback-metro.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODR-411-DRPlacementControl-failover-metro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODR-411-DRPlacementControl-failover-metro.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODR-411-DRPlacementControl-instance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODR-411-DRPlacementControl-instance.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODR-Cluster-operator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODR-Cluster-operator.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODR-DRPlacementControl-create-instance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODR-DRPlacementControl-create-instance.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODR-DRPlacementControl-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODR-DRPlacementControl-delete.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODR-DRPlacementControl-failback-metro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODR-DRPlacementControl-failback-metro.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODR-DRPlacementControl-failback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODR-DRPlacementControl-failback.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODR-DRPlacementControl-failover-metro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODR-DRPlacementControl-failover-metro.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODR-DRPlacementControl-failover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODR-DRPlacementControl-failover.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODR-DRPlacementControl-instance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODR-DRPlacementControl-instance.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODR-DRPolicy-API.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODR-DRPolicy-API.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODR-DRPolicy-create-instance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODR-DRPolicy-create-instance.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODR-bos-411-DRPlacementControl-failback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODR-bos-411-DRPlacementControl-failback.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ODR-bos-411-DRPlacementControl-failover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ODR-bos-411-DRPlacementControl-failover.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/RHCS-stretch-cluster-arbiter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/RHCS-stretch-cluster-arbiter.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/System-Name-MCG-Console.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/System-Name-MCG-Console.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ceph101-cephfs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ceph101-cephfs.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ceph101-crushfromobjecttoosd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ceph101-crushfromobjecttoosd.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ceph101-dataprotection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ceph101-dataprotection.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ceph101-differentstoragetypes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ceph101-differentstoragetypes.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ceph101-krbd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ceph101-krbd.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ceph101-librados.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ceph101-librados.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ceph101-librbd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ceph101-librbd.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ceph101-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ceph101-overview.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ceph101-rados.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ceph101-rados.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ceph101-rbdlayout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ceph101-rbdlayout.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ceph101-rgw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ceph101-rgw.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ceph101-thefullpicture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ceph101-thefullpicture.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/ceph101-timeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/ceph101-timeline.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/metrics-alertingcontextualmenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/metrics-alertingcontextualmenu.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/metrics-alertinghomepage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/metrics-alertinghomepage.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/metrics-alertingleftpanemenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/metrics-alertingleftpanemenu.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/metrics-alertingstatusfilter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/metrics-alertingstatusfilter.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/metrics-alertingviewrule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/metrics-alertingviewrule.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/metrics-complexcephgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/metrics-complexcephgraph.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/metrics-complexcephquery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/metrics-complexcephquery.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/metrics-complexocpgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/metrics-complexocpgraph.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/metrics-metricsleftpanemenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/metrics-metricsleftpanemenu.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/metrics-queryfield.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/metrics-queryfield.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/metrics-simplecephgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/metrics-simplecephgraph.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/metrics-simplecephquery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/metrics-simplecephquery.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/photo-album-images.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/photo-album-images.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/photo-album-select-upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/photo-album-select-upload.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/rails-postgresql-failed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/rails-postgresql-failed.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/sample-app-down-primary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/sample-app-down-primary.png -------------------------------------------------------------------------------- /training/modules/ocs4/images/uploader_screen_upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/training/modules/ocs4/images/uploader_screen_upload.png -------------------------------------------------------------------------------- /training/modules/ocs4/nav.adoc: -------------------------------------------------------------------------------- 1 | * xref:odf.adoc[ODF General deploy and use] 2 | * xref:ocs4-install-no-ui.adoc[OCS CLI based install] 3 | * xref:odf4-install-no-ui.adoc[ODF CLI based install] 4 | * xref:ocs4-encryption.adoc[External KMS Encryption] 5 | * xref:ocs4-enable-rgw.adoc[Use RGW in OCS deployment] 6 | * xref:ocs4-cluster-storage-quotas.adoc[Cluster wide storage management] 7 | 8 | .Disaster recovery 9 | // * xref:RegionalDR:manual:ocs4-multisite-replication.adoc[Regional disaster recovery (OCS 4.8 manual method)] 10 | // * xref:RegionalDR:helper:requirements.adoc[Regional disaster recovery (RDRhelper)] 11 | * xref:odf4-multisite-ramen.adoc[ODF 4.9 Regional disaster recovery] 12 | * xref:odf410-multisite-ramen.adoc[ODF 4.10 Regional disaster recovery] 13 | * xref:odf411-multisite-ramen.adoc[ODF 4.11 Regional disaster recovery] 14 | * xref:ocs4-metro-stretched.adoc[OCS 4.7 Stretch Cluster disaster recovery] 15 | * xref:odf410-metro-ramen.adoc[ODF 4.10 Metro disaster recovery] 16 | * xref:odf411-metro-ramen.adoc[ODF 4.11 Metro disaster recovery] 17 | 18 | .Development preview features 19 | * xref:ocs4-additionalfeatures-dbwal.adoc[BlueStore RocksDB metadata and WAL placement] 20 | * xref:ocs4-additionalfeatures-devtype.adoc[Mixed OSD device type configuration] 21 | * xref:ocs4-additionalfeatures-override.adoc[Ceph configuration override] 22 | * xref:ocs4-additionalfeatures-segregation.adoc[Data Segregation] 23 | -------------------------------------------------------------------------------- /training/modules/ocs4/pages/ocs4-additionalfeatures-dbwal.adoc: -------------------------------------------------------------------------------- 1 | = OSD BlueStore RocksDB metadata and WAL placement 2 | //:toc: 3 | //:toclevels: 4 4 | :icons: font 5 | :source-language: shell 6 | :numbered: 7 | // Activate experimental attribute for Keyboard Shortcut keys 8 | :experimental: 9 | :source-highlighter: pygments 10 | //:hide-uri-scheme: 11 | 12 | Starting with ODF 4.7 you can customize the deployment of your OSDs when it comes to what device to use 13 | for what part of BlueStore. 14 | 15 | This is useful if you want to offload the OSD's metadata onto a different disk for performance reasons. 16 | 17 | Let's consider a standard *StorageCluster* Custom Resource below: 18 | 19 | [source,yaml] 20 | ---- 21 | --- 22 | apiVersion: ocs.openshift.io/v1 23 | kind: StorageCluster 24 | metadata: 25 | name: ocs-storagecluster 26 | namespace: openshift-storage 27 | spec: 28 | manageNodes: false 29 | monDataDirHostPath: /var/lib/rook 30 | storageDeviceSets: 31 | - count: 1 32 | dataPVCTemplate: 33 | spec: 34 | accessModes: 35 | - ReadWriteOnce 36 | resources: 37 | requests: 38 | storage: {size} 39 | storageClassName: {storageclass} 40 | volumeMode: Block 41 | name: {deviceset-prefix} 42 | portable: false 43 | replica: 3 44 | ---- 45 | 46 | This will deploy a cluster in a very standard way where every piece of the OSD is collocated 47 | on the PVC that will be provisioned using the storage class `\{storageclass\}`. The size of 48 | the PersistentVolume that will be provisioned is specified as `\{size\}`. 49 | 50 | == RocksDB metadata placement 51 | 52 | IMPORTANT: This feature is Development Preview. 53 | 54 | You can now add the following section to your `storageDeviceSets` parameter to customize 55 | the placement of RocksDB at deployment time. 56 | 57 | [source,yaml] 58 | ---- 59 | metadataPVCTemplate: 60 | spec: 61 | accessModes: 62 | - ReadWriteOnce 63 | resources: 64 | requests: 65 | storage: {size} 66 | storageClassName: {storageclass} 67 | volumeMode: Block 68 | ---- 69 | 70 | When added to your storage cluster the following will happen: 71 | 72 | . Each OSD data will claim a PVC as `\{deviceset-prefix-x-data-y\}` 73 | . Each OSD RockDB metadata will claim a PVC as `\{deviceset-prefix-x-metadata-y\}` 74 | 75 | CAUTION: The LSO discovery and subsequent provisioning will create new PVs using the entire disk 76 | and you cannot create partitions after this process. Make sure to configure your RocksDB metadata disk partitions 77 | before LSO discovery to create the data and metadata PVs to be used to deploy your storage cluster. 78 | 79 | == RocksDB WAL placement 80 | 81 | IMPORTANT: This feature is Development Preview. 82 | 83 | You can now add the following section to your `storageDeviceSets` parameter to customize 84 | the placement of the RocksDB Write Ahead Log (WAL) at deployment time. 85 | 86 | [source,yaml] 87 | ---- 88 | walPVCTemplate: 89 | spec: 90 | accessModes: 91 | - ReadWriteOnce 92 | resources: 93 | requests: 94 | storage: {size} 95 | storageClassName: {storageclass} 96 | volumeMode: Block 97 | ---- 98 | 99 | When added to your storage cluster the following will happen: 100 | 101 | . Each OSD data will claim a PVC as `\{deviceset-prefix-x-data-y\}` 102 | . Each OSD RockDB WAL will claim a PVC as `\{deviceset-prefix-x-wal-y\}` 103 | 104 | NOTE: The WAL placement can be combined with the RocksDB metadata placement. 105 | 106 | CAUTION: The LSO discovery and subsequent provisioning will create new PVs using the entire disk 107 | and you cannot create partitions after this process. Make sure to configure your RocksDB metadata disk partitions 108 | before LSO discovery to create the data and wal PVs to be used to deploy your storage cluster. 109 | -------------------------------------------------------------------------------- /training/modules/ocs4/pages/ocs4-additionalfeatures-devtype.adoc: -------------------------------------------------------------------------------- 1 | = Mixed OSD device type configuration 2 | //:toc: 3 | //:toclevels: 4 4 | :icons: font 5 | :source-language: shell 6 | :numbered: 7 | // Activate experimental attribute for Keyboard Shortcut keys 8 | :experimental: 9 | :source-highlighter: pygments 10 | //:hide-uri-scheme: 11 | 12 | Starting with ODF 4.7 you can customize the deployment of your OSDs to consume different device 13 | types. This feature can be combined with xref:ocs4-additionalfeatures-dbwal.adoc[the BlueStore placement customization] and 14 | it is illustrated below. 15 | 16 | == Hardware Configuration (HDD+SSD) 17 | 18 | Your hardware configuration allows you to create partitions on an NVMe device for the OSD metadata 19 | and you want to assign a CRUSH Device Class as `hdd` for these OSDs. To achieve this configuration 20 | you would create a `storageDeviceSet` configuration illustrated below. 21 | 22 | [source,yaml] 23 | ---- 24 | [...] 25 | spec: 26 | [...] 27 | storageDeviceSets: 28 | - count: 1 29 | dataPVCTemplate: 30 | spec: 31 | accessModes: 32 | - ReadWriteOnce 33 | resources: 34 | requests: 35 | storage: {size} 36 | storageClassName: {storageclass-hdd} 37 | volumeMode: Block 38 | name: ocs-deviceset-hdd 39 | portable: false 40 | replica: 3 41 | deviceType: hdd <1> 42 | metadataPVCTemplate: 43 | spec: 44 | accessModes: 45 | - ReadWriteOnce 46 | resources: 47 | requests: 48 | storage: {size} 49 | storageClassName: {storageclass-ssd} 50 | volumeMode: Block 51 | ---- 52 | <1> The authorized values for the device types are `hdd`, `ssd` and `nvme`. Those device types will be used 53 | to assign a CRUSH device class within your underlying cluster. See the xref:ocs4-additionalfeatures-segregation.adoc[document on data segregation] for more information on this. 54 | 55 | == Hardware Configuration (HDD+SSD+NVMe) 56 | 57 | Your hardware configuration allows you to create partitions on an NVMe device for the OSD WAL, 58 | create partitions on an SSD for OSD metadata and you will also want to assign a CRUSH Device Class as `ssd` 59 | for these OSDs. To achieve this configuration you would create a `storageDeviceSet` 60 | configuration illustrated below. 61 | 62 | [source,yaml] 63 | ---- 64 | [...] 65 | spec: 66 | [...] 67 | storageDeviceSets: 68 | - count: 1 69 | dataPVCTemplate: 70 | spec: 71 | accessModes: 72 | - ReadWriteOnce 73 | resources: 74 | requests: 75 | storage: {size} 76 | storageClassName: {storageclass-hdd} 77 | volumeMode: Block 78 | name: ocs-deviceset-mix 79 | portable: false 80 | replica: 3 81 | deviceType: hdd <1> 82 | metadataPVCTemplate: 83 | spec: 84 | accessModes: 85 | - ReadWriteOnce 86 | resources: 87 | requests: 88 | storage: {size} 89 | storageClassName: {storageclass-ssd} 90 | volumeMode: Block 91 | walPVCTemplate: <2> 92 | spec: 93 | accessModes: 94 | - ReadWriteOnce 95 | resources: 96 | requests: 97 | storage: {size} 98 | storageClassName: {storageclass-nvme} 99 | volumeMode: Block 100 | ---- 101 | <1> The authorized values for the device types are `hdd`, `ssd` and `nvme`. Those device types will be used 102 | to assign a CRUSH device class within your underlying cluster. See the xref:ocs4-additionalfeatures-segregation.adoc[document on data segregation] for more information on this. 103 | <2> Following the recommendations used for Red Hat Ceph Storage the only interest in separating the WAL placement 104 | is if the WAL can reside on a faster device than the device where the metadata lives. 105 | 106 | IMPORTANT: If you do not specify a `deviceType` value the OSD will auto-detect the type of device using 107 | the value contained in `/sys/block/\{devicename\}/queue/rotational`. If the file contains a `0` the device 108 | type assigned will be `ssd` but if the value is `1` the device type assigned will be `hdd`. Another 109 | easy way to check if to use `lsblk -d -o name,rota`. 110 | 111 | CAUTION: There is no built-in mechanism in the OSD to detect a difference between a SSD and a NVMe. Both 112 | will be assigend a type `ssd` without your customization. 113 | 114 | == CRUSH Tree Example 115 | 116 | Here is an example of the CRUSH tree being generated in the underlying cluster with the 117 | specific CRUSH device class value assigned in our lab. This is an example to illustrate 118 | the CRUSH device class that gets assigned to each OSD and does not reflect the actual 119 | `yaml` example in this chapter. 120 | 121 | .CRUSH tree 122 | ---- 123 | ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF 124 | -1 39.75000 root default 125 | -7 39.75000 region us-east-2 126 | -18 13.25000 zone us-east-2a 127 | -33 8.50000 host ip-10-0-149-187 128 | 0 hdd 8.50000 osd.0 up 1.00000 1.00000 129 | -17 4.75000 host ip-10-0-152-149 130 | 3 nvme 0.50000 osd.3 up 1.00000 1.00000 131 | 5 ssd 4.25000 osd.5 up 1.00000 1.00000 132 | -6 13.25000 zone us-east-2b 133 | -41 8.50000 host ip-10-0-161-186 134 | 8 hdd 8.50000 osd.8 up 1.00000 1.00000 135 | -5 4.75000 host ip-10-0-179-156 136 | 1 nvme 0.50000 osd.1 up 1.00000 1.00000 137 | 2 ssd 4.25000 osd.2 up 1.00000 1.00000 138 | -26 13.25000 zone us-east-2c 139 | -25 4.75000 host ip-10-0-196-12 140 | 4 nvme 0.50000 osd.4 up 1.00000 1.00000 141 | 7 ssd 4.25000 osd.7 up 1.00000 1.00000 142 | -37 8.50000 host ip-10-0-211-21 143 | 6 hdd 8.50000 osd.6 up 1.00000 1.00000 144 | ---- 145 | 146 | NOTE: You can see that different CRUSH device class values are assigned to your OSDs 147 | based on the `deviceType` field value in your `yaml` configuration. 148 | 149 | TIP: You can leverage the CRUSH device class assigned to the OSDs to write specific 150 | CRUSH rules that will target specific OSDs in a Ceph cluster. 151 | 152 | //NOTE: The CRUSH weight assigned to the OSDs does not reflect the reality of what was 153 | //allocated in the *StorageCluster* definition when using `metadataPVCTemplate` 154 | //and `dataPVCTTemplate`. A bug report was filed to address this 155 | //minor issue https://bugzilla.redhat.com/show_bug.cgi?id=1952661[here]. 156 | -------------------------------------------------------------------------------- /training/modules/ocs4/pages/ocs4-additionalfeatures-override.adoc: -------------------------------------------------------------------------------- 1 | = Ceph configuration override 2 | //:toc: 3 | //:toclevels: 4 4 | :icons: font 5 | :source-language: shell 6 | :numbered: 7 | // Activate experimental attribute for Keyboard Shortcut keys 8 | :experimental: 9 | :source-highlighter: pygments 10 | //:hide-uri-scheme: 11 | 12 | ODF 4.7 and above allows you to create a custom configuration map containing Ceph configuration 13 | parameters that will be added to the default Ceph configuration parameters when deployed 14 | via the ODF operator. 15 | 16 | Once the Red Hat OpenShift Data Foundation operator is deployed, create a specific 17 | ConfigMap in the `openshift-storage` namespace. 18 | 19 | [source,yaml] 20 | ---- 21 | apiVersion: v1 22 | data: 23 | config: |2 24 | 25 | [global] 26 | mon_osd_full_ratio = .85 27 | mon_osd_backfillfull_ratio = .80 28 | mon_osd_nearfull_ratio = .75 29 | mon_max_pg_per_osd = 600 30 | [osd] 31 | osd_pool_default_min_size = 1 32 | osd_pool_default_size = 2 33 | osd_memory_target_cgroup_limit_ratio = 0.5 34 | kind: ConfigMap 35 | metadata: 36 | name: rook-config-override 37 | namespace: openshift-storage 38 | ---- 39 | 40 | CAUTION: Once the ConfigMap is created, you *MUST deploy the storage cluster via the CLI*. 41 | 42 | IMPORTANT: Deploying your storage cluster via the UI will overwrite your customized 43 | ConfigMap. 44 | 45 | Add the following parameters to your *StorageCluster* CR yaml file. 46 | 47 | [source,yaml] 48 | ---- 49 | spec: 50 | managedResources: 51 | cephConfig: 52 | reconcileStrategy: ignore 53 | [...] 54 | ---- 55 | 56 | This will make sure your customized ConfigMap is injected into the underlying Ceph cluster. 57 | -------------------------------------------------------------------------------- /training/modules/ocs4/pages/ocs4-enable-rgw.adoc: -------------------------------------------------------------------------------- 1 | = Enable use of the RGW on an OCS internal deployment 2 | // :toc: right 3 | // :toclevels: 3 4 | :icons: font 5 | :source-highlighter: pygments 6 | :source-language: shell 7 | :numbered: 8 | // Activate experimental attribute for Keyboard Shortcut keys 9 | :experimental: 10 | 11 | Depending on the infrastructure where you deploy OCS, the RGW may or may not be deployed. It is not deployed where MCG has the ability to provision directly an ObjectStore to use as a backing store. For example, RGW is not deployed when OCP/OCS runs on AWS, as in this case MCG will just provision directly an AWS S3 bucket. + 12 | 13 | But there may be cases when you want to specifically use the RGW, like to make use of the Ceph bucket notifications feature. + 14 | The following steps will show you how to do this deployment manually. 15 | 16 | == Status verification 17 | 18 | First, make sure that the RGW is not already deployed. You can do this with the following command: 19 | 20 | [source, execute] 21 | ---- 22 | oc get -n openshift-storage CephObjectStore 23 | ---- 24 | 25 | This should return nothing. Otherwise you already have an ObjectStore, and therefore an active RGW. In this case you can directly go to the Service and Route steps to gain access to it. 26 | 27 | == Creating the CephObjectStore 28 | 29 | The CephObjectStore can be deployed with this YAML file (`oc apply -f cephobjectstore.yaml`): 30 | 31 | .cephobjectstore.yaml 32 | [source, yaml] 33 | ---- 34 | --- 35 | apiVersion: ceph.rook.io/v1 36 | kind: CephObjectStore 37 | metadata: 38 | name: ocs-storagecluster-cephobjectstore 39 | namespace: openshift-storage 40 | spec: 41 | dataPool: 42 | crushRoot: "" 43 | deviceClass: "" 44 | erasureCoded: 45 | algorithm: "" 46 | codingChunks: 0 47 | dataChunks: 0 48 | failureDomain: host 49 | replicated: 50 | size: 3 51 | gateway: 52 | allNodes: false 53 | instances: 1 54 | placement: 55 | nodeAffinity: 56 | requiredDuringSchedulingIgnoredDuringExecution: 57 | nodeSelectorTerms: 58 | - matchExpressions: 59 | - key: cluster.ocs.openshift.io/openshift-storage 60 | operator: Exists 61 | podAntiAffinity: 62 | preferredDuringSchedulingIgnoredDuringExecution: 63 | - podAffinityTerm: 64 | labelSelector: 65 | matchExpressions: 66 | - key: app 67 | operator: In 68 | values: 69 | - rook-ceph-rgw 70 | topologyKey: kubernetes.io/hostname 71 | weight: 100 72 | tolerations: 73 | - effect: NoSchedule 74 | key: node.ocs.openshift.io/storage 75 | operator: Equal 76 | value: "true" 77 | port: 80 78 | resources: 79 | limits: 80 | cpu: "2" 81 | memory: 4Gi 82 | requests: 83 | cpu: "1" 84 | memory: 4Gi 85 | securePort: 0 86 | sslCertificateRef: "" 87 | metadataPool: 88 | crushRoot: "" 89 | deviceClass: "" 90 | erasureCoded: 91 | algorithm: "" 92 | codingChunks: 0 93 | dataChunks: 0 94 | failureDomain: host 95 | replicated: 96 | size: 3 97 | ---- 98 | 99 | _Note_: the parameters you may want to change are: 100 | 101 | - `name`: you can change it but make sure to adapt the other files that follow. 102 | - `failureDomain`: default is `zone` for AWS. You may want to adapt for other infrastructures. 103 | - `instances`: if you want more than one RGW. In this case, make sure to put some load-balancing in front. 104 | 105 | == Service and Route 106 | 107 | To access the RGW internally, you'll need a Service which has already been created automatically with the ObjectStore, and a Route if you want to access it from anywhere. So you can apply this file to create the Route: 108 | 109 | .route.yaml 110 | [source, yaml] 111 | ---- 112 | --- 113 | kind: Route 114 | apiVersion: route.openshift.io/v1 115 | metadata: 116 | name: s3-rgw 117 | namespace: openshift-storage 118 | labels: 119 | app: rook-ceph-rgw 120 | ceph_daemon_id: ocs-storagecluster-cephobjectstore 121 | ceph_daemon_type: rgw 122 | rgw: ocs-storagecluster-cephobjectstore 123 | rook_cluster: openshift-storage 124 | rook_object_store: ocs-storagecluster-cephobjectstore 125 | spec: 126 | to: 127 | kind: Service 128 | name: rook-ceph-rgw-ocs-storagecluster-cephobjectstore 129 | weight: 100 130 | port: 131 | targetPort: http 132 | tls: 133 | termination: edge 134 | insecureEdgeTerminationPolicy: Allow 135 | wildcardPolicy: None 136 | ---- 137 | 138 | The Service or the Route you have created are the endpoints that you can use in your application or code that connects to Object Storage. 139 | 140 | == StorageClass 141 | 142 | To create ObjectBucketClaims against the RGW (and not against the MCG which is default), you can create the following StorageClass: 143 | 144 | .storageclass.yaml 145 | [source, yaml] 146 | ---- 147 | --- 148 | kind: StorageClass 149 | apiVersion: storage.k8s.io/v1 150 | metadata: 151 | name: ocs-storagecluster-ceph-rgw 152 | annotations: 153 | description: Provides Object Bucket Claims (OBCs) using the RGW 154 | provisioner: openshift-storage.ceph.rook.io/bucket 155 | parameters: 156 | objectStoreName: ocs-storagecluster-cephobjectstore 157 | objectStoreNamespace: openshift-storage 158 | region: us-east-1 159 | reclaimPolicy: Delete 160 | volumeBindingMode: Immediate 161 | ---- 162 | 163 | If you want to use the RGW when creating an ObjectBucketClaim, you can now select `ocs-storagecluster-ceph-rgw` as the storage class. 164 | 165 | // == Ceph toolbox 166 | 167 | // As the Ceph dashboard is not available with OCS for an internal deployment, you have to interact direcly with the RGW to create S3 users who will then be able to connect using the S3 API (through s3cmd, boto3 library, any S3-compatible tool...). + 168 | 169 | // To create a S3 user, first start a Ceph toolbox to use the radosgw-admin utility using the following command: 170 | 171 | // [source, execute] 172 | // ---- 173 | // oc patch OCSInitialization ocsinit -n openshift-storage --type json --patch '[{ "op": "replace", "path": "/spec/enableCephTools", "value": true }]' 174 | // ---- 175 | include::partial$deploy_toolbox.adoc[] 176 | 177 | == Create a S3 user 178 | 179 | === Method 1 180 | To create a new S3 user interactively, log into the Ceph toolbox using the command below: 181 | 182 | [source, execute] 183 | ---- 184 | oc rsh -n openshift-storage $(oc get pod -n openshift-storage -l app=rook-ceph-tools -o jsonpath='{.items[0].metadata.name}') 185 | ---- 186 | 187 | Create a S3 user using the following command: 188 | [source, execute] 189 | ---- 190 | radosgw-admin user create --display-name="Your user" --uid=your-user 191 | ---- 192 | 193 | The output of the command will give you all the details for the newly create user, especially this part: 194 | 195 | [source, json] 196 | ---- 197 | { 198 | "user": "your-user", 199 | "access_key": "XXXXXXXXXXXXXXXX", 200 | "secret_key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" 201 | } 202 | ---- 203 | 204 | === Method 2 205 | 206 | To be honest, it's the same as the previous one, but in one line... 207 | [source, execute] 208 | ---- 209 | oc exec -n openshift-storage $(oc get pod -n openshift-storage -l app=rook-ceph-tools -o jsonpath='{.items[0].metadata.name}') -- radosgw-admin user create --uid="" --display-name="" 210 | ---- 211 | 212 | -------------------------------------------------------------------------------- /training/modules/ocs4/pages/ocs4-multisite-replication.adoc: -------------------------------------------------------------------------------- 1 | = OpenShift Regional Disaster Recovery 2 | :toc: 3 | :toclevels: 4 4 | :icons: font 5 | :source-language: shell 6 | :numbered: 7 | // Activate experimental attribute for Keyboard Shortcut keys 8 | :experimental: 9 | :source-highlighter: pygments 10 | :hide-uri-scheme: 11 | 12 | IMPORTANT: This document has moved to xref:RegionalDR:manual:ocs4-multisite-replication.adoc[this location] 13 | -------------------------------------------------------------------------------- /training/modules/ocs4/partials/deploy_toolbox.adoc: -------------------------------------------------------------------------------- 1 | 2 | === Using the Rook-Ceph toolbox to check on the Ceph backing storage 3 | 4 | Since the Rook-Ceph *toolbox* is not shipped with OCS, we need to deploy it 5 | manually. 6 | 7 | You can patch the `OCSInitialization ocsinit` using the following command line: 8 | 9 | [source,role="execute"] 10 | ---- 11 | oc patch OCSInitialization ocsinit -n openshift-storage --type json --patch '[{ "op": "replace", "path": "/spec/enableCephTools", "value": true }]' 12 | ---- 13 | -------------------------------------------------------------------------------- /training/modules/ocs4/partials/dr_multicluster_sample_application.adoc: -------------------------------------------------------------------------------- 1 | == Sample Application Deployment 2 | 3 | In order to test failing over from one OCP cluster to another we need a simple application to and verify that replication is working. 4 | 5 | Start by creating a new project on the *primary cluster*: 6 | 7 | [source,role="execute"] 8 | ---- 9 | oc new-project my-database-app 10 | ---- 11 | 12 | Then use the `rails-pgsql-persistent` template to create the new application. The new `postgresql` volume will be claimed from the new *StorageClass*. 13 | 14 | [source,role="execute"] 15 | ---- 16 | curl -s https://raw.githubusercontent.com/red-hat-storage/ocs-training/master/training/modules/ocs4/attachments/configurable-rails-app.yaml | oc new-app -p STORAGE_CLASS=ocs-external-storagecluster-ceph-rbd-dr -p VOLUME_CAPACITY=5Gi -f - 17 | ---- 18 | 19 | After the deployment is started you can monitor with these commands. 20 | 21 | [source,role="execute"] 22 | ---- 23 | oc status 24 | ---- 25 | 26 | Check the PVC is created. 27 | 28 | [source,role="execute"] 29 | ---- 30 | oc get pvc -n my-database-app 31 | ---- 32 | 33 | This step could take 5 or more minutes. Wait until there are 2 *Pods* in 34 | `Running` STATUS and 4 *Pods* in `Completed` STATUS as shown below. 35 | 36 | [source,role="execute"] 37 | ---- 38 | watch oc get pods -n my-database-app 39 | ---- 40 | .Example output: 41 | ---- 42 | NAME READY STATUS RESTARTS AGE 43 | pod/postgresql-1-deploy 0/1 Completed 0 2m4s 44 | pod/postgresql-1-r8j9z 1/1 Running 0 2m2s 45 | pod/rails-pgsql-persistent-1-build 0/1 Completed 0 2m5s 46 | pod/rails-pgsql-persistent-1-deploy 0/1 Completed 0 35s 47 | pod/rails-pgsql-persistent-1-hook-pre 0/1 Completed 0 33s 48 | pod/rails-pgsql-persistent-1-tgvds 1/1 Running 0 23s 49 | 50 | NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE 51 | persistentvolumeclaim/postgresql Bound pvc-35f21284-cc83-479e-97db-3f778980908f 5Gi RWO ocs-external-storagecluster-ceph-rbd-dr 2m6s 52 | ---- 53 | 54 | You can exit by pressing kbd:[Ctrl+C]. 55 | 56 | Once the deployment is complete you can now test the application and the 57 | persistent storage on ODF. 58 | 59 | [source,role="execute"] 60 | ---- 61 | oc get route rails-pgsql-persistent -n my-database-app -o jsonpath --template="http://{.spec.host}/articles{'\n'}" 62 | ---- 63 | 64 | This will return a route similar to this one. 65 | 66 | .Example output: 67 | ---- 68 | http://rails-pgsql-persistent-my-database-app.apps.ocp45.ocstraining.com/articles 69 | ---- 70 | 71 | Copy your route (different than above) to a browser window to create articles. 72 | 73 | Click the `New Article` link. 74 | 75 | Enter the `username` and `password` below to create articles and comments. 76 | The articles and comments are saved in a PostgreSQL database which stores its 77 | table spaces on the RBD volume provisioned using the 78 | `ocs-storagecluster-ceph-rbd` *StorageClass* during the application 79 | deployment. 80 | 81 | ---- 82 | username: openshift 83 | password: secret 84 | ---- 85 | 86 | Once you have added a new article you can verify it exists in the `postgresql` database by issuing this command: 87 | 88 | [source,role="execute"] 89 | ---- 90 | oc rsh -n my-database-app $(oc get pods -n my-database-app|grep postgresql | grep -v deploy | awk {'print $1}') psql -c "\c root" -c "\d+" -c "select * from articles" 91 | ---- 92 | .Example output: 93 | ---- 94 | You are now connected to database "root" as user "postgres". 95 | List of relations 96 | Schema | Name | Type | Owner | Size | Description 97 | --------+----------------------+----------+---------+------------+------------- 98 | public | ar_internal_metadata | table | userAAF | 16 kB | 99 | public | articles | table | userAAF | 16 kB | 100 | public | articles_id_seq | sequence | userAAF | 8192 bytes | 101 | public | comments | table | userAAF | 8192 bytes | 102 | public | comments_id_seq | sequence | userAAF | 8192 bytes | 103 | public | schema_migrations | table | userAAF | 16 kB | 104 | (6 rows) 105 | 106 | id | title | body | created_at | updated_at 107 | 108 | ----+----------------------------+--------------------------------------------------------------------------------------------------------------------------------+----------------------------+----------------------- 109 | ----- 110 | 1 | Test Metro Multicluster DR | This article is to prove that we can restart the application in the OCP-DR cluster when the OCP-A cluster becomes unavailable. | 2021-04-13 22:17:53.602252 | 2021-04-13 22:17:53.60 111 | 2252 112 | (1 row) 113 | ---- 114 | -------------------------------------------------------------------------------- /training/modules/ocs4/partials/dr_sample_application.adoc: -------------------------------------------------------------------------------- 1 | == Sample Application Deployment 2 | 3 | In order to test failing over from one OCP cluster to another we need a simple application to and verify that replication is working. 4 | 5 | Start by creating a new project on the *primary cluster*: 6 | 7 | [source,role="execute"] 8 | ---- 9 | oc new-project my-database-app 10 | ---- 11 | 12 | Then use the `rails-pgsql-persistent` template to create the new application. The new `postgresql` volume will be claimed from the new *StorageClass*. 13 | 14 | [source,role="execute"] 15 | ---- 16 | curl -s https://raw.githubusercontent.com/red-hat-storage/ocs-training/master/training/modules/ocs4/attachments/configurable-rails-app.yaml | oc new-app -p STORAGE_CLASS=ocs-storagecluster-ceph-rbd -p VOLUME_CAPACITY=5Gi -f - 17 | ---- 18 | 19 | After the deployment is started you can monitor with these commands. 20 | 21 | [source,role="execute"] 22 | ---- 23 | oc status 24 | ---- 25 | 26 | Check the PVC is created. 27 | 28 | [source,role="execute"] 29 | ---- 30 | oc get pvc -n my-database-app 31 | ---- 32 | 33 | This step could take 5 or more minutes. Wait until there are 2 *Pods* in 34 | `Running` STATUS and 4 *Pods* in `Completed` STATUS as shown below. 35 | 36 | [source,role="execute"] 37 | ---- 38 | watch oc get pods -n my-database-app 39 | ---- 40 | .Example output: 41 | ---- 42 | NAME READY STATUS RESTARTS AGE 43 | postgresql-1-674qv 1/1 Running 0 3m1s 44 | postgresql-1-deploy 0/1 Completed 0 3m4s 45 | rails-pgsql-persistent-1-build 0/1 Completed 0 3m6s 46 | rails-pgsql-persistent-1-deploy 0/1 Completed 0 100s 47 | rails-pgsql-persistent-1-hook-pre 0/1 Completed 0 97s 48 | rails-pgsql-persistent-1-rxzg2 1/1 Running 0 85s 49 | ---- 50 | 51 | You can exit by pressing kbd:[Ctrl+C]. 52 | 53 | Once the deployment is complete you can now test the application and the 54 | persistent storage on OCS. 55 | 56 | [source,role="execute"] 57 | ---- 58 | oc get route rails-pgsql-persistent -n my-database-app -o jsonpath --template="http://{.spec.host}/articles{'\n'}" 59 | ---- 60 | 61 | This will return a route similar to this one. 62 | 63 | .Example output: 64 | ---- 65 | http://rails-pgsql-persistent-my-database-app.apps.ocp45.ocstraining.com/articles 66 | ---- 67 | 68 | Copy your route (different than above) to a browser window to create articles. 69 | 70 | Click the `New Article` link. 71 | 72 | Enter the `username` and `password` below to create articles and comments. 73 | The articles and comments are saved in a PostgreSQL database which stores its 74 | table spaces on the RBD volume provisioned using the 75 | `ocs-storagecluster-ceph-rbd` *StorageClass* during the application 76 | deployment. 77 | 78 | ---- 79 | username: openshift 80 | password: secret 81 | ---- 82 | 83 | Once you have added a new article you can verify it exists in the `postgresql` database by issuing this command: 84 | 85 | [source,role="execute"] 86 | ---- 87 | oc rsh -n my-database-app $(oc get pods -n my-database-app|grep postgresql | grep -v deploy | awk {'print $1}') psql -c "\c root" -c "\d+" -c "select * from articles" 88 | ---- 89 | .Example output: 90 | ---- 91 | You are now connected to database "root" as user "postgres". 92 | List of relations 93 | Schema | Name | Type | Owner | Size | Description 94 | --------+----------------------+----------+---------+------------+------------- 95 | public | ar_internal_metadata | table | user8EF | 16 kB | 96 | public | articles | table | user8EF | 16 kB | 97 | public | articles_id_seq | sequence | user8EF | 8192 bytes | 98 | public | comments | table | user8EF | 8192 bytes | 99 | public | comments_id_seq | sequence | user8EF | 8192 bytes | 100 | public | schema_migrations | table | user8EF | 16 kB | 101 | (6 rows) 102 | 103 | id | title | body | created_at | updated_at 104 | ----+-------------------------------+------------------------------------------------------------------------------------+----------------------------+---------------------------- 105 | 1 | Test Metro Stretch DR article | This article is to prove the data remains available once an entire zone goes down. | 2021-04-08 00:19:49.956903 | 2021-04-08 00:19:49.956903 106 | (1 row) 107 | ---- 108 | -------------------------------------------------------------------------------- /training/modules/ocs4/partials/install_oadp_ui.adoc: -------------------------------------------------------------------------------- 1 | OADP (OpenShift APIs for Data Protection) is a community operator and is available in *OperatorHub*. 2 | 3 | We will be using OADP for the `Backup` and `Restore` APIs for collecting the Kubernetes objects at a namespace level. The collection or backup of resources is needed to restore the application on the *secondary cluster*. 4 | 5 | === Installing OADP Operator 6 | 7 | First is to find OADP in *OperatorHub*. Login to your *OpenShift Web Console* and navigate to *OperatorHub*. Filter for `OADP` as shown below: 8 | 9 | .OperatorHub filter for OADP 10 | image::OCP4-OADP-operatorhub-filter.png[OperatorHub filter for OADP] 11 | 12 | NOTE: If you are not finding OADP in *OperatorHub* most likely the `community-operator` catalogsource is not deployed in your cluster. 13 | 14 | Select `Continue` on next screen. 15 | 16 | .OADP operator support statement 17 | image::OCP4-OADP-operatorhub-continue.png[OADP operator support statement] 18 | 19 | CAUTION: OADP is a community operator and as such is not supported by Red Hat. More information can be found at https://github.com/konveyor/oadp-operator. 20 | 21 | Select `Install` on next screen. 22 | 23 | .OADP install screen 24 | image::OCP4-OADP-operatorhub-install.png[OADP install screen] 25 | 26 | Now you will create the new namespace `oadp-operator` and install the OADP operator into this namespace. Select `Install` again. 27 | 28 | .OADP create namespace and install operator 29 | image::OCP4-OADP-operatorhub-install2.png[OADP create namespace and install operator] 30 | 31 | Wait for operator to install. When you see this screen the OADP operator is installed. 32 | 33 | .OADP operator installed and ready 34 | image::OCP4-OADP-operator-installed.png[OADP operator installed and ready] 35 | 36 | The next step is to create the `Velero` *CustomResource* or CR. For this you will need to have a `S3` compatible object bucket created that you know the `bucket name` as well as the credentials to access the bucket. 37 | 38 | NOTE: It is not recommended to use OCS object buckets (MCG or RGW) as the `S3` *BackingStorageLocation* for `Velero` CR. If your remote or secondary clusters become unavailable and the `S3` bucket is created on that cluster there is no way to recover to alternate cluster. 39 | 40 | === Creating S3 Target Bucket Credentials Secret 41 | 42 | Before creating the `Velero` CR you must create the `cloud-credentials` file with the creditials for your `S3` bucket. The format of the file needs to be this: 43 | 44 | ---- 45 | [default] 46 | aws_access_key_id=VELERO_ACCESS_KEY_ID 47 | aws_secret_access_key=VELERO_SECRET_ACCESS_KEY 48 | ---- 49 | 50 | Copy your unique credentials into file `cloud-credentials` and save file. 51 | 52 | Now use this new `cloud-credentials` file to create a new *Secret*. Replace `` with path to file you created with `S3` credentials. 53 | 54 | ---- 55 | oc create secret generic cloud-credentials --namespace oadp-operator --from-file cloud=/cloud-credentials 56 | ---- 57 | 58 | === Configuring Velero S3 Target 59 | 60 | The `velero` configuration needs to be modified so it can use your `S3` bucket. The example is for a `S3` bucket on *AWS* saved as file `velero-aws.yaml`. It is recommended to use an object bucket `off-platform` meaning not backed by storage in the *primary cluster* (OCP-A) or the *secondary cluster* (OCP-DR). 61 | 62 | NOTE: Your `velero` YAML file will be slightly different if using a `S3` object bucket from a different provider (GCP, Azure), from an external Ceph cluster with `RGW`, or from ODF `MCG`. 63 | 64 | [source,yaml] 65 | ---- 66 | apiVersion: konveyor.openshift.io/v1alpha1 67 | kind: Velero 68 | metadata: 69 | name: oadp-velero 70 | namespace: oadp-operator 71 | spec: 72 | olm_managed: true 73 | backup_storage_locations: 74 | - config: 75 | profile: default 76 | region: us-east-2 # <-- Modify to bucket AWS region or region for your provider 77 | credentials_secret_ref: 78 | name: cloud-credentials 79 | namespace: oadp-operator 80 | name: default 81 | object_storage: 82 | bucket: oadp-xxxxxx # Modify to your bucket name 83 | prefix: velero 84 | provider: aws 85 | default_velero_plugins: 86 | - aws 87 | - openshift 88 | enable_restic: false 89 | ---- 90 | 91 | Once you have your unique values copied into your YAML file create the `Velero` CR. 92 | 93 | NOTE: If using a `MCG` object bucket instead of a bucket `off-platform` (i.e. AWS) as recommended, reference these https://github.com/konveyor/oadp-operator/blob/master/docs/noobaa/install_oadp_noobaa.md[instructions]. 94 | 95 | ---- 96 | oc create -f velero-aws.yaml -n oadp-operator 97 | ---- 98 | 99 | Validate that the `velero` pod is `Running` and that the *BackingStorageLocation* have been created as well that has the details to access your `S3` bucket for Kubernetes object storage. 100 | 101 | [source,role="execute"] 102 | ---- 103 | oc get pods,backupstoragelocation -n oadp-operator 104 | ---- 105 | .Example output: 106 | ---- 107 | NAME READY STATUS RESTARTS AGE 108 | pod/oadp-default-aws-registry-88f556c5-2mk6h 1/1 Running 0 4m59s 109 | pod/oadp-operator-6bb9fb6cfc-mc6vw 1/1 Running 0 49m 110 | pod/velero-6c6fd6d84d-mbct9 1/1 Running 0 5m3s 111 | 112 | NAME PHASE LAST VALIDATED AGE 113 | backupstoragelocation.velero.io/default Available 9s 5m1s 114 | ---- 115 | 116 | IMPORTANT: Repeat these steps and install *OADP* on the *secondary cluster* (OCP-DR). Make sure to use the same `S3` bucket and credentials as for the *primary cluster* (OCP-A) when creating the `Velero` CR. 117 | 118 | -------------------------------------------------------------------------------- /training/modules/ocs4/partials/metro-multi-basictesting.adoc: -------------------------------------------------------------------------------- 1 | 2 | [source,shell] 3 | ---- 4 | oc get sc 5 | ---- 6 | .Exmaple output 7 | ---- 8 | NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE 9 | gp2 (default) kubernetes.io/aws-ebs Delete WaitForFirstConsumer true 3h45m 10 | gp2-csi ebs.csi.aws.com Delete WaitForFirstConsumer true 3h45m 11 | ocs-external-storagecluster-ceph-rbd openshift-storage.rbd.csi.ceph.com Delete Immediate true 28m 12 | ocs-external-storagecluster-ceph-rbd-dr openshift-storage.rbd.csi.ceph.com Retain Immediate true 5m32s 13 | ocs-external-storagecluster-ceph-rgw openshift-storage.ceph.rook.io/bucket Delete Immediate false 28m 14 | ocs-external-storagecluster-cephfs openshift-storage.cephfs.csi.ceph.com Delete Immediate true 28m 15 | ocs-external-storagecluster-cephfs-dr openshift-storage.cephfs.csi.ceph.com Retain Immediate true 5m21s 16 | openshift-storage.noobaa.io openshift-storage.noobaa.io/obc Delete Immediate false 26m 17 | ---- 18 | 19 | ===== Verify RBD Provisioning 20 | 21 | Create a RBD based PVC using the new RBD storage class `ocs-external-storagecluster-ceph-rbd-dr`. 22 | 23 | [source,shell] 24 | ---- 25 | cat < --- 44 | > apiVersion: v1 45 | > kind: PersistentVolumeClaim 46 | > metadata: 47 | > name: testrwo 48 | > spec: 49 | > storageClassName: "ocs-external-storagecluster-ceph-rbd-dr" 50 | > accessModes: 51 | > - ReadWriteOnce 52 | > resources: 53 | > requests: 54 | > storage: 10Gi 55 | > EOF 56 | persistentvolumeclaim/testrwo created 57 | $ oc get pvc -n openshift-storage 58 | NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE 59 | db-noobaa-db-pg-0 Bound pvc-d23d18a1-f525-45ee-bc57-aec5b30440b1 50Gi RWO ocs-external-storagecluster-ceph-rbd 35m 60 | testrwo Bound pvc-294995a7-ebee-4d9e-9b98-f6c708ff0cac 10Gi RWO ocs-external-storagecluster-ceph-rbd-dr 0s 61 | ---- 62 | 63 | Clean up the environment. 64 | 65 | [source,shell] 66 | ---- 67 | cat < --- 86 | > apiVersion: v1 87 | > kind: PersistentVolumeClaim 88 | > metadata: 89 | > name: testrwo 90 | > spec: 91 | > storageClassName: "ocs-external-storagecluster-ceph-rbd-dr" 92 | > accessModes: 93 | > - ReadWriteOnce 94 | > resources: 95 | > requests: 96 | > storage: 10Gi 97 | > EOF 98 | persistentvolumeclaim "testrwo" deleted 99 | $ oc get pvc -n openshift-storage 100 | NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE 101 | db-noobaa-db-pg-0 Bound pvc-d23d18a1-f525-45ee-bc57-aec5b30440b1 50Gi RWO ocs-external-storagecluster-ceph-rbd 34m 102 | ---- 103 | 104 | ===== Verify CephFS Provisioning 105 | 106 | Create a CephFS based PVC using the new CephFS storage class `ocs-external-storagecluster-cephfs-dr`. 107 | 108 | [source,shell] 109 | ---- 110 | cat < --- 129 | > apiVersion: v1 130 | > kind: PersistentVolumeClaim 131 | > metadata: 132 | > name: testrwx 133 | > spec: 134 | > storageClassName: "ocs-external-storagecluster-cephfs-dr" 135 | > accessModes: 136 | > - ReadWriteMany 137 | > resources: 138 | > requests: 139 | > storage: 10Gi 140 | > EOF 141 | persistentvolumeclaim/testrwx created 142 | $ oc get pvc -n openshift-storage 143 | NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE 144 | db-noobaa-db-pg-0 Bound pvc-d23d18a1-f525-45ee-bc57-aec5b30440b1 50Gi RWO ocs-external-storagecluster-ceph-rbd 39m 145 | testrwx Bound pvc-2f7c19c9-8fc9-4d9d-aba8-8810e77d8b96 10Gi RWX ocs-external-storagecluster-cephfs-dr 0s 146 | ---- 147 | 148 | Clean up the environment. 149 | 150 | [source,shell] 151 | ---- 152 | cat < --- 171 | > apiVersion: v1 172 | > kind: PersistentVolumeClaim 173 | > metadata: 174 | > name: testrwx 175 | > spec: 176 | > storageClassName: "ocs-external-storagecluster-cephfs-dr" 177 | > accessModes: 178 | > - ReadWriteMany 179 | > resources: 180 | > requests: 181 | > storage: 10Gi 182 | > EOF 183 | persistentvolumeclaim "testrwx" deleted 184 | $ oc get pvc -n openshift-storage 185 | NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE 186 | db-noobaa-db-pg-0 Bound pvc-d23d18a1-f525-45ee-bc57-aec5b30440b1 50Gi RWO ocs-external-storagecluster-ceph-rbd 40m 187 | ---- 188 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM centos:latest 2 | LABEL maintainer="JCL " 3 | 4 | RUN yum -y update && \ 5 | yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm && \ 6 | yum install -y git make gcc unzip wget sysbench 7 | 8 | RUN mkdir /tmp/data 9 | 10 | WORKDIR /tmp/data 11 | 12 | COPY ./file-*.sh /tmp/ 13 | 14 | RUN chmod +x /tmp/*.sh 15 | 16 | CMD ["/bin/bash","-c","sleep 3600"] 17 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/cephfs-ext-loop.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: my-rwx-storage-external 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-cephfs 12 | namespace: my-rwx-storage-external 13 | spec: 14 | accessModes: 15 | - ReadWriteMany 16 | resources: 17 | requests: 18 | storage: 20Gi 19 | storageClassName: ocs-external-storagecluster-cephfs 20 | --- 21 | kind: PersistentVolumeClaim 22 | apiVersion: v1 23 | metadata: 24 | name: pvc-cephrbd 25 | namespace: my-rwx-storage 26 | spec: 27 | accessModes: 28 | - ReadWriteOnce 29 | resources: 30 | requests: 31 | storage: 50Mi 32 | storageClassName: ocs-external-storagecluster-ceph-rbd 33 | --- 34 | apiVersion: batch/v1 35 | kind: Job 36 | metadata: 37 | name: batch1 38 | namespace: my-rwx-storage-external 39 | labels: 40 | app: batch1 41 | spec: 42 | template: 43 | metadata: 44 | labels: 45 | app: batch1 46 | spec: 47 | restartPolicy: OnFailure 48 | containers: 49 | - name: batch1 50 | image: amazon/aws-cli:latest 51 | command: ["sh"] 52 | args: 53 | - '-c' 54 | - 'while true; do echo "Creating temporary file"; export mystamp=$(date +%Y%m%d_%H%M%S); dd if=/dev/urandom of=/mnt/file_${mystamp} bs=1M count=1; echo "Copying temporary file"; cp /mnt/file_${mystamp} /tmp/file_${mystamp}; echo "Going to sleep"; sleep 60; echo "Removing temporary file"; rm /mnt/file_${mystamp}; done' 55 | volumeMounts: 56 | - name: tmp-store 57 | mountPath: /tmp 58 | - name: tmp-file 59 | mountPath: /mnt 60 | volumes: 61 | - name: tmp-store 62 | persistentVolumeClaim: 63 | claimName: pvc-cephfs 64 | readOnly: false 65 | - name: tmp-file 66 | persistentVolumeClaim: 67 | claimName: pvc-cephrbd 68 | readOnly: false 69 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/cephfs-loop.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: my-rwx-storage 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-cephfs 12 | namespace: my-rwx-storage 13 | spec: 14 | accessModes: 15 | - ReadWriteMany 16 | resources: 17 | requests: 18 | storage: 20Gi 19 | storageClassName: ocs-storagecluster-cephfs 20 | --- 21 | kind: PersistentVolumeClaim 22 | apiVersion: v1 23 | metadata: 24 | name: pvc-cephrbd 25 | namespace: my-rwx-storage 26 | spec: 27 | accessModes: 28 | - ReadWriteOnce 29 | resources: 30 | requests: 31 | storage: 50Mi 32 | storageClassName: ocs-storagecluster-ceph-rbd 33 | --- 34 | apiVersion: batch/v1 35 | kind: Job 36 | metadata: 37 | name: batch1 38 | namespace: my-rwx-storage 39 | labels: 40 | app: batch1 41 | spec: 42 | template: 43 | metadata: 44 | labels: 45 | app: batch1 46 | spec: 47 | restartPolicy: OnFailure 48 | containers: 49 | - name: batch1 50 | image: amazon/aws-cli:latest 51 | command: ["sh"] 52 | args: 53 | - '-c' 54 | - 'while true; do echo "Creating temporary file"; export mystamp=$(date +%Y%m%d_%H%M%S); dd if=/dev/urandom of=/mnt/file_${mystamp} bs=1M count=1; echo "Copying temporary file"; cp /mnt/file_${mystamp} /tmp/file_${mystamp}; echo "Going to sleep"; sleep 60; echo "Removing temporary file"; rm /mnt/file_${mystamp}; done' 55 | volumeMounts: 56 | - name: tmp-store 57 | mountPath: /tmp 58 | - name: tmp-file 59 | mountPath: /mnt 60 | volumes: 61 | - name: tmp-store 62 | persistentVolumeClaim: 63 | claimName: pvc-cephfs 64 | readOnly: false 65 | - name: tmp-file 66 | persistentVolumeClaim: 67 | claimName: pvc-cephrbd 68 | readOnly: false 69 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/cephrbd-ext-loop.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: my-rbd-storage-external 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-cephrbd1 12 | namespace: my-rbd-storage-external 13 | spec: 14 | accessModes: 15 | - ReadWriteOnce 16 | resources: 17 | requests: 18 | storage: 20Gi 19 | storageClassName: ocs-external-storagecluster-ceph-rbd 20 | --- 21 | kind: PersistentVolumeClaim 22 | apiVersion: v1 23 | metadata: 24 | name: pvc-cephrbd2 25 | namespace: my-rbd-storage-external 26 | spec: 27 | accessModes: 28 | - ReadWriteOnce 29 | resources: 30 | requests: 31 | storage: 50Mi 32 | storageClassName: ocs-external-storagecluster-ceph-rbd 33 | --- 34 | apiVersion: batch/v1 35 | kind: Job 36 | metadata: 37 | name: batch2 38 | namespace: my-rbd-storage-external 39 | labels: 40 | app: batch2 41 | spec: 42 | template: 43 | metadata: 44 | labels: 45 | app: batch2 46 | spec: 47 | restartPolicy: OnFailure 48 | containers: 49 | - name: batch2 50 | image: amazon/aws-cli:latest 51 | command: ["sh"] 52 | args: 53 | - '-c' 54 | - 'while true; do echo "Creating temporary file"; export mystamp=$(date +%Y%m%d_%H%M%S); dd if=/dev/urandom of=/mnt/file_${mystamp} bs=1M count=1; echo "Copying temporary file"; cp /mnt/file_${mystamp} /tmp/file_${mystamp}; echo "Going to sleep"; sleep 60; echo "Removing temporary file"; rm /mnt/file_${mystamp}; done' 55 | volumeMounts: 56 | - name: tmp-store 57 | mountPath: /tmp 58 | - name: tmp-file 59 | mountPath: /mnt 60 | volumes: 61 | - name: tmp-store 62 | persistentVolumeClaim: 63 | claimName: pvc-cephrbd1 64 | readOnly: false 65 | - name: tmp-file 66 | persistentVolumeClaim: 67 | claimName: pvc-cephrbd2 68 | readOnly: false 69 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/cephrbd-loop.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: my-rbd-storage 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-cephrbd1 12 | namespace: my-rbd-storage 13 | spec: 14 | accessModes: 15 | - ReadWriteOnce 16 | resources: 17 | requests: 18 | storage: 20Gi 19 | storageClassName: ocs-storagecluster-ceph-rbd 20 | --- 21 | kind: PersistentVolumeClaim 22 | apiVersion: v1 23 | metadata: 24 | name: pvc-cephrbd2 25 | namespace: my-rbd-storage 26 | spec: 27 | accessModes: 28 | - ReadWriteOnce 29 | resources: 30 | requests: 31 | storage: 50Mi 32 | storageClassName: ocs-storagecluster-ceph-rbd 33 | --- 34 | apiVersion: batch/v1 35 | kind: Job 36 | metadata: 37 | name: batch2 38 | namespace: my-rbd-storage 39 | labels: 40 | app: batch2 41 | spec: 42 | template: 43 | metadata: 44 | labels: 45 | app: batch2 46 | spec: 47 | restartPolicy: OnFailure 48 | containers: 49 | - name: batch2 50 | image: amazon/aws-cli:latest 51 | command: ["sh"] 52 | args: 53 | - '-c' 54 | - 'while true; do echo "Creating temporary file"; export mystamp=$(date +%Y%m%d_%H%M%S); dd if=/dev/urandom of=/mnt/file_${mystamp} bs=1M count=1; echo "Copying temporary file"; cp /mnt/file_${mystamp} /tmp/file_${mystamp}; echo "Going to sleep"; sleep 60; echo "Removing temporary file"; rm /mnt/file_${mystamp}; done' 55 | volumeMounts: 56 | - name: tmp-store 57 | mountPath: /tmp 58 | - name: tmp-file 59 | mountPath: /mnt 60 | volumes: 61 | - name: tmp-store 62 | persistentVolumeClaim: 63 | claimName: pvc-cephrbd1 64 | readOnly: false 65 | - name: tmp-file 66 | persistentVolumeClaim: 67 | claimName: pvc-cephrbd2 68 | readOnly: false 69 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/file-random-read-4k.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "Currently mounted filesystems for Random READ test" 3 | df | grep 'data' 4 | echo "Changing working directory to /tmp/data" 5 | cd /tmp/data 6 | echo "Current working directory for control before execution" 7 | pwd 8 | set -x 9 | sysbench --threads=16 --test=fileio --file-total-size=128m --file-test-mode=rndrd --file-block-size=4k --file-io-mode=async --file-fsync-freq=0 prepare 10 | set +x 11 | pwd >/tmp/trace.txt;ls >>/tmp/trace.txt 12 | set -x 13 | sysbench --threads=16 --test=fileio --file-total-size=128m --file-test-mode=rndrd --file-block-size=4k --file-extra-flags=dsync run 14 | sysbench --threads=16 --test=fileio --file-total-size=128m --file-test-mode=rndrd --file-block-size=4k --file-io-mode=async --file-fsync-freq=0 cleanup 15 | set +x 16 | echo "Changing working directory to $HOME" 17 | cd ~ 18 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/file-random-read-4m.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "Currently mounted filesystems for Random READ test" 3 | df | grep 'data' 4 | echo "Changing working directory to /tmp/data" 5 | cd /tmp/data 6 | echo "Current working directory for control before execution" 7 | pwd 8 | set -x 9 | sysbench --threads=16 --test=fileio --file-total-size=512m --file-test-mode=rndrd --file-block-size=4m --file-io-mode=async --file-fsync-freq=0 prepare 10 | set +x 11 | pwd >/tmp/trace.txt;ls >>/tmp/trace.txt 12 | set -x 13 | sysbench --threads=16 --test=fileio --file-total-size=512m --file-test-mode=rndrd --file-block-size=4m --file-extra-flags=dsync run 14 | sysbench --threads=16 --test=fileio --file-total-size=512m --file-test-mode=rndrd --file-block-size=4m --file-io-mode=async --file-fsync-freq=0 cleanup 15 | set +x 16 | echo "Changing working directory to $HOME" 17 | cd ~ 18 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/file-random-readwrite-4k.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "Currently mounted filesystems for Random READ/WRITE test" 3 | df | grep 'data' 4 | echo "Changing working directory to /tmp/data" 5 | cd /tmp/data 6 | echo "Current working directory for control before execution" 7 | pwd 8 | set -x 9 | sysbench --threads=16 --test=fileio --file-total-size=128m --file-test-mode=rndrw --file-block-size=4k --file-io-mode=async --file-fsync-freq=0 prepare 10 | set +x 11 | pwd >/tmp/trace.txt;ls >>/tmp/trace.txt 12 | set -x 13 | sysbench --threads=16 --test=fileio --file-total-size=128m --file-test-mode=rndrw --file-block-size=4k --file-extra-flags=dsync run 14 | sysbench --threads=16 --test=fileio --file-total-size=128m --file-test-mode=rndrw --file-block-size=4k --file-io-mode=async --file-fsync-freq=0 cleanup 15 | set +x 16 | echo "Changing working directory to $HOME" 17 | cd ~ 18 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/file-random-readwrite-4m.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "Currently mounted filesystems for Random READ/WRITE test" 3 | df | grep 'data' 4 | echo "Changing working directory to /tmp/data" 5 | cd /tmp/data 6 | echo "Current working directory for control before execution" 7 | pwd 8 | set -x 9 | sysbench --threads=16 --test=fileio --file-total-size=512m --file-test-mode=rndrw --file-block-size=4m --file-io-mode=async --file-fsync-freq=0 prepare 10 | set +x 11 | pwd >/tmp/trace.txt;ls >>/tmp/trace.txt 12 | set -x 13 | sysbench --threads=16 --test=fileio --file-total-size=512m --file-test-mode=rndrw --file-block-size=4m --file-extra-flags=dsync run 14 | sysbench --threads=16 --test=fileio --file-total-size=512m --file-test-mode=rndrw --file-block-size=4m --file-io-mode=async --file-fsync-freq=0 cleanup 15 | set +x 16 | echo "Changing working directory to $HOME" 17 | cd ~ 18 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/file-random-write-4k.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "Currently mounted filesystems for Random WRITE test" 3 | df | grep 'data' 4 | echo "Changing working directory to /tmp/data" 5 | cd /tmp/data 6 | echo "Current working directory for control before execution" 7 | pwd 8 | set -x 9 | sysbench --threads=16 --test=fileio --file-total-size=128m --file-test-mode=rndwr --file-block-size=4k --file-io-mode=async --file-fsync-freq=0 prepare 10 | set +x 11 | pwd >/tmp/trace.txt;ls >>/tmp/trace.txt 12 | set -x 13 | sysbench --threads=16 --test=fileio --file-total-size=128m --file-test-mode=rndwr --file-block-size=4k --file-extra-flags=dsync run 14 | sysbench --threads=16 --test=fileio --file-total-size=128m --file-test-mode=rndwr --file-block-size=4k --file-io-mode=async --file-fsync-freq=0 cleanup 15 | set +x 16 | echo "Changing working directory to $HOME" 17 | cd ~ 18 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/file-random-write-4m.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "Currently mounted filesystems for Random WRITE test" 3 | df | grep 'data' 4 | echo "Changing working directory to /tmp/data" 5 | cd /tmp/data 6 | echo "Current working directory for control before execution" 7 | pwd 8 | set -x 9 | sysbench --threads=16 --test=fileio --file-total-size=512m --file-test-mode=rndwr --file-block-size=4m --file-io-mode=async --file-fsync-freq=0 prepare 10 | set +x 11 | pwd >/tmp/trace.txt;ls >>/tmp/trace.txt 12 | set -x 13 | sysbench --threads=16 --test=fileio --file-total-size=512m --file-test-mode=rndwr --file-block-size=4m --file-extra-flags=dsync run 14 | sysbench --threads=16 --test=fileio --file-total-size=512m --file-test-mode=rndwr --file-block-size=4m --file-io-mode=async --file-fsync-freq=0 cleanup 15 | set +x 16 | echo "Changing working directory to $HOME" 17 | cd ~ 18 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/file-sequential-read-1g.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "Currently mounted filesystems for Random READ test" 3 | df | grep 'data' 4 | echo "Changing working directory to /tmp/data" 5 | cd /tmp/data 6 | echo "Current working directory for control before execution" 7 | pwd 8 | set -x 9 | sysbench --threads=16 --test=fileio --file-num=2 --file-total-size=4096m --file-test-mode=seqrd --file-block-size=1g --file-io-mode=async --file-fsync-freq=0 prepare 10 | set +x 11 | pwd >/tmp/trace.txt;ls >>/tmp/trace.txt 12 | set -x 13 | sysbench --threads=2 --test=fileio --file-num=2 --file-total-size=4096m --file-test-mode=seqrd --file-block-size=1g --file-extra-flags=dsync run 14 | sysbench --threads=16 --test=fileio --file-num=2 --file-total-size=4096m --file-test-mode=seqrd --file-block-size=1g --file-io-mode=async --file-fsync-freq=0 cleanup 15 | set +x 16 | echo "Changing working directory to $HOME" 17 | cd ~ 18 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/file-sequential-read-4m.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "Currently mounted filesystems for Random READ test" 3 | df | grep 'data' 4 | echo "Changing working directory to /tmp/data" 5 | cd /tmp/data 6 | echo "Current working directory for control before execution" 7 | pwd 8 | set -x 9 | sysbench --threads=16 --test=fileio --file-total-size=512m --file-test-mode=seqrd --file-block-size=4m --file-io-mode=async --file-fsync-freq=0 prepare 10 | set +x 11 | pwd >/tmp/trace.txt;ls >>/tmp/trace.txt 12 | set -x 13 | sysbench --threads=16 --test=fileio --file-total-size=512m --file-test-mode=seqrd --file-block-size=4m --file-extra-flags=dsync run 14 | sysbench --threads=16 --test=fileio --file-total-size=512m --file-test-mode=seqrd --file-block-size=4m --file-io-mode=async --file-fsync-freq=0 cleanup 15 | set +x 16 | echo "Changing working directory to $HOME" 17 | cd ~ 18 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/file-sequential-readwrite-1g.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "Currently mounted filesystems for Random READ/WRITE test" 3 | df | grep 'data' 4 | echo "Changing working directory to /tmp/data" 5 | cd /tmp/data 6 | echo "Current working directory for control before execution" 7 | pwd 8 | set -x 9 | sysbench --threads=16 --test=fileio --file-num=2 --file-total-size=4096m --file-test-mode=seqrewr --file-block-size=1g --file-io-mode=async --file-fsync-freq=0 prepare 10 | set +x 11 | pwd >/tmp/trace.txt;ls >>/tmp/trace.txt 12 | set -x 13 | sysbench --threads=2 --test=fileio --file-num=2 --file-total-size=4096m --file-test-mode=seqrewr --file-block-size=1g --file-extra-flags=dsync run 14 | sysbench --threads=16 --test=fileio --file-num=2 --file-total-size=4096m --file-test-mode=seqrewr --file-block-size=1g --file-io-mode=async --file-fsync-freq=0 cleanup 15 | set +x 16 | echo "Changing working directory to $HOME" 17 | cd ~ 18 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/file-sequential-readwrite-4m.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "Currently mounted filesystems for Random READ/WRITE test" 3 | df | grep 'data' 4 | echo "Changing working directory to /tmp/data" 5 | cd /tmp/data 6 | echo "Current working directory for control before execution" 7 | pwd 8 | set -x 9 | sysbench --threads=16 --test=fileio --file-total-size=512m --file-test-mode=seqrewr --file-block-size=4m --file-io-mode=async --file-fsync-freq=0 prepare 10 | set +x 11 | pwd >/tmp/trace.txt;ls >>/tmp/trace.txt 12 | set -x 13 | sysbench --threads=16 --test=fileio --file-total-size=512m --file-test-mode=seqrewr --file-block-size=4m --file-extra-flags=dsync run 14 | sysbench --threads=16 --test=fileio --file-total-size=512m --file-test-mode=seqrewr --file-block-size=4m --file-io-mode=async --file-fsync-freq=0 cleanup 15 | set +x 16 | echo "Changing working directory to $HOME" 17 | cd ~ 18 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/file-sequential-write-1g.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "Currently mounted filesystems for Random WRITE test" 3 | df | grep 'data' 4 | echo "Changing working directory to /tmp/data" 5 | cd /tmp/data 6 | echo "Current working directory for control before execution" 7 | pwd 8 | set -x 9 | sysbench --threads=16 --test=fileio --file-num=2 --file-total-size=4096m --file-test-mode=seqwr --file-block-size=1g --file-io-mode=async --file-fsync-freq=0 prepare 10 | set +x 11 | pwd >/tmp/trace.txt;ls >>/tmp/trace.txt 12 | set -x 13 | sysbench --threads=2 --test=fileio --file-num=2 --file-total-size=4096m --file-test-mode=seqwr --file-block-size=1g --file-extra-flags=dsync run 14 | sysbench --threads=16 --test=fileio --file-num=2 --file-total-size=4096m --file-test-mode=seqwr --file-block-size=1g --file-io-mode=async --file-fsync-freq=0 cleanup 15 | set +x 16 | echo "Changing working directory to $HOME" 17 | cd ~ 18 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/file-sequential-write-4m.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "Currently mounted filesystems for Random WRITE test" 3 | df | grep 'data' 4 | echo "Changing working directory to /tmp/data" 5 | cd /tmp/data 6 | echo "Current working directory for control before execution" 7 | pwd 8 | set -x 9 | sysbench --threads=16 --test=fileio --file-total-size=512m --file-test-mode=seqwr --file-block-size=4m --file-io-mode=async --file-fsync-freq=0 prepare 10 | set +x 11 | pwd >/tmp/trace.txt;ls >>/tmp/trace.txt 12 | set -x 13 | sysbench --threads=16 --test=fileio --file-total-size=512m --file-test-mode=seqwr --file-block-size=4m --file-extra-flags=dsync run 14 | sysbench --threads=16 --test=fileio --file-total-size=512m --file-test-mode=seqwr --file-block-size=4m --file-io-mode=async --file-fsync-freq=0 cleanup 15 | set +x 16 | echo "Changing working directory to $HOME" 17 | cd ~ 18 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/obc-loop.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: webinar 6 | spec: {} 7 | --- 8 | apiVersion: objectbucket.io/v1alpha1 9 | kind: ObjectBucketClaim 10 | metadata: 11 | name: webinarbucket 12 | namespace: webinar 13 | spec: 14 | generateBucketName: "webinarbucket" 15 | storageClassName: openshift-storage.noobaa.io 16 | --- 17 | apiVersion: batch/v1 18 | kind: Job 19 | metadata: 20 | name: batch1 21 | namespace: webinar 22 | labels: 23 | app: batch1 24 | spec: 25 | template: 26 | metadata: 27 | labels: 28 | app: batch1 29 | spec: 30 | restartPolicy: OnFailure 31 | containers: 32 | - image: amazon/aws-cli:latest 33 | command: ["sh"] 34 | args: 35 | - '-c' 36 | - 'export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID ; export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY ; while true; do export mystamp=$(date +%Y%m%d_%H%M%S); dd if=/dev/urandom of=/tmp/file_${mystamp} bs=1M count=1; set -x && aws --no-verify-ssl --endpoint https://$BUCKET_HOST:$BUCKET_PORT s3 cp /tmp/file_${mystamp} s3://$BUCKET_NAME; sleep 60; rm /tmp/file_${mystamp}; done' 37 | name: batch1 38 | env: 39 | - name: BUCKET_NAME 40 | valueFrom: 41 | configMapKeyRef: 42 | name: webinarbucket 43 | key: BUCKET_NAME 44 | - name: BUCKET_HOST 45 | valueFrom: 46 | configMapKeyRef: 47 | name: webinarbucket 48 | key: BUCKET_HOST 49 | - name: BUCKET_PORT 50 | valueFrom: 51 | configMapKeyRef: 52 | name: webinarbucket 53 | key: BUCKET_PORT 54 | - name: AWS_DEFAULT_REGION 55 | valueFrom: 56 | configMapKeyRef: 57 | name: webinarbucket 58 | key: BUCKET_REGION 59 | - name: AWS_ACCESS_KEY_ID 60 | valueFrom: 61 | secretKeyRef: 62 | name: webinarbucket 63 | key: AWS_ACCESS_KEY_ID 64 | - name: AWS_SECRET_ACCESS_KEY 65 | valueFrom: 66 | secretKeyRef: 67 | name: webinarbucket 68 | key: AWS_SECRET_ACCESS_KEY 69 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/obc-rgw-ext.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: webinarrgw-ext 6 | spec: {} 7 | --- 8 | apiVersion: objectbucket.io/v1alpha1 9 | kind: ObjectBucketClaim 10 | metadata: 11 | name: webinarbucketrgw-ext 12 | namespace: webinarrgw-ext 13 | spec: 14 | generateBucketName: "webinarbucketrgw-ext" 15 | storageClassName: ocs-external-storageslcuter-ceph-rgw 16 | --- 17 | apiVersion: batch/v1 18 | kind: Job 19 | metadata: 20 | name: batch1 21 | namespace: webinarrgw-ext 22 | labels: 23 | app: batch1 24 | spec: 25 | template: 26 | metadata: 27 | labels: 28 | app: batch1 29 | spec: 30 | restartPolicy: OnFailure 31 | containers: 32 | - image: amazon/aws-cli:latest 33 | command: ["sh"] 34 | args: 35 | - '-c' 36 | - 'export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID ; export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY ; while true; do export mystamp=$(date +%Y%m%d_%H%M%S); dd if=/dev/urandom of=/tmp/file_${mystamp} bs=1M count=1; set -x && aws --no-verify-ssl --endpoint http://$BUCKET_HOST:$BUCKET_PORT s3 cp /tmp/file_${mystamp} s3://$BUCKET_NAME; sleep 60; rm /tmp/file_${mystamp}; done' 37 | name: batch1 38 | env: 39 | - name: BUCKET_NAME 40 | valueFrom: 41 | configMapKeyRef: 42 | name: webinarbucketrgw-ext 43 | key: BUCKET_NAME 44 | - name: BUCKET_HOST 45 | valueFrom: 46 | configMapKeyRef: 47 | name: webinarbucketrgw-ext 48 | key: BUCKET_HOST 49 | - name: BUCKET_PORT 50 | valueFrom: 51 | configMapKeyRef: 52 | name: webinarbucketrgw-ext 53 | key: BUCKET_PORT 54 | - name: AWS_DEFAULT_REGION 55 | valueFrom: 56 | configMapKeyRef: 57 | name: webinarbucketrgw-ext 58 | key: BUCKET_REGION 59 | - name: AWS_ACCESS_KEY_ID 60 | valueFrom: 61 | secretKeyRef: 62 | name: webinarbucketrgw-ext 63 | key: AWS_ACCESS_KEY_ID 64 | - name: AWS_SECRET_ACCESS_KEY 65 | valueFrom: 66 | secretKeyRef: 67 | name: webinarbucketrgw-ext 68 | key: AWS_SECRET_ACCESS_KEY 69 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/obc-rgw.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: webinarrgw 6 | spec: {} 7 | --- 8 | apiVersion: objectbucket.io/v1alpha1 9 | kind: ObjectBucketClaim 10 | metadata: 11 | name: webinarbucketrgw 12 | namespace: webinarrgw 13 | spec: 14 | generateBucketName: "webinarbucketrgw" 15 | storageClassName: ocs-storageslcuter-ceph-rgw 16 | --- 17 | apiVersion: batch/v1 18 | kind: Job 19 | metadata: 20 | name: batch1 21 | namespace: webinarrgw 22 | labels: 23 | app: batch1 24 | spec: 25 | template: 26 | metadata: 27 | labels: 28 | app: batch1 29 | spec: 30 | restartPolicy: OnFailure 31 | containers: 32 | - image: amazon/aws-cli:latest 33 | command: ["sh"] 34 | args: 35 | - '-c' 36 | - 'export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID ; export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY ; while true; do export mystamp=$(date +%Y%m%d_%H%M%S); dd if=/dev/urandom of=/tmp/file_${mystamp} bs=1M count=1; set -x && aws --no-verify-ssl --endpoint http://$BUCKET_HOST:$BUCKET_PORT s3 cp /tmp/file_${mystamp} s3://$BUCKET_NAME; sleep 60; rm /tmp/file_${mystamp}; done' 37 | name: batch1 38 | env: 39 | - name: BUCKET_NAME 40 | valueFrom: 41 | configMapKeyRef: 42 | name: webinarbucketrgw 43 | key: BUCKET_NAME 44 | - name: BUCKET_HOST 45 | valueFrom: 46 | configMapKeyRef: 47 | name: webinarbucketrgw 48 | key: BUCKET_HOST 49 | - name: BUCKET_PORT 50 | valueFrom: 51 | configMapKeyRef: 52 | name: webinarbucketrgw 53 | key: BUCKET_PORT 54 | - name: AWS_DEFAULT_REGION 55 | valueFrom: 56 | configMapKeyRef: 57 | name: webinarbucketrgw 58 | key: BUCKET_REGION 59 | - name: AWS_ACCESS_KEY_ID 60 | valueFrom: 61 | secretKeyRef: 62 | name: webinarbucketrgw 63 | key: AWS_ACCESS_KEY_ID 64 | - name: AWS_SECRET_ACCESS_KEY 65 | valueFrom: 66 | secretKeyRef: 67 | name: webinarbucketrgw 68 | key: AWS_SECRET_ACCESS_KEY 69 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/sysbench-rwo-idle.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: sysbench 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-sysbenchrbd-idle 12 | namespace: sysbench 13 | spec: 14 | accessModes: 15 | - ReadWriteOnce 16 | resources: 17 | requests: 18 | storage: 10Gi 19 | storageClassName: ocs-storagecluster-ceph-rbd 20 | --- 21 | apiVersion: batch/v1 22 | kind: Job 23 | metadata: 24 | name: sysbench-file-idle 25 | namespace: sysbench 26 | spec: 27 | template: 28 | metadata: 29 | name: sysbench-file-idle 30 | spec: 31 | containers: 32 | - name: sysbench-file-idle 33 | image: quay.io/vcppds7878/sysbench:latest 34 | command: ["sh"] 35 | args: 36 | - '-c' 37 | - 'echo "Entering sysbench IDLE mode. Script are in /tmp.";ls /tmp/*.sh;echo "Waiting for 10 minutes";sleep 600;echo "Waiting for 10 minutes";sleep 600;echo "Terminating"' 38 | volumeMounts: 39 | - name: tmp-store 40 | mountPath: /tmp/data 41 | volumes: 42 | - name: tmp-store 43 | persistentVolumeClaim: 44 | claimName: pvc-sysbenchrbd-idle 45 | readOnly: false 46 | restartPolicy: Never 47 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/sysbench-rwo-rread-4k.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: sysbench 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-sysbenchrbd-read 12 | namespace: sysbench 13 | spec: 14 | accessModes: 15 | - ReadWriteOnce 16 | resources: 17 | requests: 18 | storage: 5Gi 19 | storageClassName: ocs-storagecluster-ceph-rbd 20 | --- 21 | apiVersion: batch/v1 22 | kind: Job 23 | metadata: 24 | name: sysbench-file-read 25 | namespace: sysbench 26 | spec: 27 | template: 28 | metadata: 29 | name: sysbench-file-read 30 | spec: 31 | containers: 32 | - name: sysbench-file-read 33 | image: quay.io/vcppds7878/sysbench:latest 34 | command: ["sh"] 35 | args: 36 | - '-c' 37 | - '/tmp/file-random-read-4k.sh' 38 | volumeMounts: 39 | - name: tmp-store 40 | mountPath: /tmp/data 41 | volumes: 42 | - name: tmp-store 43 | persistentVolumeClaim: 44 | claimName: pvc-sysbenchrbd-read 45 | readOnly: false 46 | restartPolicy: Never 47 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/sysbench-rwo-rread-4m.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: sysbench 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-sysbenchrbd-read 12 | namespace: sysbench 13 | spec: 14 | accessModes: 15 | - ReadWriteOnce 16 | resources: 17 | requests: 18 | storage: 5Gi 19 | storageClassName: ocs-storagecluster-ceph-rbd 20 | --- 21 | apiVersion: batch/v1 22 | kind: Job 23 | metadata: 24 | name: sysbench-file-read 25 | namespace: sysbench 26 | spec: 27 | template: 28 | metadata: 29 | name: sysbench-file-read 30 | spec: 31 | containers: 32 | - name: sysbench-file-read 33 | image: quay.io/vcppds7878/sysbench:latest 34 | command: ["sh"] 35 | args: 36 | - '-c' 37 | - '/tmp/file-random-read-4m.sh' 38 | volumeMounts: 39 | - name: tmp-store 40 | mountPath: /tmp/data 41 | volumes: 42 | - name: tmp-store 43 | persistentVolumeClaim: 44 | claimName: pvc-sysbenchrbd-read 45 | readOnly: false 46 | restartPolicy: Never 47 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/sysbench-rwo-rreadwrite-4k.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: sysbench 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-sysbenchrbd-readwrite 12 | namespace: sysbench 13 | spec: 14 | accessModes: 15 | - ReadWriteOnce 16 | resources: 17 | requests: 18 | storage: 5Gi 19 | storageClassName: ocs-storagecluster-ceph-rbd 20 | --- 21 | apiVersion: batch/v1 22 | kind: Job 23 | metadata: 24 | name: sysbench-file-readwrite 25 | namespace: sysbench 26 | spec: 27 | template: 28 | metadata: 29 | name: sysbench-file-readwrite 30 | spec: 31 | containers: 32 | - name: sysbench-file-readwrite 33 | image: quay.io/vcppds7878/sysbench:latest 34 | command: ["sh"] 35 | args: 36 | - '-c' 37 | - '/tmp/file-random-readwrite-4k.sh' 38 | volumeMounts: 39 | - name: tmp-store 40 | mountPath: /tmp/data 41 | volumes: 42 | - name: tmp-store 43 | persistentVolumeClaim: 44 | claimName: pvc-sysbenchrbd-readwrite 45 | readOnly: false 46 | restartPolicy: Never 47 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/sysbench-rwo-rreadwrite-4m.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: sysbench 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-sysbenchrbd-readwrite 12 | namespace: sysbench 13 | spec: 14 | accessModes: 15 | - ReadWriteOnce 16 | resources: 17 | requests: 18 | storage: 5Gi 19 | storageClassName: ocs-storagecluster-ceph-rbd 20 | --- 21 | apiVersion: batch/v1 22 | kind: Job 23 | metadata: 24 | name: sysbench-file-readwrite 25 | namespace: sysbench 26 | spec: 27 | template: 28 | metadata: 29 | name: sysbench-file-readwrite 30 | spec: 31 | containers: 32 | - name: sysbench-file-readwrite 33 | image: quay.io/vcppds7878/sysbench:latest 34 | command: ["sh"] 35 | args: 36 | - '-c' 37 | - '/tmp/file-random-readwrite-4m.sh' 38 | volumeMounts: 39 | - name: tmp-store 40 | mountPath: /tmp/data 41 | volumes: 42 | - name: tmp-store 43 | persistentVolumeClaim: 44 | claimName: pvc-sysbenchrbd-readwrite 45 | readOnly: false 46 | restartPolicy: Never 47 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/sysbench-rwo-rwrite-4k.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: sysbench 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-sysbenchrbd-write 12 | namespace: sysbench 13 | spec: 14 | accessModes: 15 | - ReadWriteOnce 16 | resources: 17 | requests: 18 | storage: 5Gi 19 | storageClassName: ocs-storagecluster-ceph-rbd 20 | --- 21 | apiVersion: batch/v1 22 | kind: Job 23 | metadata: 24 | name: sysbench-file-write 25 | namespace: sysbench 26 | spec: 27 | template: 28 | metadata: 29 | name: sysbench-file-write 30 | spec: 31 | containers: 32 | - name: sysbench-file-write 33 | image: quay.io/vcppds7878/sysbench:latest 34 | command: ["sh"] 35 | args: 36 | - '-c' 37 | - '/tmp/file-random-write-4k.sh' 38 | volumeMounts: 39 | - name: tmp-store 40 | mountPath: /tmp/data 41 | volumes: 42 | - name: tmp-store 43 | persistentVolumeClaim: 44 | claimName: pvc-sysbenchrbd-write 45 | readOnly: false 46 | restartPolicy: Never 47 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/sysbench-rwo-rwrite-4m.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: sysbench 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-sysbenchrbd-write 12 | namespace: sysbench 13 | spec: 14 | accessModes: 15 | - ReadWriteOnce 16 | resources: 17 | requests: 18 | storage: 5Gi 19 | storageClassName: ocs-storagecluster-ceph-rbd 20 | --- 21 | apiVersion: batch/v1 22 | kind: Job 23 | metadata: 24 | name: sysbench-file-write 25 | namespace: sysbench 26 | spec: 27 | template: 28 | metadata: 29 | name: sysbench-file-write 30 | spec: 31 | containers: 32 | - name: sysbench-file-write 33 | image: quay.io/vcppds7878/sysbench:latest 34 | command: ["sh"] 35 | args: 36 | - '-c' 37 | - '/tmp/file-random-write-4m.sh' 38 | volumeMounts: 39 | - name: tmp-store 40 | mountPath: /tmp/data 41 | volumes: 42 | - name: tmp-store 43 | persistentVolumeClaim: 44 | claimName: pvc-sysbenchrbd-write 45 | readOnly: false 46 | restartPolicy: Never 47 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/sysbench-rwo-sread-1g.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: sysbench 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-sysbenchrbd-read 12 | namespace: sysbench 13 | spec: 14 | accessModes: 15 | - ReadWriteOnce 16 | resources: 17 | requests: 18 | storage: 5Gi 19 | storageClassName: ocs-storagecluster-ceph-rbd 20 | --- 21 | apiVersion: batch/v1 22 | kind: Job 23 | metadata: 24 | name: sysbench-file-read 25 | namespace: sysbench 26 | spec: 27 | template: 28 | metadata: 29 | name: sysbench-file-read 30 | spec: 31 | containers: 32 | - name: sysbench-file-read 33 | image: quay.io/vcppds7878/sysbench:latest 34 | command: ["sh"] 35 | args: 36 | - '-c' 37 | - '/tmp/file-sequential-read-1g.sh' 38 | volumeMounts: 39 | - name: tmp-store 40 | mountPath: /tmp/data 41 | volumes: 42 | - name: tmp-store 43 | persistentVolumeClaim: 44 | claimName: pvc-sysbenchrbd-read 45 | readOnly: false 46 | restartPolicy: Never 47 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/sysbench-rwo-sread-4m.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: sysbench 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-sysbenchrbd-read 12 | namespace: sysbench 13 | spec: 14 | accessModes: 15 | - ReadWriteOnce 16 | resources: 17 | requests: 18 | storage: 5Gi 19 | storageClassName: ocs-storagecluster-ceph-rbd 20 | --- 21 | apiVersion: batch/v1 22 | kind: Job 23 | metadata: 24 | name: sysbench-file-read 25 | namespace: sysbench 26 | spec: 27 | template: 28 | metadata: 29 | name: sysbench-file-read 30 | spec: 31 | containers: 32 | - name: sysbench-file-read 33 | image: quay.io/vcppds7878/sysbench:latest 34 | command: ["sh"] 35 | args: 36 | - '-c' 37 | - '/tmp/file-sequential-read-4m.sh' 38 | volumeMounts: 39 | - name: tmp-store 40 | mountPath: /tmp/data 41 | volumes: 42 | - name: tmp-store 43 | persistentVolumeClaim: 44 | claimName: pvc-sysbenchrbd-read 45 | readOnly: false 46 | restartPolicy: Never 47 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/sysbench-rwo-sreadwrite-1g.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: sysbench 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-sysbenchrbd-readwrite 12 | namespace: sysbench 13 | spec: 14 | accessModes: 15 | - ReadWriteOnce 16 | resources: 17 | requests: 18 | storage: 5Gi 19 | storageClassName: ocs-storagecluster-ceph-rbd 20 | --- 21 | apiVersion: batch/v1 22 | kind: Job 23 | metadata: 24 | name: sysbench-file-readwrite 25 | namespace: sysbench 26 | spec: 27 | template: 28 | metadata: 29 | name: sysbench-file-readwrite 30 | spec: 31 | containers: 32 | - name: sysbench-file-readwrite 33 | image: quay.io/vcppds7878/sysbench:latest 34 | command: ["sh"] 35 | args: 36 | - '-c' 37 | - '/tmp/file-sequential-readwrite-1g.sh' 38 | volumeMounts: 39 | - name: tmp-store 40 | mountPath: /tmp/data 41 | volumes: 42 | - name: tmp-store 43 | persistentVolumeClaim: 44 | claimName: pvc-sysbenchrbd-readwrite 45 | readOnly: false 46 | restartPolicy: Never 47 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/sysbench-rwo-sreadwrite-4m.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: sysbench 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-sysbenchrbd-readwrite 12 | namespace: sysbench 13 | spec: 14 | accessModes: 15 | - ReadWriteOnce 16 | resources: 17 | requests: 18 | storage: 5Gi 19 | storageClassName: ocs-storagecluster-ceph-rbd 20 | --- 21 | apiVersion: batch/v1 22 | kind: Job 23 | metadata: 24 | name: sysbench-file-readwrite 25 | namespace: sysbench 26 | spec: 27 | template: 28 | metadata: 29 | name: sysbench-file-readwrite 30 | spec: 31 | containers: 32 | - name: sysbench-file-readwrite 33 | image: quay.io/vcppds7878/sysbench:latest 34 | command: ["sh"] 35 | args: 36 | - '-c' 37 | - '/tmp/file-sequential-readwrite-4m.sh' 38 | volumeMounts: 39 | - name: tmp-store 40 | mountPath: /tmp/data 41 | volumes: 42 | - name: tmp-store 43 | persistentVolumeClaim: 44 | claimName: pvc-sysbenchrbd-readwrite 45 | readOnly: false 46 | restartPolicy: Never 47 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/sysbench-rwo-swrite-1g.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: sysbench 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-sysbenchrbd-write 12 | namespace: sysbench 13 | spec: 14 | accessModes: 15 | - ReadWriteOnce 16 | resources: 17 | requests: 18 | storage: 5Gi 19 | storageClassName: ocs-storagecluster-ceph-rbd 20 | --- 21 | apiVersion: batch/v1 22 | kind: Job 23 | metadata: 24 | name: sysbench-file-write 25 | namespace: sysbench 26 | spec: 27 | template: 28 | metadata: 29 | name: sysbench-file-write 30 | spec: 31 | containers: 32 | - name: sysbench-file-write 33 | image: quay.io/vcppds7878/sysbench:latest 34 | command: ["sh"] 35 | args: 36 | - '-c' 37 | - '/tmp/file-sequential-write-1g.sh' 38 | volumeMounts: 39 | - name: tmp-store 40 | mountPath: /tmp/data 41 | volumes: 42 | - name: tmp-store 43 | persistentVolumeClaim: 44 | claimName: pvc-sysbenchrbd-write 45 | readOnly: false 46 | restartPolicy: Never 47 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/sysbench-rwo-swrite-4m.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: sysbench 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-sysbenchrbd-write 12 | namespace: sysbench 13 | spec: 14 | accessModes: 15 | - ReadWriteOnce 16 | resources: 17 | requests: 18 | storage: 5Gi 19 | storageClassName: ocs-storagecluster-ceph-rbd 20 | --- 21 | apiVersion: batch/v1 22 | kind: Job 23 | metadata: 24 | name: sysbench-file-write 25 | namespace: sysbench 26 | spec: 27 | template: 28 | metadata: 29 | name: sysbench-file-write 30 | spec: 31 | containers: 32 | - name: sysbench-file-write 33 | image: quay.io/vcppds7878/sysbench:latest 34 | command: ["sh"] 35 | args: 36 | - '-c' 37 | - '/tmp/file-sequential-write-4m.sh' 38 | volumeMounts: 39 | - name: tmp-store 40 | mountPath: /tmp/data 41 | volumes: 42 | - name: tmp-store 43 | persistentVolumeClaim: 44 | claimName: pvc-sysbenchrbd-write 45 | readOnly: false 46 | restartPolicy: Never 47 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/sysbench-rwx-idle.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: sysbench 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-sysbench-idle 12 | namespace: sysbench 13 | spec: 14 | accessModes: 15 | - ReadWriteMany 16 | resources: 17 | requests: 18 | storage: 10Gi 19 | storageClassName: ocs-storagecluster-cephfs 20 | --- 21 | apiVersion: batch/v1 22 | kind: Job 23 | metadata: 24 | name: sysbench-file-idle 25 | namespace: sysbench 26 | spec: 27 | template: 28 | metadata: 29 | name: sysbench-file-idle 30 | spec: 31 | containers: 32 | - name: sysbench-file-idle 33 | image: quay.io/vcppds7878/sysbench:latest 34 | command: ["sh"] 35 | args: 36 | - '-c' 37 | - 'echo "Entering sysbench IDLE mode. Script are in /tmp.";ls /tmp/*.sh;echo "Waiting for 10 minutes";sleep 600;echo "Waiting for 10 minutes";sleep 600;echo "Terminating"' 38 | volumeMounts: 39 | - name: tmp-store 40 | mountPath: /tmp/data 41 | volumes: 42 | - name: tmp-store 43 | persistentVolumeClaim: 44 | claimName: pvc-sysbench-idle 45 | readOnly: false 46 | restartPolicy: Never 47 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/sysbench-rwx-rread-4k.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: sysbench 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-sysbench-read 12 | namespace: sysbench 13 | spec: 14 | accessModes: 15 | - ReadWriteMany 16 | resources: 17 | requests: 18 | storage: 5Gi 19 | storageClassName: ocs-storagecluster-cephfs 20 | --- 21 | apiVersion: batch/v1 22 | kind: Job 23 | metadata: 24 | name: sysbench-file-read 25 | namespace: sysbench 26 | spec: 27 | template: 28 | metadata: 29 | name: sysbench-file-read 30 | spec: 31 | containers: 32 | - name: sysbench-file-read 33 | image: quay.io/vcppds7878/sysbench:latest 34 | command: ["sh"] 35 | args: 36 | - '-c' 37 | - '/tmp/file-random-read-4k.sh' 38 | volumeMounts: 39 | - name: tmp-store 40 | mountPath: /tmp/data 41 | volumes: 42 | - name: tmp-store 43 | persistentVolumeClaim: 44 | claimName: pvc-sysbench-read 45 | readOnly: false 46 | restartPolicy: Never 47 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/sysbench-rwx-rread-4m.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: sysbench 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-sysbench-read 12 | namespace: sysbench 13 | spec: 14 | accessModes: 15 | - ReadWriteMany 16 | resources: 17 | requests: 18 | storage: 5Gi 19 | storageClassName: ocs-storagecluster-cephfs 20 | --- 21 | apiVersion: batch/v1 22 | kind: Job 23 | metadata: 24 | name: sysbench-file-read 25 | namespace: sysbench 26 | spec: 27 | template: 28 | metadata: 29 | name: sysbench-file-read 30 | spec: 31 | containers: 32 | - name: sysbench-file-read 33 | image: quay.io/vcppds7878/sysbench:latest 34 | command: ["sh"] 35 | args: 36 | - '-c' 37 | - '/tmp/file-random-read-4m.sh' 38 | volumeMounts: 39 | - name: tmp-store 40 | mountPath: /tmp/data 41 | volumes: 42 | - name: tmp-store 43 | persistentVolumeClaim: 44 | claimName: pvc-sysbench-read 45 | readOnly: false 46 | restartPolicy: Never 47 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/sysbench-rwx-rreadwrite-4k.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: sysbench 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-sysbench-readwrite 12 | namespace: sysbench 13 | spec: 14 | accessModes: 15 | - ReadWriteMany 16 | resources: 17 | requests: 18 | storage: 5Gi 19 | storageClassName: ocs-storagecluster-cephfs 20 | --- 21 | apiVersion: batch/v1 22 | kind: Job 23 | metadata: 24 | name: sysbench-file-readwrite 25 | namespace: sysbench 26 | spec: 27 | template: 28 | metadata: 29 | name: sysbench-file-readwrite 30 | spec: 31 | containers: 32 | - name: sysbench-file-readwrite 33 | image: quay.io/vcppds7878/sysbench:latest 34 | command: ["sh"] 35 | args: 36 | - '-c' 37 | - '/tmp/file-random-readwrite-4k.sh' 38 | volumeMounts: 39 | - name: tmp-store 40 | mountPath: /tmp/data 41 | volumes: 42 | - name: tmp-store 43 | persistentVolumeClaim: 44 | claimName: pvc-sysbench-readwrite 45 | readOnly: false 46 | restartPolicy: Never 47 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/sysbench-rwx-rreadwrite-4m.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: sysbench 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-sysbench-readwrite 12 | namespace: sysbench 13 | spec: 14 | accessModes: 15 | - ReadWriteMany 16 | resources: 17 | requests: 18 | storage: 5Gi 19 | storageClassName: ocs-storagecluster-cephfs 20 | --- 21 | apiVersion: batch/v1 22 | kind: Job 23 | metadata: 24 | name: sysbench-file-readwrite 25 | namespace: sysbench 26 | spec: 27 | template: 28 | metadata: 29 | name: sysbench-file-readwrite 30 | spec: 31 | containers: 32 | - name: sysbench-file-readwrite 33 | image: quay.io/vcppds7878/sysbench:latest 34 | command: ["sh"] 35 | args: 36 | - '-c' 37 | - '/tmp/file-random-readwrite-4m.sh' 38 | volumeMounts: 39 | - name: tmp-store 40 | mountPath: /tmp/data 41 | volumes: 42 | - name: tmp-store 43 | persistentVolumeClaim: 44 | claimName: pvc-sysbench-readwrite 45 | readOnly: false 46 | restartPolicy: Never 47 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/sysbench-rwx-rwrite-4k.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: sysbench 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-sysbench-write 12 | namespace: sysbench 13 | spec: 14 | accessModes: 15 | - ReadWriteMany 16 | resources: 17 | requests: 18 | storage: 5Gi 19 | storageClassName: ocs-storagecluster-cephfs 20 | --- 21 | apiVersion: batch/v1 22 | kind: Job 23 | metadata: 24 | name: sysbench-file-write 25 | namespace: sysbench 26 | spec: 27 | template: 28 | metadata: 29 | name: sysbench-file-write 30 | spec: 31 | containers: 32 | - name: sysbench-file-write 33 | image: quay.io/vcppds7878/sysbench:latest 34 | command: ["sh"] 35 | args: 36 | - '-c' 37 | - '/tmp/file-random-write-4k.sh' 38 | volumeMounts: 39 | - name: tmp-store 40 | mountPath: /tmp/data 41 | volumes: 42 | - name: tmp-store 43 | persistentVolumeClaim: 44 | claimName: pvc-sysbench-write 45 | readOnly: false 46 | restartPolicy: Never 47 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/sysbench-rwx-rwrite-4m.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: sysbench 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-sysbench-write 12 | namespace: sysbench 13 | spec: 14 | accessModes: 15 | - ReadWriteMany 16 | resources: 17 | requests: 18 | storage: 5Gi 19 | storageClassName: ocs-storagecluster-cephfs 20 | --- 21 | apiVersion: batch/v1 22 | kind: Job 23 | metadata: 24 | name: sysbench-file-write 25 | namespace: sysbench 26 | spec: 27 | template: 28 | metadata: 29 | name: sysbench-file-write 30 | spec: 31 | containers: 32 | - name: sysbench-file-write 33 | image: quay.io/vcppds7878/sysbench:latest 34 | command: ["sh"] 35 | args: 36 | - '-c' 37 | - '/tmp/file-random-write-4m.sh' 38 | volumeMounts: 39 | - name: tmp-store 40 | mountPath: /tmp/data 41 | volumes: 42 | - name: tmp-store 43 | persistentVolumeClaim: 44 | claimName: pvc-sysbench-write 45 | readOnly: false 46 | restartPolicy: Never 47 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/sysbench-rwx-sread-1g.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: sysbench 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-sysbench-read 12 | namespace: sysbench 13 | spec: 14 | accessModes: 15 | - ReadWriteMany 16 | resources: 17 | requests: 18 | storage: 5Gi 19 | storageClassName: ocs-storagecluster-cephfs 20 | --- 21 | apiVersion: batch/v1 22 | kind: Job 23 | metadata: 24 | name: sysbench-file-read 25 | namespace: sysbench 26 | spec: 27 | template: 28 | metadata: 29 | name: sysbench-file-read 30 | spec: 31 | containers: 32 | - name: sysbench-file-read 33 | image: quay.io/vcppds7878/sysbench:latest 34 | command: ["sh"] 35 | args: 36 | - '-c' 37 | - '/tmp/file-sequential-read-1g.sh' 38 | volumeMounts: 39 | - name: tmp-store 40 | mountPath: /tmp/data 41 | volumes: 42 | - name: tmp-store 43 | persistentVolumeClaim: 44 | claimName: pvc-sysbench-read 45 | readOnly: false 46 | restartPolicy: Never 47 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/sysbench-rwx-sread-4m.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: sysbench 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-sysbench-read 12 | namespace: sysbench 13 | spec: 14 | accessModes: 15 | - ReadWriteMany 16 | resources: 17 | requests: 18 | storage: 5Gi 19 | storageClassName: ocs-storagecluster-cephfs 20 | --- 21 | apiVersion: batch/v1 22 | kind: Job 23 | metadata: 24 | name: sysbench-file-read 25 | namespace: sysbench 26 | spec: 27 | template: 28 | metadata: 29 | name: sysbench-file-read 30 | spec: 31 | containers: 32 | - name: sysbench-file-read 33 | image: quay.io/vcppds7878/sysbench:latest 34 | command: ["sh"] 35 | args: 36 | - '-c' 37 | - '/tmp/file-sequential-read-4m.sh' 38 | volumeMounts: 39 | - name: tmp-store 40 | mountPath: /tmp/data 41 | volumes: 42 | - name: tmp-store 43 | persistentVolumeClaim: 44 | claimName: pvc-sysbench-read 45 | readOnly: false 46 | restartPolicy: Never 47 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/sysbench-rwx-sreadwrite-1g.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: sysbench 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-sysbench-readwrite 12 | namespace: sysbench 13 | spec: 14 | accessModes: 15 | - ReadWriteMany 16 | resources: 17 | requests: 18 | storage: 5Gi 19 | storageClassName: ocs-storagecluster-cephfs 20 | --- 21 | apiVersion: batch/v1 22 | kind: Job 23 | metadata: 24 | name: sysbench-file-readwrite 25 | namespace: sysbench 26 | spec: 27 | template: 28 | metadata: 29 | name: sysbench-file-readwrite 30 | spec: 31 | containers: 32 | - name: sysbench-file-readwrite 33 | image: quay.io/vcppds7878/sysbench:latest 34 | command: ["sh"] 35 | args: 36 | - '-c' 37 | - '/tmp/file-sequential-readwrite-1g.sh' 38 | volumeMounts: 39 | - name: tmp-store 40 | mountPath: /tmp/data 41 | volumes: 42 | - name: tmp-store 43 | persistentVolumeClaim: 44 | claimName: pvc-sysbench-readwrite 45 | readOnly: false 46 | restartPolicy: Never 47 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/sysbench-rwx-sreadwrite-4m.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: sysbench 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-sysbench-readwrite 12 | namespace: sysbench 13 | spec: 14 | accessModes: 15 | - ReadWriteMany 16 | resources: 17 | requests: 18 | storage: 5Gi 19 | storageClassName: ocs-storagecluster-cephfs 20 | --- 21 | apiVersion: batch/v1 22 | kind: Job 23 | metadata: 24 | name: sysbench-file-readwrite 25 | namespace: sysbench 26 | spec: 27 | template: 28 | metadata: 29 | name: sysbench-file-readwrite 30 | spec: 31 | containers: 32 | - name: sysbench-file-readwrite 33 | image: quay.io/vcppds7878/sysbench:latest 34 | command: ["sh"] 35 | args: 36 | - '-c' 37 | - '/tmp/file-sequential-readwrite-4m.sh' 38 | volumeMounts: 39 | - name: tmp-store 40 | mountPath: /tmp/data 41 | volumes: 42 | - name: tmp-store 43 | persistentVolumeClaim: 44 | claimName: pvc-sysbench-readwrite 45 | readOnly: false 46 | restartPolicy: Never 47 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/sysbench-rwx-swrite-1g.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: sysbench 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-sysbench-write 12 | namespace: sysbench 13 | spec: 14 | accessModes: 15 | - ReadWriteMany 16 | resources: 17 | requests: 18 | storage: 5Gi 19 | storageClassName: ocs-storagecluster-cephfs 20 | --- 21 | apiVersion: batch/v1 22 | kind: Job 23 | metadata: 24 | name: sysbench-file-write 25 | namespace: sysbench 26 | spec: 27 | template: 28 | metadata: 29 | name: sysbench-file-write 30 | spec: 31 | containers: 32 | - name: sysbench-file-write 33 | image: quay.io/vcppds7878/sysbench:latest 34 | command: ["sh"] 35 | args: 36 | - '-c' 37 | - '/tmp/file-sequential-write-1g.sh' 38 | volumeMounts: 39 | - name: tmp-store 40 | mountPath: /tmp/data 41 | volumes: 42 | - name: tmp-store 43 | persistentVolumeClaim: 44 | claimName: pvc-sysbench-write 45 | readOnly: false 46 | restartPolicy: Never 47 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/attachments/sysbench-rwx-swrite-4m.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: sysbench 6 | spec: {} 7 | --- 8 | kind: PersistentVolumeClaim 9 | apiVersion: v1 10 | metadata: 11 | name: pvc-sysbench-write 12 | namespace: sysbench 13 | spec: 14 | accessModes: 15 | - ReadWriteMany 16 | resources: 17 | requests: 18 | storage: 5Gi 19 | storageClassName: ocs-storagecluster-cephfs 20 | --- 21 | apiVersion: batch/v1 22 | kind: Job 23 | metadata: 24 | name: sysbench-file-write 25 | namespace: sysbench 26 | spec: 27 | template: 28 | metadata: 29 | name: sysbench-file-write 30 | spec: 31 | containers: 32 | - name: sysbench-file-write 33 | image: quay.io/vcppds7878/sysbench:latest 34 | command: ["sh"] 35 | args: 36 | - '-c' 37 | - '/tmp/file-sequential-write-4m.sh' 38 | volumeMounts: 39 | - name: tmp-store 40 | mountPath: /tmp/data 41 | volumes: 42 | - name: tmp-store 43 | persistentVolumeClaim: 44 | claimName: pvc-sysbench-write 45 | readOnly: false 46 | restartPolicy: Never 47 | -------------------------------------------------------------------------------- /training/modules/ocs4perf/nav.adoc: -------------------------------------------------------------------------------- 1 | 2 | * xref:ocs4perf.adoc[Test deployment post-install] 3 | -------------------------------------------------------------------------------- /ui/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/red-hat-storage/ocs-training/6e4a3ed932a9bcc8258fffd6f76ca28b087c42dc/ui/.nojekyll -------------------------------------------------------------------------------- /ui/partials/footer-content.hbs: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /ui/partials/header-content.hbs: -------------------------------------------------------------------------------- 1 |
2 | 40 |
41 | -------------------------------------------------------------------------------- /ui/ui.yml: -------------------------------------------------------------------------------- 1 | static_files: [ .nojekyll ] --------------------------------------------------------------------------------