1편: https://malwareanalysis.tistory.com/133
2편: https://malwareanalysis.tistory.com/135
이 챕터는 권한이 제한된 쿠버네티스 계정(serviceaccount)을 생성하는 방법을 다룹니다.
1. 1편에서 다루는 내용
1편에서는 개발자 계정을 발급하기 전 필요한 사전지식인 쿠버네티스 context에 대해 설명합니다.
2. 들어가며
쿠버네티스에 접근할 수 있는 계정을 별도로 만들어야 할 때가 있는데요. 예로 개발팀을 위한 쿠버네티스 계정을 만들어야 할 때가 있습니다. 그리고 권한을 제한해야 하겠죠.
쿠버네티스 계정을 발급하고 권한을 제한하는 방법이 serviceaccount와 role입니다. 아래 그림처럼 개발팀에게 발급해준 계정은 test namespace에서만 동작하게 하고 다른 namespace에서는 요청을 거부시킬 수 있습니다.
3. context 이해
3.1 context란?
pod 생성 등의 쿠버네티스 요청은 쿠버네티스 API서버가 처리합니다. 그리고 API서버는 사용자 요청을 처리하기 전 올바른 사용자가 맞는지(인증) 검사하고 사용할 수 있는 권한이 있는지(인가) 확인합니다. kubectl명령어를 사용할 때 알게모르게 인증, 인가 과정을 모두 거친거죠.
API서버는 무엇을 기준으로 인증, 인가를 확인할까요? 바로 쿠버네티스 context정보입니다. context정보에는 쿠버네티스 클러스터 정보와 사용자 정보가 존재합니다. 사용자가 요청할 때 별도로 인증, 인가 정보를 명시하지 않으면 context정보가 자동으로 요청정보와 같이 전송됩니다. 예로 kubectl 명령어를 사용하면 context정보가 같이 넘어갑니다.
context는 사용자 홈 디렉터리/.kube/config에 위치합니다.
3.2 context구조
앞서 말씀드린 것처럼 context는 쿠버네티스 클러스터 정보와 사용자 정보로 구성됩니다. 클러스터 클러스터 정보는 API서버의 인증서와 주소가 필요합니다. 유저 정보는 ssh키 쌍, 토큰, 사용자 이름과 비밀번호 등 여러가지 유형으로 유저를 설정합니다.
쿠버네티스를 설치하면 default로 쿠버네티스 admin 유저와 localhost 또는 host ip로 쿠버네티스 클러스터 정보가 설정되어 있습니다. 자동 설정된 값이 있었기 때문에 kubectl 명령어를 사용할 수 있었던 겁니다.
context는 cat $home/.kube/config 명령어로 확인할 수 있습니다.
3.3 현재 사용중인 context확인
현재 사용중인 context를 확인해봅시다.
아래 명령어를 사용하면 현재 사용중인 context정보가 출력됩니다. 아래 예제에서는 kubernetes-admin@cluster.local context를 사용합니다.
kubectl config current-context
context에 대한 자세한 정보는 get-contexts명령어로 확인할 수 있습니다. [그림 4]에서 설명한 것처럼 context는 cluster와 user(authinfo)로 구성됩니다. 현재 사용중인 kubernetes-admin context는 cluster.local클러스터와 kubernetes-admin user를 사용하고 있습니다.
쿠버네티스를 처음 설치하면 로컬에서 쿠버네티스 통신을 위해 localhost주소와 쿠버네티스 관리자 계정으로 구성된 context가 생성됩니다.
kubectl config get-contexts
3. 마치며
개발자 계정을 생성하면 계정을 사용할 수 있도록 context를 생성할 것입니다. 그러므로 이번 글에서 context에 대해 미리 살펴봤습니다.
다음 글에서는 serviceaccount를 사용한 개발자 계정을 생성하는 방법을 다룹니다.
'전공영역 공부 기록' 카테고리의 다른 글
쿠버네티스에서 권한이 제한된 개발자 계정 발급 2편 (0) | 2021.08.03 |
---|---|
윈도우에서 도커 설치 (0) | 2021.08.01 |
kubespray로 쿠버네티스 설치 (5) | 2021.07.05 |
github action과 heroku를 이용한 스프링부트 자동화 빌드/배포 (0) | 2021.06.29 |
네트워크 part1 - Region과 AZ (0) | 2021.06.28 |