Authorization - 실습
1. 자신의 Namespace 내에 Pod들만 조회할 수 있는 권한
Role
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: r-01
namespace: nm-01
rules:
- apiGroups: [""]
verbs: ["get", "list"]
resources: ["pods"]
apiGroups
: 예를들어 apiVersionrbac.authorization.k8s.io/v1
에서rbac.authorization.k8s.io/
이 apiGroups- 코어 API는
apiGroups
에 내용을 넣지 않아도 됨 verbs
: API에 method를 지정resources
: 파드만 조회할 수 있는 권한을 만듦
RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: rb-01
namespace: nm-01
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: r-01
subjects:
- kind: ServiceAccount
name: default
namespace: nm-01
roleRef
: Role을 지정함subjects
: Service Account를 지정함
Service
apiVersion: v1
kind: Service
metadata:
name: svc-1
spec:
selector:
app: pod
ports:
- port: 8080
targetPort: 8080
실습 과정
- Role 생성
- RoleBinding 생성
- Secrets에서 Data에서 token 확인 후 복사
- Postman에서 복사한 token 값으러 Pod 조회
https://192.168.35.30:6443/api/v1/namespaces/nm-01/pods
- Service 생성
- Postman에서 Service 조회
https://192.168.35.30:6443/api/v1/namespaces/nm-01/services
서비스에 대한 조회 권한이 없다고 나옴
2. 모든 Namespace 내에 Object들에 대해 모든 권한을 부여
- 새로운 네임스페이스와 Service Account를 만들 것
- ClusterRole, ClusterRoleBinding도 만들 것
- token 값으로 nm-01, 클러스터 단위의 자원을 조회할 예정
Namespaces
apiVersion: v1
kind: Namespace
metadata:
name: nm-02
ServiceAccount
apiVersion: v1
kind: ServiceAccount
metadata:
name: sa-02
namespace: nm-02
ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: cr-02
rules:
- apiGroups: ["*"]
verbs: ["*"]
resources: ["*"]
- Role과 다른 점은 클러스터 단위의 오브젝트이기 때문에 metadata에 namespace를 지정하는 부분이 없음
- rules에서
["*"]
을 주면 모든 자원에 대해서 권한을 준다는 의미
ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: rb-02
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cr-02
subjects:
- kind: ServiceAccount
name: sa-02
namespace: nm-02
실습 과정
- nm-02 생성
- Service Account 생성 --> Secret이 생김
- ClusterRole 생성
- ClusterRoleBinding 생성
- Secrets에 가서 token 복사
- Postman에서 token 넣고 nm-01의 pod 조회
https://192.168.35.30:6443/api/v1/namespaces/nm-01/pods
- Postman에서 nm-01의 service 조회
https://192.168.35.30:6443/api/v1/namespaces/nm-01/services
- Postman에서 node 조회
https://192.168.35.30:6443/api/v1/nodes
출처
인프런 - 대세는 쿠버네티스
'네트워크 > k8s' 카테고리의 다른 글
[k8s] 34. Kubernetes Dashboard - 실습 (0) | 2021.02.24 |
---|---|
[k8s] 33. Kubernetes Dashboard (0) | 2021.02.24 |
[k8s] 31. Authorization - RBAC, Role, RoleBinding (0) | 2021.02.24 |
[k8s] 30. Authentication - 실습 (0) | 2021.02.24 |
[k8s] 29. Authentication - X509 Certs, kubectl, ServiceAccount (0) | 2021.02.21 |