Jump to: navigation, search

StarlingX/Containers/Applications/app-ceph

Application: platform-armada-app

Note: This application repo will be renamed in the future to app-ceph so that the armada reference is dropped and it is aligned with the new naming convention.

Source

Building

  • From the Debian Build environment:
TBD

Testing

Once you have platform-integ-apps applied, some of the tests you can run are:

Using Cephfs provisioner

   1. Create a PVC
     a. Consider the PVC example.
         ---
         apiVersion: v1
         kind: PersistentVolumeClaim
         metadata:
         name: cephfs-pvc
         spec:
         accessModes:
             - ReadWriteMany
         resources:
             requests:
             storage: 1Gi
         storageClassName: cephfs
     b. Use "kubectl create -f <file.yaml>" 
     c. Check with "kubectl get pvc" if the PVC status is Bound.
   2. Create a pod
     a. Consider the pod example
         ---
         apiVersion: v1
         kind: Pod
         metadata:
           name: csi-cephfs-demo-pod
         spec:
           containers:
             - name: web-server
               image: docker.io/library/nginx:latest
               volumeMounts:
                 - name: mypvc
                   mountPath: /var/lib/www
           volumes:
             - name: mypvc
               persistentVolumeClaim:
                 claimName: cephfs-pvc
                 readOnly: false
     b. Use "kubectl create -f <file.yaml>" 
     c. Check with "kubectl get pods" if the pod is running and succesfully attached to the PVC
   3. Resize the PVC created
     a. Use "kubectl edit pvc <name_pvc>"
     b. Increase the pvc size on resources.requests.storage field
     c. Check with "kubectl get pvc" or "kubectl describe pvc <pvc_name>" if the PVC capacity changed after a few seconds
   4. Create a Volume Snapshot Class
     a. Check existing overrides for the cephfs-provisioner chart
       system helm-override-show platform-integ-apps cephfs-provisioner kube-system
     b. Update the 'snapshotClass.create' field to 'true' via helm
       system helm-override-update platform-integ-apps cephfs-provisioner kube-system --set snapshotClass.create=True
     c. Apply the overrides
       system application-apply platform-integ-apps
     d. After a few seconds, confirm the creation of the Volume Snapshot Class
       ~(keystone_admin)]$ kubectl get volumesnapshotclasses.snapshot.storage.k8s.io 
       NAME              DRIVER                DELETIONPOLICY   AGE
       cephfs-snapshot   cephfs.csi.ceph.com   Delete           5s
   5. Create a PVC snapshot.
       a. Consider the Cephfs Volume Snapshot yaml example
           ---
           apiVersion: snapshot.storage.k8s.io/v1
           kind: VolumeSnapshot
           metadata:
           name: <cephfs-pvc-snapshot-name>
           spec:
           volumeSnapshotClassName: cephfs-snapshot
           source:
               persistentVolumeClaimName: <cephfs-pvc-name>
       b. Replace the values in the 'persistentVolumeClaimName' and 'name' fields
       c. Create the Volume Snapshot
           kubectl create -f cephfs-volume-snapshot.yaml

Using RBD provisioner

   1. Create a PVC
     a. Consider the PVC example.
         ---
         apiVersion: v1
         kind: PersistentVolumeClaim
         metadata:
           name: rbd-pvc
         spec:
           accessModes:
             - ReadWriteOnce
           resources:
             requests:
               storage: 1Gi
           storageClassName: general
     b. Use "kubectl create -f <file.yaml>" 
     c. Check with "kubectl get pvc" if the PVC status is Bound
   2. Create a pod
     a. Consider the pod example.
         ---
         apiVersion: v1
         kind: Pod
         metadata:
           name: csi-rbd-demo-pod
         spec:
           containers:
             - name: web-server
               image: docker.io/library/nginx:latest
               volumeMounts:
                 - name: mypvc
                   mountPath: /var/lib/www/html
           volumes:
             - name: mypvc
               persistentVolumeClaim:
                 claimName: rbd-pvc
                 readOnly: false
     b. Use "kubectl create -f <file.yaml>" 
     c. Check with "kubectl get pods" if the pod is running and succesfully attached to the PVC
   3. Resize the PVC created
     a. Use "kubectl edit pvc <name_pvc>"
     b. Increase the pvc size on resources.requests.storage field
     c. Check with "kubectl get pvc" or "kubectl describe pvc <pvc_name>" if the PVC capacity changed after a few seconds
   4. Create a Volume Snapshot Class
     a. Check existing overrides for the rbd-provisioner chart
       system helm-override-show platform-integ-apps rbd-provisioner kube-system
     b. Update the 'snapshotClass.create' field to 'true' via helm
       system helm-override-update platform-integ-apps rbd-provisioner kube-system --set snapshotClass.create=True
     c. Apply the overrides
       system application-apply platform-integ-apps
     d. After a few seconds, confirm the creation of the Volume Snapshot Class
       ~(keystone_admin)]$ kubectl get volumesnapshotclasses.snapshot.storage.k8s.io 
       NAME              DRIVER                DELETIONPOLICY   AGE
       rbd-snapshot      rbd.csi.ceph.com      Delete           5s
   5. Create a PVC snapshot
       a. Consider the Cephfs Volume Snapshot yaml example
           ---
           apiVersion: snapshot.storage.k8s.io/v1
           kind: VolumeSnapshot
           metadata:
           name: <rbd-pvc-snapshot-name>
           spec:
           volumeSnapshotClassName: rbd-snapshot
           source:
               persistentVolumeClaimName: <rbd-pvc-name>
       b. Replace the values in the 'persistentVolumeClaimName' and 'name' fields
       c. Create the Volume Snapshot
           kubectl create -f cephfs-volume-snapshot.yaml