researcher-tenancy-provisioner

Provision isolated researcher namespaces with GPU quotas, RBAC, and JupyterHub profiles on shared Kubernetes clusters.

Updated Jul 16, 2026
One-click install
npx skills add https://github.com/Cloud-Byte-Consulting/plugins --skill researcher-tenancy-provisioner-cloud-byte-consulting
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: researcher-tenancy-provisioner
Source: https://github.com/Cloud-Byte-Consulting/plugins/tree/main/gpu-research-platform/skills/researcher-tenancy-provisioner
Command: npx skills add https://github.com/Cloud-Byte-Consulting/plugins --skill researcher-tenancy-provisioner-cloud-byte-consulting

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Onboarding researchers onto a shared GPU Kubernetes cluster usually means ad-hoc tickets, inconsistent quotas, and tenants who can interfere with each other or consume unbounded GPU budget. This Skill stamps out complete, bounded tenant environments in minutes so every researcher gets fair GPU access with proper isolation. ## Core Features & Use Cases - Namespace bundle templating: Generates Namespace, ResourceQuota (including requests.nvidia.com/gpu), LimitRange, default-deny NetworkPolicy, Pod Security labels, and cost-chargeback labels as one declarative bundle. - RBAC role patterns: Provides namespace-scoped Role/RoleBinding templates for researchers, team leads, and CI service accounts following CIS benchmarks (no wildcards, no cluster-admin). - JupyterHub GPU workbench: Configures Zero-to-JupyterHub profile lists mapping CPU-only, time-sliced GPU, dedicated GPU, and MIG-slice profiles with idle culling. - Tenancy escalation guidance: Defines explicit criteria for when a tenant should move from namespace-as-a-service to vCluster or a dedicated cluster. - Use Case: A platform engineer needs to onboard a vision-lab team of five researchers with a 4-GPU quota, isolated networking, and notebook access. The Skill produces the full YAML bundle, RBAC bindings, and JupyterHub profile config, committed to Git for GitOps delivery. ## Quick Start Ask the agent to onboard a new research team onto the shared GPU cluster with a specific GPU quota, storage need, and list of users, and it will generate the complete namespace bundle, RBAC, and JupyterHub configuration.

Frequently Asked Questions about researcher-tenancy-provisioner

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I set GPU quotas per team in Kubernetes?

Create a ResourceQuota in the team's namespace with requests.nvidia.com/gpu set to the team's allocation. Pair it with a LimitRange providing default requests and limits, because any namespace with a quota on a resource rejects pods that do not specify that resource.

How to isolate researchers on a shared Kubernetes cluster?

Stamp each tenant a namespace bundle: ResourceQuota for resource bounds, LimitRange for per-container shape, namespace-scoped RBAC Roles, a default-deny NetworkPolicy plus narrow allow rules, and Pod Security Standards labels. All five layers together form a complete tenant boundary.

When should I use vCluster instead of namespaces for multi-tenancy?

Escalate to vCluster when a tenant needs to install CRDs or operators, run their own Argo CD or platform tooling, require a different Kubernetes version, or has chronic API-level noisy-neighbor disputes. Otherwise namespaces cover roughly 90% of research tenants with less operational overhead.

How do I configure JupyterHub with GPU profiles on Kubernetes?

Use the Zero-to-JupyterHub Helm chart and define a singleuser profileList where each profile maps to a resource shape via kubespawner_override, including extra_resource_limits for nvidia.com/gpu, tolerations, and node selectors. Enable idle culling and spawn notebooks into tenant namespaces so GPU usage draws from tenant quota.

Why are pods rejected with exceeded quota errors in my namespace?

ResourceQuota is enforced at admission time, so a pod exceeding remaining quota fails creation with a Forbidden: exceeded quota error rather than staying Pending. Quota counts requested resources, not actual usage, so idle notebooks holding GPU requests still consume quota.

What RBAC permissions should researchers have in Kubernetes?

Grant a namespace-scoped Role with CRUD on pods, deployments, jobs, services, configmaps, and PVCs plus pods/log, pods/exec, and pods/portforward. Avoid cluster-scope grants, wildcard verbs or resources, and never bind cluster-admin to human users for daily work.