Skip to main content
Projects are a Rancher construct that provides multi-tenancy within a Kubernetes cluster by grouping namespaces and applying consistent policies, quotas, and access controls.

Project Resource

From pkg/apis/management.cattle.io/v3/authz_types.go:30

Project Spec

string
required
Human-readable name for the project
string
Optional description of the project’s purpose
string
required
Name of the cluster this project belongs to (immutable)
ProjectResourceQuota
Total resource quota shared across all namespaces in the project
ResourceQuotaLimit
Resource limits for the project
string
Total CPU limit (e.g., “4000m”)
string
Total memory limit (e.g., “8Gi”)
string
Total CPU requests (e.g., “2000m”)
string
Total memory requests (e.g., “4Gi”)
NamespaceResourceQuota
Default quota applied to each namespace in the project
ResourceQuotaLimit
Per-namespace resource limits
ContainerResourceLimit
Default resource limits for containers in the project
string
Default CPU limit per container (e.g., “200m”)
string
Default memory limit per container (e.g., “256Mi”)
string
Default CPU request per container (e.g., “100m”)
string
Default memory request per container (e.g., “128Mi”)

Project Status

array<ProjectCondition>
Current state of the project
string
Namespace used to store project-scoped resources (PRTBs, secrets)

Project Conditions

From pkg/apis/management.cattle.io/v3/authz_types.go:14
condition
Backing namespace has been created
condition
Project creator has been granted owner permissions
condition
Default network policy has been applied
condition
Initial RBAC roles have been created

Create Project

Create a new project within a cluster.

Response

List Projects

Retrieve all projects:

Filter by Cluster

Get Project

Retrieve a specific project:

Update Project

Update project configuration:

Delete Project

Delete a project:
Deleting a project will also delete all namespaces and resources within it.

Multi-Tenancy with Projects

Project Role Template Bindings (PRTB)

Grant users or groups access to a project:

Available Project Roles

role
Full administrative access to the project
role
Standard member access - can manage workloads and most resources
role
Read-only access to project resources

Namespace Management

List Project Namespaces

Get all namespaces in a project:

Move Namespace to Project

Assign a namespace to a project:

Create Namespace in Project

Resource Quotas

Understanding Resource Quotas

Projects support two levels of resource quotas:
  1. Project-level quota: Total resources across all namespaces
  2. Namespace-level quota: Default quota for each namespace

Example: Setting Quotas

Container Default Limits

Set default resource limits for all containers:
Container defaults apply when workloads don’t specify resource requests/limits.

Project Isolation

Network Policies

Enable network isolation between projects:
When enabled:
  • Pods in different projects cannot communicate by default
  • Intra-project communication is allowed
  • Explicit NetworkPolicies can override defaults

Best Practices

Create separate projects for different environments:
  • production
  • staging
  • development
Always define resource quotas to prevent resource exhaustion:
  • Project-level quotas for overall limits
  • Namespace defaults for consistent allocation
  • Container defaults to ensure all workloads have limits
Choose descriptive names that indicate:
  • Environment (prod, staging, dev)
  • Team or application (team-frontend, app-backend)
  • Purpose (ci-cd, monitoring)
Grant least-privilege access:
  • Use project-member for developers
  • Reserve project-owner for leads
  • Use read-only for monitoring tools
Enable network isolation for production projects to:
  • Prevent unauthorized access
  • Comply with security requirements
  • Isolate sensitive workloads

Monitoring Projects

Check Resource Usage

Get current resource usage for a project:

Watch Project Events

Monitor project-level events:

Next Steps

Workloads

Deploy applications in projects

RBAC

Configure role-based access control

Namespaces

Manage namespaces within projects