Started work on odf obc quota talk.
This commit is contained in:
		
							
								
								
									
										112
									
								
								2025-08-21-odf-s3-quotas/README.org
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										112
									
								
								2025-08-21-odf-s3-quotas/README.org
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,112 @@
 | 
				
			|||||||
 | 
					#+TITLE: Object Storage Quotas
 | 
				
			||||||
 | 
					#+DATE: <2025-08-21 Thu>
 | 
				
			||||||
 | 
					#+AUTHOR: James Blair
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					So you've got OpenShift Data Foundations installed in your OpenShift cluster and now you've got tenants of your clusters clamouring to consume object storage.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This short write-up will explain how to give each tenant a safe quota of storage they can consume.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Pre-requisites
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Before we begin, let's ensure we are logged into our cluster in the terminal and the cluster meets our version requirements.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					** Verify cluster auth status
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#+NAME: Verify cluster login status
 | 
				
			||||||
 | 
					#+begin_src bash
 | 
				
			||||||
 | 
					oc version && oc whoami
 | 
				
			||||||
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#+RESULTS: Verify cluster login status
 | 
				
			||||||
 | 
					#+begin_example
 | 
				
			||||||
 | 
					Client Version: 4.19.7
 | 
				
			||||||
 | 
					Kustomize Version: v5.5.0
 | 
				
			||||||
 | 
					Server Version: 4.19.9
 | 
				
			||||||
 | 
					Kubernetes Version: v1.32.7
 | 
				
			||||||
 | 
					admin
 | 
				
			||||||
 | 
					#+end_example
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					** Verify odf storage installed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#+NAME: Verify storage system state
 | 
				
			||||||
 | 
					#+begin_src bash
 | 
				
			||||||
 | 
					oc get crd | grep noobaa
 | 
				
			||||||
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#+RESULTS: Verify storage system state
 | 
				
			||||||
 | 
					#+begin_example
 | 
				
			||||||
 | 
					backingstores.noobaa.io                                           2025-08-20T22:36:51Z
 | 
				
			||||||
 | 
					bucketclasses.noobaa.io                                           2025-08-20T22:36:50Z
 | 
				
			||||||
 | 
					namespacestores.noobaa.io                                         2025-08-20T22:36:51Z
 | 
				
			||||||
 | 
					noobaaaccounts.noobaa.io                                          2025-08-20T22:36:51Z
 | 
				
			||||||
 | 
					noobaas.noobaa.io                                                 2025-08-20T22:36:51Z
 | 
				
			||||||
 | 
					#+end_example
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Create a sample tenant
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Let's create an example tenant project called ~storage-tenant~ that a separate user on our cluster called ~user1~ will own.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#+NAME: Create tenant namespace
 | 
				
			||||||
 | 
					#+begin_src bash
 | 
				
			||||||
 | 
					cat << EOF | oc apply --user admin --filename -
 | 
				
			||||||
 | 
					apiVersion: project.openshift.io/v1
 | 
				
			||||||
 | 
					kind: Project
 | 
				
			||||||
 | 
					metadata:
 | 
				
			||||||
 | 
					  annotations:
 | 
				
			||||||
 | 
					    openshift.io/requester: user1
 | 
				
			||||||
 | 
					  name: storage-tenant
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#+RESULTS: Create tenant namespace
 | 
				
			||||||
 | 
					#+begin_example
 | 
				
			||||||
 | 
					project.project.openshift.io/storage-tenant created
 | 
				
			||||||
 | 
					#+end_example
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Once the project is created we'll run a quick ~oc adm~ command to ensure ~user1~ has full privileges within the project.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#+NAME: Assign project permissions
 | 
				
			||||||
 | 
					#+begin_src bash
 | 
				
			||||||
 | 
					oc --user admin adm policy add-role-to-user admin user1 --namespace storage-tenant
 | 
				
			||||||
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#+RESULTS: Assign project permissions
 | 
				
			||||||
 | 
					#+begin_example
 | 
				
			||||||
 | 
					clusterrole.rbac.authorization.k8s.io/admin added: "user1"
 | 
				
			||||||
 | 
					#+end_example
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Create a custom bucket class
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#+NAME: Create custom bucket class
 | 
				
			||||||
 | 
					#+begin_src bash
 | 
				
			||||||
 | 
					cat << EOF | oc --user admin apply --filename -
 | 
				
			||||||
 | 
					apiVersion: noobaa.io/v1alpha1
 | 
				
			||||||
 | 
					kind: BucketClass
 | 
				
			||||||
 | 
					metadata:
 | 
				
			||||||
 | 
					  finalizers:
 | 
				
			||||||
 | 
					  - noobaa.io/finalizer
 | 
				
			||||||
 | 
					  labels:
 | 
				
			||||||
 | 
					    app: noobaa
 | 
				
			||||||
 | 
					  name: custom-tenant-bucket-class
 | 
				
			||||||
 | 
					  namespace: openshift-storage
 | 
				
			||||||
 | 
					spec:
 | 
				
			||||||
 | 
					  placementPolicy:
 | 
				
			||||||
 | 
					    tiers:
 | 
				
			||||||
 | 
					    - backingStores:
 | 
				
			||||||
 | 
					      - noobaa-default-backing-store
 | 
				
			||||||
 | 
					  quota:
 | 
				
			||||||
 | 
					    maxSize: 1Gi
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#+RESULTS: Create custom bucket class
 | 
				
			||||||
 | 
					#+begin_example
 | 
				
			||||||
 | 
					bucketclass.noobaa.io/custom-tenant-bucket-class created
 | 
				
			||||||
 | 
					#+end_example
 | 
				
			||||||
		Reference in New Issue
	
	Block a user