Search
Duplicate
📒

[Kubernetes Infra] 09-3.

수업
Kubernetes Infra
주제
5 more properties
참고

1. 목차

NOTE
쿠버네티스의 인증과 인가
인증: 로그인 등의 절차를 거쳐 누구인지를 확인
인가: 인증을 거친 사용자가 어떤 권한을 가지는지 확인
RABC로 구현
쿠버네티스도 리눅스 환경의 root 사용자처럼 관리자 계정이 존재하지만, 사용자 계정에 따라 네임스페이스를 제한하거나 get/edit/create 등의 실행 가능한 동작 권한을 상세하게 지정할 수 있다.
오픈스택 등의 다른 클라우드 솔루션과 동일하게 쿠버네티스에서도 멀티테넌시 환경을 지원한다.
가장 많이 구현되는 멀티테넌시 사례
사용자별 권한을 구분해서 네임스페이스 단위로 특정 기능만 제한
네트워크 정책을 통한 외부 네임스페이스의 접근 차단
네임스페이스 단위로 리소스 할당량을 지정해 자원을 제한
우리는 네임스페이스에 대해서만 권한을 가지는 사용자를 생성
kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: wordpress-namespace-full-access namespace: wordpress rules: - apiGroups: ["", "extensions", "apps"] resources: ["*"] verbs: ["*"] - apiGroups: ["batch"] resources: - jobs - cronjobs verbs: ["*"]
YAML
복사
특정 네임스페이스의 전체 리소스 권한을 가진다.
kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: wordpress-namespace-full-access-rb namespace: wordpress roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: wordpress-namespace-full-access subjects: - kind: ServiceAccount name: wordpress-sa namespace: wordpress
YAML
복사
apiVersion: v1 kind: ServiceAccount metadata: name: wordpress-sa namespace: wordpress
YAML
복사
k apply -f full-namespace-role.yaml k apply -f namespace-rb.yaml k apply -f namespace-sa.yaml k create token wordpress-sa --duration=9999h
Bash
복사
./kube/config 파일에 다음과 같이 작성
contexts: # 기존 정보.. - context: cluster: cluster.local namespace: wordpress user: wordpress-user name: wordpress-ubun01 # ... users: # 기존 정보 .. - name: wordpress-user user: token: # 토큰값
Bash
복사
k create deployment nginx --image=nginx k get pod -n default k create deployment nginx --image=nginx -n default k get ns k get pv k ctx [기존 컨텍스트]
Bash
복사
쿠버네티스는 서비스 어카운트에 RoleBinding, ClusterRoleBinding을 지정한다. 서비스 어카운트는 토큰정보를 가지며 해당 정보를 kubeconfig파일에 지정하면서, 지정된 권한으로 접속한다.
쿠버네티스에서는 특정 네임스페이스 혹은 여러 네임스페이스 단위로 사용자 권한을 지정해서 멀티테넌시 용도로 클러스터를 분리해서 사용한다.
다른 네임스페이스의 리소스와 네트워크를 분리(NetworkPolicy)하고 ResourceQuotas로 자원 사용량을 제한함으로써 멀티네넌시 환경을 구축할 수 있따.

목차

NOTE

목차

NOTE