Kubernetes RBAC (Role-Based Access Control)¶

Fornisce un’identità ai Pod all’interno del cluster. Serve per autenticare i processi del Pod quando interagiscono con l'API Server di Kubernetes.
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: alloy-role
namespace: monitoring
rules:
- apiGroups: [""]
resources: ["pods", "pods/log"] # Accesso ai pod e relativi log
resourceNames: ["alloy-pod"] # Limita l'azione esclusivamente a questo pod
verbs: ["get", "list", "watch"]
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: example-role
namespace: monitoring
rules:
- apiGroups:
- "" # Core Group: pod, service, configmap, secret, node, pv, pvc
- "apps" # Workload: deployment, statefulset, daemonset, replicaset
- "batch" # Job, cronjob
- "networking.k8s.io" # Ingress, networkpolicy
- "storage.k8s.io" # Storageclass, volumeattachment
- "*" # Jolly: TUTTI i gruppi API (attenzione alla sicurezza!)
resources:
- "pods" # Risorsa singola
- "pods/log" # Sub-risorsa (permetti di vedere i log ma non di modificare il pod)
- "pods/exec" # Sub-risorsa (permetti di entrare nel pod)
- "deployments" # Nota: va sempre scritto al PLURALE
- "configmaps"
- "*" # Jolly: TUTTE le risorse del gruppo indicato sopra
resourceNames:
- "nginx-pod" # Opzionale: limita l'azione solo a questo specifico pod
- "app-config" # Limita l'azione solo a questa specifica configmap
verbs:
- "get" # Recupera il dettaglio di una singola risorsa
- "list" # Elenca tutte le risorse
- "watch" # Monitora i cambiamenti in tempo reale
- "create" # Crea una nuova risorsa
- "update" # Modifica una risorsa esistente (richiede intero oggetto)
- "patch" # Modifica parziale di una risorsa
- "delete" # Elimina una risorsa
- "deletecollection" # Elimina più risorse in una volta sola
- "*" # Jolly: TUTTE le azioni (permessi da admin)
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: alloy-cluster-role
rules:
- apiGroups: [""]
resources: ["pods", "pods/log"]
verbs: ["get", "list", "watch"]
-------------------------------
Prestare attenzione quando si modificano ClusterRoles e ClusterRoleBindings con nomi che contengono un system:prefisso. Le modifiche a queste risorse possono causare cluster non funzionali.
apiVersion: v1
kind: ResourceQuota
metadata:
name: compute-resources
namespace: target-namespace
spec:
hard:
requests.cpu: "1" # Somma massima delle CPU garantite (requests) per l'intero namespace
requests.memory: 1Gi # Somma massima della RAM garantita (requests) per l'intero namespace
limits.cpu: "2" # Tetto massimo di CPU (limits) utilizzabile complessivamente dai container
limits.memory: 2Gi # Tetto massimo di RAM (limits) utilizzabile complessivamente dai container
pods: "10" # Numero massimo di oggetti Pod che possono coesistere nel namespace