Oracle Cloud Infrastructure Kubernetes Engine (OKE) Virtual Nodes offer a serverless Kubernetes experience. Kubernetes schedules pods while OCI operates the worker infrastructure, so application teams do not manage node pools.
While this operating model simplifies infrastructure management, stateful workloads still require an answer to an important question: Where should durable application data live when pods are ephemeral?
Oracle Cloud Infrastructure File Storage (FSS) answers that question. FSS-backed persistent volumes are now available for OKE Virtual Nodes, giving workloads durable shared files without giving up the serverless operating model.
What File Storage adds to Virtual Nodes
Pods can restart, be replaced, or move as an application scales. Files kept only in a container disappear with that pod. With FSS, applications use the standard Kubernetes PersistentVolumeClaim, or PVC, model to retain files beyond the lifecycle of an individual pod.
FSS supports ReadWriteMany, or RWX, so multiple pods can mount the same filesystem for read and write access. This supports content services, shared build workspaces, data-processing pipelines, and AI or machine-learning artifacts.
The FSS CSI driver supports dynamic and static provisioning. With dynamic provisioning, a PVC that references a StorageClass prompts the driver to create the required FSS resources. With static provisioning, an administrator creates a PersistentVolume for an existing FSS export and binds it to a PVC. This WordPress example uses dynamic provisioning.
Why WordPress fits the pattern
WordPress stores posts, users, settings, and comments in MySQL, while uploads, themes, plugins, and other wp-content files live on the shared FSS volume. This lets multiple WordPress replicas serve the same site.
| State | Location |
| Database records | External MySQL |
| Shared WordPress files | FSS RWX volume |
| Web-serving compute | OKE Virtual Nodes |
Both pods mount the same FSS-backed PVC and use the same MySQL database. The Helm chart also gives each replica the same WordPress authentication keys and salts, so requests can safely reach either pod without sticky sessions.
Architecture
An Oracle Cloud Infrastructure Load Balancer distributes traffic to WordPress pods in a Virtual Node pool. . Each pod connects to:
- A shared File Storage mount through a Kubernetes PVC
- A private MySQL endpoint for relational data
FSS and its mount target are OCI resources in the VCN, outside the OKE cluster boundary. Kubernetes uses the StorageClass to provision the PVC, which connects the pods to the FSS export.

WordPress on OKE Virtual Nodes with FSS and external MySQL
Deploy the infrastructure and application
Use the Deploy to Oracle Cloud button in the accompanying repository to launch the Resource Manager stack. The stack can use an existing Enhanced OKE cluster or create one. It creates the Virtual Node pool and prompts for FSS and MySQL prerequisites. The stack provisions OCI infrastructure only.
After the stack completes, deploy WordPress with the included Helm chart. Create a wordpress-db Secret with host, database, username, and password keys. Copy the included values file, then replace its availability-domain, compartment-OCID, and mount-target-subnet placeholders.
git clone https://github.com/chiphwang1/oke-virtual-nodes-fss-wordpress.git
cp ./oke-virtual-nodes-fss-wordpress/examples/wordpress-values.yaml ./wordpress-values.yaml
helm upgrade --install wordpress \
+ ./oke-virtual-nodes-fss-wordpress/helm/wordpress-virtual-fss \
+ --namespace wordpress --create-namespace \
+ --values ./wordpress-values.yaml
Optional configuration: use fss.mode=dynamic-existing-mount-target with fss.mountTargetOcid when the CSI driver should use an existing mount target. Enable mysql.tls.enabled only after MySQL TLS is configured and tested.
Validate and operate
kubectl -n wordpress get pvc,pods,service
kubectl -n wordpress rollout status deployment/wordpress
The deployment is ready when the PVC is Bound, both WordPress pods are Ready, and the LoadBalancer Service has an external address.
Scaling and storage behavior
The chart starts two replicas and places them on separate Virtual Nodes. If the pool has only two usable Virtual Nodes, a third replica stays Pending. Add Virtual Node capacity before increasing the replica count or configuring an HPA above two replicas.
The PVC capacity request is required by Kubernetes, but it does not set a fixed FSS filesystem size. The example StorageClass uses Retain, which keeps FSS data after the PVC is deleted. Define backup, retention, and cleanup procedures before deploying the application.
Cleanup
Run helm uninstall wordpress –namespace wordpress, then review the Resource Manager stack, FSS exports, file systems, mount targets, and MySQL DB Systems before deleting them.
Conclusion
FSS-backed persistent volumes extend OKE Virtual Nodes to applications that need durable shared files. Virtual Nodes run the web tier, MySQL stores relational data, and FSS stores shared application content. Together, they provide a Kubernetes-native way to run file-oriented stateful applications without managing worker nodes.
Useful links:

