The platform offers several methods to attach different types of storage to the applications. Mainly you can either setup storage using the options already included in the Component definitions, or attach the storage with traits.
apiVersion: core.oam.dev/v1beta1 kind: Application metadata: name: my-app spec: components: - name: backend # Name of the component type: webservice # Set to webservice properties: image: my-app-image:v1.0.0 # (Required) Container image volumeMounts: # (Optional) Definition of the volumes to be mounted pvc: # Using a Persistent Volume Claim - name: data mountPath: "/var/lib/db" claimName: "db-pvc" configMap: # Using a Config Map - name: cm-data mountPath: "/config" cmName: "db-config" secret: # Using a Secret - name: cert-data mountPath: "/certs" secretName: "db-certs" emptyDir: # Using an ephemeral mount - name: temp-data mountPath: "/var/lib/tmp"
For other component types, check the specific component documentation.
Similarly to the component types, some traits such as the storage one offer a method to attach volumes to a component. As an example, to attach storage using the previous trait use:
apiVersion: core.oam.dev/v1beta1 kind: Application metadata: name: my-app spec: components: - name: my-comp type: worker properties: image: my-app-image:v1.0.0 traits: - type: storage # Set to storage properties: emptyDir: # EmptyDir type storage - name: empty-name # (Required) the name of the volume mountPath: /mount/emptydir # (Required) mount path
For more information, check the specific trait documentation.