opened the following to track the 
discussion https://github.com/kubernetes/kubernetes/issues/47326


On Saturday, June 10, 2017 at 1:42:39 AM UTC-7, Mayank wrote:
>
> Pinging again. I would like to learn how others using Kubernetes are 
> separating different tenants using dynamic provisioning. Specifically if 
> people are using RBD provisioning , are they allocating a StorageClass and 
> hence a Ceph pool per customer ? What advantages or disadvantages do you 
> see with this approach ?
>
> What isolation mechanisms you use to make sure a PV of one customer is 
> never seen/used by another customer ?
>
> -Mayank
>
> On Tuesday, June 6, 2017 at 11:32:55 PM UTC-7, Mayank wrote:
>>
>> Adding Kubernetes-Users group to gather thinking from the community.
>>  
>>
>> On Tuesday, June 6, 2017 at 10:55:25 PM UTC-7, krma...@gmail.com wrote:
>>>
>>> Thanks all. The suggestion to use the reclaimPolicy of delete would not 
>>> work.  As Jeff points out, in case of Stateful apps, we would like to not 
>>> delete the volumes immediately  but keep them around for some time and 
>>> garbage collect them later.
>>>
>>> @David Could you elaborate on the inefficient utilization when you 
>>> mention the following  ?"If your set of tenants is very static, i guess you 
>>> could have one StorageClass per tenant and only use "recycle" reclaim 
>>> policy (which seems to be what you're advocating). But this seems pretty 
>>> inefficient from a utilization standpoint, as you'd end up accumulating the 
>>> max number of PVs used by each tenant."
>>>
>>> @David we are interested in RBD to start with. We would also be doing 
>>> EBS Volumes as well. 
>>>
>>> @Mike yes looks like encryption seems like a reasonable solution as long 
>>> as we can separate the encryption key per tenant and only the tenant has 
>>> access to its own encryption keys. EBS volumes are the only ones supporting 
>>> encryption. So for RBD , we are out of luck. Is there a general pattern of 
>>> doing encryption with external provisioning  ? What about incorporating in 
>>> in-tree plugins ?
>>>
>>> @Clayton Doesn't OpenShift have  use cases for keeping the volumes 
>>> around after the pods are gone ? Does OpenShift do any kind of multi 
>>> tenancy on top ?
>>>
>>> @Tim thanks. Not advocating that PV should or should not be namespaced 
>>> but just trying to understand the rationale for it. One thinking was if 
>>> PV's were dynamically provisioned in the namespace of the customer, that 
>>> might further limit their access.
>>>
>>> @Jeff i think your understanding of the problem is correct. But its 
>>> possible, i am solving the wrong problem and thats why i am seeking out for 
>>> help.
>>>
>>>
>>> Overall i want a multi tenant model, where:-
>>> -- accidentally its not possible for one tenant to mount a volume 
>>> created by another tenant
>>> -- its more secure and attacks /compromise limit the surface area of 
>>> attacks and access to volumes
>>>
>>> In the absence of encryption if there is a Kubernetes native way of 
>>> ACL'ing the PV's that doesnt rely on the underlying storage implementation 
>>> would be great. 
>>>
>>>
>>> On Monday, June 5, 2017 at 9:17:49 AM UTC-7, Jeff Vance wrote:
>>>>
>>>> "... guarantee that a volume allocated to one customer can never be 
>>>> accidentally allocated/mounted/accessed by another customer"
>>>>
>>>> I don't see "delete" as  the answer here since this deletes the actual 
>>>> data in the volume. What if the customer has legacy data or important data 
>>>> that lives beyond the pod(s) accessing it? Perhaps an "exclusive" 
>>>> accessMode might help? FSGroup IDs can control access and there's been 
>>>> talk 
>>>> about  adding ACLs to PVs. Or, maybe I've misunderstood the question?
>>>>
>>>> jeff
>>>>
>>>> On Saturday, June 3, 2017 at 11:39:16 PM UTC-7, krma...@gmail.com 
>>>> wrote:
>>>>>
>>>>> My team is currently trying to enable Stateful Apps for our internal 
>>>>> customers. One requirement that keeps coming up is how to isolate PV's of 
>>>>> one internal customer from PV's of another internal customer. 
>>>>>
>>>>> I see the following isolation mechanisms:-
>>>>> - A PV when bound to a PVC(inside namespace A) cannot be bound to 
>>>>> another PVC(inside namespace B) unless the unbind happens and hence are 
>>>>> exclusive. 
>>>>> - When using StorageClass, A PV of certain class can only be bound to 
>>>>> PVC of the same class. So that means PVC(of class A) can only be bound to 
>>>>> PV(of class A). This allows a PV allocated to one customer to not 
>>>>> accidently get allocated to another customer)
>>>>>
>>>>> While the above isolation is good, its not enough(as i understand it). 
>>>>> In a multi -tenant environment we want mechanisms which can guarantee 
>>>>> that 
>>>>> a volume allocated to one customer can never be accidentally 
>>>>> allocated/mounted/accessed by another customer. 
>>>>>
>>>>> What is Kubernetes recommendation , on how to achieve this isolation ?
>>>>>
>>>>> Few more questions:-
>>>>> - Why are Persistent Volumes not namespaced ?
>>>>> - Is one or more  StorageClass'es per Customer a good multi tenancy 
>>>>> model ? What other recommendations we have ?
>>>>>
>>>>>
>>>>> Would love to hear the general thinking and around this from both 
>>>>> developers and community
>>>>> -Mayank
>>>>>
>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"Kubernetes user discussion and Q&A" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to kubernetes-users+unsubscr...@googlegroups.com.
To post to this group, send email to kubernetes-users@googlegroups.com.
Visit this group at https://groups.google.com/group/kubernetes-users.
For more options, visit https://groups.google.com/d/optout.

Reply via email to