<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Kubeflow – Multi-Tenancy in Kubeflow</title>
    <link>/docs/components/multi-tenancy/</link>
    <description>Recent content in Multi-Tenancy in Kubeflow on Kubeflow</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    
	  <atom:link href="/docs/components/multi-tenancy/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Docs: Introduction to Multi-user Isolation</title>
      <link>/docs/components/multi-tenancy/overview/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/multi-tenancy/overview/</guid>
      <description>
        
        
        &lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;
This Kubeflow component has &lt;b&gt;stable&lt;/b&gt; status. See the
&lt;a href=&#34;/docs/reference/version-policy/&#34;&gt;Kubeflow versioning policies&lt;/a&gt;.
&lt;/div&gt;
&lt;p&gt;In a production environment, it is often necessary to share the same pool
of resources across different teams and users. These different users need
a reliable way to isolate and protect their own resources, without accidentally
viewing or changing each other&amp;rsquo;s resources.&lt;/p&gt;
&lt;p&gt;Kubeflow v1.0.2 supports multi-user isolation, which applies
access control over namespaces and user-created
resources in a deployment. This feature provides the users with the
convenience of clutter-free browsing of notebooks, training jobs, serving
deployments and other resources. The isolation mechanisms also prevent
accidental deletion/modification of resources of other users in the deployment.&lt;/p&gt;
&lt;p&gt;Note that the isolation support in Kubeflow doesn&amp;rsquo;t provide any hard security
guarantees against malicious attempts by users to infiltrate other user&amp;rsquo;s
profiles.&lt;/p&gt;
&lt;h2 id=&#34;key-concepts&#34;&gt;Key concepts&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Administrator&lt;/strong&gt;: An administrator is someone who creates and maintains the Kubeflow cluster.
This person has the permission to grant access permissions to others.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;User&lt;/strong&gt;: A user is someone who has access to some set of resources in the cluster. A user
needs to be granted access permissions by the administrator.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Profile&lt;/strong&gt;: A profile is a grouping of all Kubernetes clusters owned by a user.&lt;/p&gt;
&lt;h2 id=&#34;current-integration-and-limitations&#34;&gt;Current integration and limitations&lt;/h2&gt;
&lt;p&gt;The Jupyter notebooks service is the first application to be fully integrated with
multi-user isolation. Access to the notebooks and the creation of notebooks is
controlled by the profile access policies set by the administrator or the owners
of the profiles. Resources created by the notebooks (for example, training jobs and
deployments) also inherit the same access.&lt;/p&gt;
&lt;p&gt;Metadata and Pipelines or any other applications currently don&amp;rsquo;t have full
fledged integration with isolation, though they do have access to the user
identity through the headers of the incoming requests. It&amp;rsquo;s up to the individual
applications to use the available identity and isolation features
in a way that makes sense for each application.&lt;/p&gt;
&lt;p&gt;On Google Cloud Platform (GCP), the authentication and identify token is generated by GCP IAM and carried
through the requests as a JWT Token in the request header. Other cloud providers can have a
similar header to provide identity information.&lt;/p&gt;
&lt;p&gt;For on-premises deployments, Kubeflow uses Dex as a federated OpenID connection
provider and can be integrated with LDAP or Active Directory to provide authentication
and identity services.&lt;/p&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Understand the &lt;a href=&#34;/docs/components/multi-tenancy/design/&#34;&gt;detailed design&lt;/a&gt; of Kubeflow&amp;rsquo;s multi-user isolation feature.&lt;/li&gt;
&lt;li&gt;Learn &lt;a href=&#34;/docs/components/multi-tenancy/getting-started/&#34;&gt;how to use multi-user isolation and profiles&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Design for Multi-user Isolation</title>
      <link>/docs/components/multi-tenancy/design/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/multi-tenancy/design/</guid>
      <description>
        
        
        &lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;
This Kubeflow component has &lt;b&gt;stable&lt;/b&gt; status. See the
&lt;a href=&#34;/docs/reference/version-policy/&#34;&gt;Kubeflow versioning policies&lt;/a&gt;.
&lt;/div&gt;
&lt;h2 id=&#34;design-overview&#34;&gt;Design overview&lt;/h2&gt;
&lt;p&gt;Kubeflow multi-tenancy is currently built around &lt;em&gt;user namespaces&lt;/em&gt;.
Specifically, Kubeflow defines user-specific namespaces and uses Kubernetes
&lt;a href=&#34;https://kubernetes.io/docs/reference/access-authn-authz/rbac/&#34;&gt;role-based access control (RBAC) policies&lt;/a&gt;
to manage user access.&lt;/p&gt;
&lt;p&gt;This feature enables users to share access to their workspaces.
Workspace owners can share/revoke workspace access with other users through the
Kubeflow UI.
After being invited, users have permissions to edit the workspace and operate
Kubeflow custom resources.&lt;/p&gt;
&lt;p&gt;Kubeflow multi-tenancy is self-served - a new user can self-register to create and own
their workspace through the UI.&lt;/p&gt;
&lt;p&gt;Kubeflow uses Istio to control in-cluster traffic. By default, requests to user
workspaces are denied unless allowed by Istio RBAC. In-bound user requests are
identified using an identity provider (for example, Identity Aware Proxy (IAP) on
Google Cloud or Dex for on-premises deployments), and then validated by Istio RBAC rules.&lt;/p&gt;
&lt;p&gt;Internally, Kubeflow uses the &lt;em&gt;Profile&lt;/em&gt; custom resource to control all policies, roles, and bindings involved,
and to guarantee consistency. Kubeflow also offers a plugin interface to manage external resource/policy outside Kubernetes,
for example interfacing with Amazon Web Services APIs for identity management.&lt;/p&gt;
&lt;p&gt;The following diagram illustrates a Kubeflow multi-tenancy cluster with two user-access routes:
via the Kubeflow central dashboard and via the kubectl command-line interface (CLI).&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;/docs/images/multi-tenancy-cluster.png&#34;
alt=&#34;multi tenancy cluster &#34;
class=&#34;mt-3 mb-3 border border-info rounded&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;feature-requirements&#34;&gt;Feature requirements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Kubeflow uses &lt;a href=&#34;https://istio.io/&#34;&gt;Istio&lt;/a&gt; to apply access control over in-cluster traffic.&lt;/li&gt;
&lt;li&gt;Kubeflow profile controller needs &lt;code&gt;cluster admin&lt;/code&gt; permission.&lt;/li&gt;
&lt;li&gt;Kubeflow UI needs to be served behind an identity aware proxy. The identity aware proxy and Kubernetes
master should share the same identity management.&lt;/li&gt;
&lt;li&gt;The Kubeflow installation on Google Cloud uses &lt;a href=&#34;https://cloud.google.com/kubernetes-engine&#34;&gt;GKE&lt;/a&gt; and &lt;a href=&#34;https://cloud.google.com/iap/docs/concepts-overview&#34;&gt;IAP&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;On-premises installations of Kubeflow make use of &lt;a href=&#34;https://github.com/dexidp/dex&#34;&gt;Dex&lt;/a&gt;, a flexible OpenID Connect (OIDC) provider.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;supported-platforms&#34;&gt;Supported platforms&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Kubeflow multi-tenancy is enabled by default if you deploy Kubeflow on GCP with &lt;a href=&#34;/docs/gke/deploy&#34;&gt;IAP&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;If you are not on GCP, you can deploy multi-tenancy to &lt;a href=&#34;/docs/started/k8s/kfctl-istio-dex/&#34;&gt;your existing cluster&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Learn &lt;a href=&#34;/docs/components/multi-tenancy/getting-started/&#34;&gt;how to use multi-user isolation and profiles&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Read more about &lt;a href=&#34;/docs/other-guides/istio-in-kubeflow/&#34;&gt;Istio in Kubeflow&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Getting Started with Multi-user Isolation</title>
      <link>/docs/components/multi-tenancy/getting-started/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/multi-tenancy/getting-started/</guid>
      <description>
        
        
        &lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;
This Kubeflow component has &lt;b&gt;stable&lt;/b&gt; status. See the
&lt;a href=&#34;/docs/reference/version-policy/&#34;&gt;Kubeflow versioning policies&lt;/a&gt;.
&lt;/div&gt;
&lt;h2 id=&#34;usage-overview&#34;&gt;Usage overview&lt;/h2&gt;
&lt;p&gt;After Kubeflow is installed and configured, you will by default
be accessing your &lt;em&gt;primary profile&lt;/em&gt;. A &lt;em&gt;profile&lt;/em&gt; owns a Kubernetes namespace of
the same name along with a collection of Kubernetes resources. Users have view
and modify access to their primary profiles. You can share
access to your profile with another user in the system. When sharing the access
to a profile with another user, you can choose to whether to provide only read access or read/modify
access. For all practical purposes when working
through the Kubeflow central dashboard, the active namespace is directly tied
with the active profile.&lt;/p&gt;
&lt;h2 id=&#34;example-of-usage&#34;&gt;Example of usage&lt;/h2&gt;
&lt;p&gt;You can select your active profile from the top bar on the Kubeflow central
dashboard.  Note that you can only see the profiles
to which you have view or modify access.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;/docs/images/select-profile.png&#34; 
alt=&#34;Select active profile &#34;
class=&#34;mt-3 mb-3 border border-info rounded&#34;&gt;&lt;/p&gt;
&lt;p&gt;This guide illustrates the user isolation functionality using the Jupyter
notebooks service which is the first service in the system to have full
integration with the multi-user isolation functionality.&lt;/p&gt;
&lt;p&gt;After you select an active profile, the Notebooks Servers UI
displays only the active notebook servers in the currently selected
profile. All other notebook servers remain hidden from you. If you switch
the active profile, the view switches the list of active notebooks
appropriately. You can connect to any of the listed notebook servers and
view and modify the existing Jupyter notebooks available in the server.&lt;/p&gt;
&lt;p&gt;For example, the following image shows the list of notebook servers available
in a user&amp;rsquo;s primary profile:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;/docs/images/notebooks-in-profile.png&#34; 
alt=&#34;List of notebooks in active profile &#34;
class=&#34;mt-3 mb-3 border border-info rounded&#34;&gt;&lt;/p&gt;
&lt;p&gt;When an unauthorized user accesses the notebooks in this profile, they see an
error:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;/docs/images/notebook-access-error.png&#34; 
alt=&#34;Error listing notebooks in inacessible profile&#34;
class=&#34;mt-3 mb-3 border border-info rounded&#34;&gt;&lt;/p&gt;
&lt;p&gt;When you create Jupyter notebook servers from the Notebooks Servers UI,
the notebook pods are created in your active profile. If you don&amp;rsquo;t have
modify access to the active profile, you can only browse currently active
notebook servers and access the existing notebooks but cannot create
new notebook servers in that profile. You can create notebook
servers in your primary profile which you have view and modify access to.&lt;/p&gt;
&lt;h2 id=&#34;onboarding-a-new-user&#34;&gt;Onboarding a new user&lt;/h2&gt;
&lt;p&gt;Kubeflow v1.0.2 provides automatic profile creation for authenticated users on
first login. Additionally, an &lt;strong&gt;administrator&lt;/strong&gt; can create a profile for any
user in the Kubeflow cluster.  Here an administrator is a person who has
&lt;a href=&#34;https://kubernetes.io/docs/reference/access-authn-authz/rbac/#user-facing-roles&#34;&gt;&lt;em&gt;cluster-admin&lt;/em&gt;&lt;/a&gt;
role binding in the Kubernetes cluster. This person has permissions to create
and modify Kubernetes resources in the cluster. For example, the person who
deployed Kubeflow will have administration privileges in the cluster.&lt;/p&gt;
&lt;h3 id=&#34;pre-requisites-grant-user-minimal-kubernetes-cluster-access&#34;&gt;Pre-requisites: grant user minimal Kubernetes cluster access&lt;/h3&gt;
&lt;p&gt;You must grant each user the minimal permission scope that allows them to
connect to the Kubernetes cluster.&lt;/p&gt;
&lt;p&gt;For example, for Google Cloud Platform (GCP) users, you should grant the
following Cloud Identity and Access Management (IAM) roles. In the following
commands, replace &lt;code&gt;[PROJECT]&lt;/code&gt; with your GCP project and replace &lt;code&gt;[EMAIL]&lt;/code&gt; with
the user&amp;rsquo;s email address:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;To access the Kubernetes cluster, the user needs the &lt;a href=&#34;https://cloud.google.com/kubernetes-engine/docs/how-to/iam&#34;&gt;Kubernetes Engine
Cluster Viewer&lt;/a&gt;
role:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gcloud projects add-iam-policy-binding [PROJECT] --member=user:[EMAIL] --role=roles/container.clusterViewer
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To access the Kubeflow UI through IAP, the user needs the
&lt;a href=&#34;https://cloud.google.com/iap/docs/managing-access&#34;&gt;IAP-secured Web App User&lt;/a&gt;
role:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gcloud projects add-iam-policy-binding [PROJECT] --member=user:[EMAIL] --role=roles/iap.httpsResourceAccessor
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To be able to run &lt;code&gt;gcloud get credentials&lt;/code&gt; and see logs in Cloud Logging
(formerly Stackdriver), the user needs viewer access on the project:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gcloud projects add-iam-policy-binding [PROJECT] --member=user:[EMAIL] --role=roles/viewer
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;automatic-creation-of-profiles&#34;&gt;Automatic creation of profiles&lt;/h3&gt;
&lt;p&gt;Kubeflow v1.0.2 provides automatic profile creation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Kubeflow deployment process automatically creates a profile for the user
performing the deployment. When the user access the Kubeflow central dashboard
they see their profile in the dropdown list.&lt;/li&gt;
&lt;li&gt;When an authenticated user logs into the system and visits the central
dashboard for the first time, they trigger a profile creation automatically.
&lt;ul&gt;
&lt;li&gt;A brief message introduces profiles: &lt;img
src=&#34;/docs/images/auto-profile1.png&#34; alt=&#34;Automatic profile creation
step 1&#34; class=&#34;mt-3 mb-3 border border-info rounded&#34;&gt;&lt;/li&gt;
&lt;li&gt;The user can name their profile and click &lt;em&gt;Finish&lt;/em&gt;:  &lt;img
src=&#34;/docs/images/auto-profile2.png&#34; alt=&#34;Automatic profile creation
step 2&#34; class=&#34;mt-3 mb-3 border border-info rounded&#34;&gt;&lt;/li&gt;
&lt;li&gt;This redirects the user to the dashboard where they can view and select
their profile in the dropdown list.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;manual-profile-creation&#34;&gt;Manual profile creation&lt;/h3&gt;
&lt;p&gt;An administrator can manually create profiles for users as described below.&lt;/p&gt;
&lt;p&gt;Create a
&lt;code&gt;profile.yaml&lt;/code&gt; file with the following content on your local machine:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: kubeflow.org/v1beta1
kind: Profile
metadata:
  name: profileName   # replace with the name of profile you want, this will be user&#39;s namespace name
spec:
  owner:
    kind: User
    name: userid@email.com   # replace with the email of the user
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Run the following command to create the corresponding profile resource:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;kubectl create -f profile.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The above command creates a profile named &lt;em&gt;profileName&lt;/em&gt;. The profile owner is
&lt;em&gt;&lt;a href=&#34;mailto:userid@email.com&#34;&gt;userid@email.com&lt;/a&gt;&lt;/em&gt; and has view and modify access to that profile.
The following resources are created as part of the profile creation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A Kubernetes namespace that shares the same name with the corresponding
profile.&lt;/li&gt;
&lt;li&gt;Kubernetes RBAC role binding for the namespace: &lt;em&gt;Admin&lt;/em&gt;. This makes the
profile owner the namespace administrator, thus giving them access to the
namespace using kubectl (via the Kubernetes API).&lt;/li&gt;
&lt;li&gt;Istio namespace-scoped ServiceRole: &lt;em&gt;ns-access-istio&lt;/em&gt;. This allows access to
all services in the target namespace via Istio routing.&lt;/li&gt;
&lt;li&gt;Istio namespace-scoped ServiceRoleBinding: &lt;em&gt;owner-binding-istio&lt;/em&gt;. This binds
the ServiceRole &lt;em&gt;ns-access-istio&lt;/em&gt; to the profile owner. The profile owner can
therefore access services in the namespace.&lt;/li&gt;
&lt;li&gt;Namespace-scoped service-accounts &lt;em&gt;editor&lt;/em&gt; and &lt;em&gt;viewer&lt;/em&gt; to be used by
user-created pods in the namespace.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Due to a one-to-one correspondence of profiles with Kubernetes
namespaces, the terms &lt;em&gt;profile&lt;/em&gt; and &lt;em&gt;namespace&lt;/em&gt; are sometimes used interchangably in the
documentation.&lt;/p&gt;
&lt;h3 id=&#34;batch-creation-of-user-profiles&#34;&gt;Batch creation of user profiles&lt;/h3&gt;
&lt;p&gt;Administrators might want to create profiles for multiple users as a batch. You can
do this by creating a &lt;code&gt;profile.yaml&lt;/code&gt; on the local machine with multiple sections of
profile descriptions as shown below:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: kubeflow.org/v1beta1
kind: Profile
metadata:
  name: profileName1   # replace with the name of profile you want
spec:
  owner:
    kind: User
    name: userid1@email.com   # replace with the email of the user
---
apiVersion: kubeflow.org/v1beta1
kind: Profile
metadata:
  name: profileName2   # replace with the name of profile you want
spec:
  owner:
    kind: User
    name: userid2@email.com   # replace with the email of the user
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Run the following command to apply the namespaces to the Kubernetes cluster:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;kubectl create -f profile.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This will create multiple profiles, one for each individual listed in the sections
in &lt;code&gt;profile.yaml&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;listing-and-describing-profiles&#34;&gt;Listing and describing profiles&lt;/h2&gt;
&lt;p&gt;An administrator can list the existing profiles in the system:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ kubectl get profiles
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;and describe a specific profile using:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ kubectl describe profile profileName
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;deleting-an-existing-profile&#34;&gt;Deleting an existing profile&lt;/h2&gt;
&lt;p&gt;An administrator can delete an existing profile using:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ kubectl delete profile profileName
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This will delete the profile, the corresponding namespace and any Kubernetes
resources associated with the profile. The profile&amp;rsquo;s owner or other users with
access to the profile will no longer have access to the profile and will not see
it in the dropdown list on the central dashboard.&lt;/p&gt;
&lt;h2 id=&#34;managing-contributors-through-the-kubeflow-ui&#34;&gt;Managing contributors through the Kubeflow UI&lt;/h2&gt;
&lt;p&gt;Kubeflow v1.0.2 allows sharing of profiles with other users in the
system.  An owner of a profile can share access to their profile using the
&lt;strong&gt;Manage Contributors&lt;/strong&gt; tab available through the dashboard.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;/docs/images/multi-user-contributors.png&#34; 
alt=&#34;Manage Contributors in Profiles&#34;
class=&#34;mt-3 mb-3 border border-info rounded&#34;&gt;&lt;/p&gt;
&lt;p&gt;Here is an example of the Manage Contributors tab view:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;/docs/images/manage-contributors.png&#34; 
alt=&#34;Manage Contributors in Profiles&#34;
class=&#34;mt-3 mb-3 border border-info rounded&#34;&gt;&lt;/p&gt;
&lt;p&gt;Notice that in the above view the account associated with the profile is a
cluster administrator (&lt;em&gt;Cluster Admin&lt;/em&gt;)
as this account was used to deploy Kubeflow. The view lists the
profiles accessible to the user along with the role associated with that
profile.&lt;/p&gt;
&lt;p&gt;To add or remove a contributor, add/remove the
email address or the user identifier in the &lt;strong&gt;Contributors to your namespace&lt;/strong&gt; field.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;/docs/images/add-contributors.png&#34; 
alt=&#34;Add Contributors&#34;
class=&#34;mt-3 mb-3 border border-info rounded&#34;&gt;&lt;/p&gt;
&lt;p&gt;The Manage Contributors tab shows the contributors that the namespace owner has
added. Note that the cluster administrator can view all the
profiles in the system along with their contributors.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;/docs/images/view-contributors.png&#34; 
alt=&#34;View Contributors&#34;
class=&#34;mt-3 mb-3 border border-info rounded&#34;&gt;&lt;/p&gt;
&lt;p&gt;The contributors have access to all the Kubernetes resources in the
namespace and can create notebook servers as well as access
existing notebooks.&lt;/p&gt;

      </description>
    </item>
    
  </channel>
</rss>
