Skip to content

Latest commit

 

History

History
74 lines (57 loc) · 2.61 KB

simple-example.md

File metadata and controls

74 lines (57 loc) · 2.61 KB

Simple Example

As noted in this repositories main README, Shared Resources are currently only available on 'TechPreviewNoUpgrade' clusters. So, unless you are employing local development you can convert your cluster to Tech Preview via:

kubectl patch featuregate cluster --type='merge' -p '{"spec":{"featureSet":"TechPreviewNoUpgrade"}}' 

Then, from the root directory, create/apply the various API objects defined in the YAML files in the ./examples directory. There are two examples there, where both use the same namespace.

This document describes the simple Pod example.

The example is an application Pod, along with SharedConfigMap, Role, and RoleBinding definitions needed to illustrate the mounting of one of the API types (in this instance a ConfigMap from the openshift-config namespace) into the Pod.

To run this example, execute:

$ kubectl apply -R -f ./examples

NOTE: if you are running against a cluster with some form of Pod security, and you as a user do not have permissions to use Volumes of type csi, nor does the ServiceAccount of the Pod (default with our example at this time), the creation of the test Pod will be rejected.

Ensure the my-csi-app Pod comes up in Running state.

Then, if you want to validate the volume, inspect the application pod my-csi-app-pod.

To verify, go back into the Pod named my-csi-app-pod and list the contents:

$ kubectl exec  -n my-csi-app-namespace -it my-csi-app-pod /bin/sh
/ # ls -lR /data

You should see contents like:

/ # ls -lR /data 
ls -lR /data 
/data:
total 0
lrwxrwxrwx    1 root     root            11 Apr 14 14:37 key1 -> ..data/key1
lrwxrwxrwx    1 root     root            11 Apr 14 14:37 key2 -> ..data/key2
/ # 

Now, if you inspect the contents of that ConfigMap, you'll see keys in the data map that correspond to the 2 files created:

$ oc get cm my-config -o yaml
apiVersion: v1
data:
  key1: config1
  key2: config2
kind: ConfigMap
metadata:
  creationTimestamp: "2022-04-14T14:01:13Z"
  name: my-config
  namespace: my-csi-app-namespace
  resourceVersion: "35201"
  uid: fec12a32-79fc-44ef-b1dd-965b72041bbe

How Secrets and ConfigMaps are stored on disk mirror the storage for Secrets and ConfigMaps as done in the code in https://github.com/kubernetes/kubernetes where a file is created for each key in a ConfigMap data map or binaryData map and each key in a Secret data map.