@@ -155,7 +155,9 @@ def exapp_container_name(self) -> str:
155155 @computed_field
156156 @property
157157 def exapp_container_volume (self ) -> str :
158- return f"{ self .exapp_container_name } _data"
158+ # Role-agnostic multirole K8s Deployments share one PVC and mount it at the same path as APP_PERSISTENT_STORAGE
159+ base = f"nc_app_{ self .instance_id } _{ self .name } " if self .instance_id else f"nc_app_{ self .name } "
160+ return f"{ base } _data"
159161
160162 @computed_field
161163 @property
@@ -2548,6 +2550,9 @@ async def k8s_exapp_create(request: web.Request):
25482550 payload = await _parse_json_payload (request , CreateExAppPayload )
25492551 deployment_name = payload .exapp_k8s_name
25502552 pvc_name = payload .exapp_k8s_volume_name
2553+ base_exapp_name = _sanitize_k8s_name (
2554+ f"nc_app_{ payload .instance_id } _{ payload .name } " if payload .instance_id else f"nc_app_{ payload .name } "
2555+ )
25512556
25522557 LOGGER .info ("Creating K8s resources for '%s' (ns=%s)." , payload .name , K8S_NAMESPACE )
25532558
@@ -2557,9 +2562,9 @@ async def k8s_exapp_create(request: web.Request):
25572562 "metadata" : {
25582563 "name" : pvc_name ,
25592564 "labels" : {
2560- "app" : deployment_name ,
2561- "app.kubernetes.io/name " : deployment_name ,
2562- "app.kubernetes.io/component" : "exapp" ,
2565+ "app.kubernetes.io/name " : base_exapp_name ,
2566+ "app.kubernetes.io/part-of " : base_exapp_name ,
2567+ "app.kubernetes.io/component" : "exapp-data " ,
25632568 },
25642569 },
25652570 "spec" : {
0 commit comments