Create a ServiceAccount named lab1510access that has permissions to create:
Use a Role named role1510 in namespace access.
Create a pod named lab1510pod using the BusyBox image, running the command:
sleep infinity
The pod must use the ServiceAccount.
apiVersion: v1
kind: ServiceAccount
metadata:
name: lab1510access
namespace: access
The Role grants create permissions on Pods, Deployments, DaemonSets, and StatefulSets.
apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: role1510 namespace: access rules: - apiGroups: [""] resources: - pods verbs: - create - apiGroups: ["apps"] resources: - deployments - daemonsets - statefulsets verbs: - create
Bind the Role to the ServiceAccount.
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: role1510-binding
namespace: access
subjects:
- kind: ServiceAccount
name: lab1510access
namespace: access
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: role1510
apiVersion: v1
kind: Pod
metadata:
name: lab1510pod
namespace: access
spec:
serviceAccountName: lab1510access
containers:
- name: busybox
image: busybox
command:
- sleep
- infinity
kubectl apply -f lab1510.yaml
kubectl describe pod lab1510pod -n access
kubectl get sa -n access
kubectl get role -n access
kubectl describe role role1510 -n access
kubectl get rolebinding -n access
kubectl get pods -n access
kubectl describe pod lab1510pod -n access
kubectl get pod lab1510pod -n access -o yaml | grep serviceAccountName
Expected:
serviceAccountName: lab1510access
kubectl auth can-i create pods \
--as=system:serviceaccount:access:lab1510access \
-n access
kubectl auth can-i create deployments.apps \
--as=system:serviceaccount:access:lab1510access \
-n access
kubectl auth can-i create daemonsets.apps \
--as=system:serviceaccount:access:lab1510access \
-n access
kubectl auth can-i create statefulsets.apps \
--as=system:serviceaccount:access:lab1510access \
-n access
All commands should return:
yes