If we delete a namespace that owns a ClusterRole, which owns a ClusterRoleBinding, will they delete in a cascading fashion?
kubectl create ns starburstCreate a ClusterRole owned by the namespace:
kubectl apply -f -<<EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
ownerReferences:
- apiVersion: v1
kind: Namespace
name: starburst
uid: $(kubectl get ns starburst --template='{{ .metadata.uid}}')
creationTimestamp: null
name: secret-reader
rules:
- apiGroups:
- ""
resources:
- secrets
verbs:
- get
- list
EOFCreate a ClusterRoleBinding owned by the clusterrole
kubectl apply -f -<<EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
ownerReferences:
- apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
name: secret-reader
uid: $(kubectl get clusterrole secret-reader --template='{{ .metadata.uid }}')
creationTimestamp: null
name: secret-reader-binding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: secret-reader
subjects:
- kind: ServiceAccount
name: secret-watcher
namespace: default
EOFIf you delete the namespace, then the subsequent "owned" objects will also be deleted:
kubectl get clusterrole secret-reader
kubectl get clusterrolebinding secret-reader-binding
kubectl delete ns starburst
kubectl get clusterrole secret-reader
kubectl get clusterrolebinding secret-reader-bindingAlready cleaned because of the cascading delete