Certified Kubernetes Administrator 취득 후기

2018년 12월 19일 고대하던 CKA 자격증을 취득하였습니다. 자랑겸, 정보 공유겸 취득 후기 포스트를 작성합니다.

제일 처음 자격증에 대한 정보를 알게된 건, Kubernetes를 이용한 기계학습 cluster를 구축하는 일을 하는 중, 쿠버네티스 공식 자격증이 있다는 것을 알게 되었습니다. 해당 자격증은 Cloud Native Computing Foundation에서 만들고 Linux Foundation에서 주관하는 쿠버네티스 Admin 자격증입니다. 가장 특이한 점으로는 보통 시험과는 다르게 문제와 답이 있어서 정답을 맞추는 시험이 아니라 제한 시간내에 직접 쿠버네티스 cluster를 조작하여 결과를 내야하는 완전한 hands-on 시험이라는 것입니다. 또한 쿠버네티스 공식 홈페이지 (https://kubernetes.io)를 시험 시간 동안 접속할 수 있기 때문에 전혀 암기할 필요 없이 쿠버네티스를 완벽하게 다룰 수만 있다면 풀 수 있는 시험입니다. 아직 한국어가 지원되지 않아서 전부 영어로 감독관과 대화하고 문제를 읽어야 하지만 그렇게 어려운 단어들이 나오지 않기 때문에 크게 문제가 되진 않습니다. https://www.cncf.io/certification/cka/

유용한 리소스 자료들

저는 다음과 같은 리소스를 참고하여 공부를 하였습니다. 개인적으로 자격증을 취득하는데 도움이 많이된 순서대로 나열하였습니다.

1. kubernetes 공식 홈페이지 Documentation

앞서 말씀 드린 것 처럼 시험 치는 중에 쿠버네티스 공식 홈페이지 접속이 가능합니다. 문제를 풀다가 기억이 잘 나지 않는 yaml 형식을 북붙할 수 있고 애매한 부분들에 대해서 참고할 수 있기 때문에 가장 중요하게 봐야할 리소스라고 생각합니다. 저는 공식 홈페이지에 있는 concept, task, reference 페이지를 전부 한번씩은 보고 시험을 쳤고 많은 도움을 얻었습니다.

2. CKA git repo

CKA 커리큘럼에 따라 학습해야 할 내용들을 잘 정리하였습니다. 자신이 부족한 부분이 어디인지 확인하기 좋은 깃허브 프로젝트입니다. 각 단원에 부분적으로 유튜브 영상들이 링크되어 있는데 전부 한번씩 보시길 추천 드립니다. 저는 특히 Networking 단원에서의 유튜브 영상들이 많이 도움 되었습니다. 시험 문제와는 별개로 쿠버네티스의 네트워크 메카니즘에 대해서 깊이 있게 이해할 수 있게 되었습니다.

3. kubernetes the hard way

쿠버네티스 클러스터를 구축하는 방법은 여러가지가 있습니다. 가장 간편하게는 kopsAWS CloudFormation template을 이용하여 명령어 몇줄로 전체 클러스터를 손쉽게 만드는 방법이 있습니다. 또는 kubeadm 툴을 이용하여 마스터 서버를 구축하고 worker node를 하나씩 붙여나가는 방법도 있습니다. kubeadm툴을 이용하면 kopscloudformation을 이용하는 방법보다는 low level 세팅을 할 수 있지만 여전히 여러 보이지 않는 magic이 숨겨져 있습니다. kubernetes the hard way에서는 완벽한 Ground base부터 쿠버네티스 클러스터를 구축합니다. 그렇기 때문에 쿠버네티스가 어떻게 동작하는지에 대해 세세하게 이해할 수 있었습니다. 저는 여기에 나와 있는 방법을 따라하면서 오히려 openssl, cfssl, systemd, tls와 같이 쿠버네티스 클러스터를 구축하기 위한 기술에 대해 더 공부하는 계기가 되었습니다.

4. Understanding kubernetes networking 시리즈

쿠버네티스 네트워킹에 대해 세부적인 내용으로 이해하기 쉽게 적은 블로그 시리즈입니다. 가장 먼저 Pod 네트워킹에 대해서 그 다음 service, 마지막으로 ingress가 어떻게 동작하는지 순서대로 정리가 되어 있습니다. 쿠버네티스 네트워킹을 이해하는데에 많은 도움을 얻게 되어 직접 제가 번역한 포스트도 있으니 참고 바랍니다.

5. Google Docs Resource

사람들이 유용하다고 생각한 리소스들을 쭉 listing한 페이지입니다. 전체를 다 볼 필요 없이 아래로 내려가 보시면 For CKA(D) Candidates section이 있는데 그쪽 부분 위주로 살펴 보시면 좋습니다. CKA 취득 후기 블로그와 유용한 kubectl 명령어 tip들을 정리한 부분이 도움이 되었습니다.

6. (도서) 쿠버네티스 시작하기

Kubernetes Up & Running 한글 버전 책입니다. 쿠버네티스를 처음 접하시는 분이라면 책이 그리 두껍지 않으니 전체적으로 다 읽어 보시길 바랍니다. 인터넷에 영문 pdf로도 돌아다니는 것 같아 참고해 보시기 바랍니다.

7. Network Policy

쿠버네티스 Network policy에 대해 시각적으로 이해하기 쉽게 정리가 잘 되어 있는 페이지입니다. 깃허브 튜토리얼을 따라 들어가시면 구체적인 예시와 함께 network policy manifest 파일들을 살펴보실 수 있습니다. 저는 여러 창을 띄어놓고 각 YAML 파일들을 비교해 보면서 어떠한 차이가 있는지 공부하였습니다. 개인적인 의견으로, 쿠버네티스 네트워크 정책 설정이 그리 직관적이진 않아 보입니다만 해당 페이지를 통해 많이 이해할 수 있었습니다.

8. http://www.kubernet.io/

각 단원마다 내용이 길진 않지만 꼭 확인하고 가야할 부분들만 콕 집어서 정리되어 있어서 좋았습니다. 대부분 쿠버네티스 공식 홈페이지 content로 링크가 되어 있긴 하지만 해당 페이지를 더 집중해서 보게 되어 시험 준비 마지막에 정리하는 차원에서 도움이 될 것 같습니다.

9. edX Introduction to Kubernetes (무료)

edX에서 제공하는 무료 쿠버네티스 강의입니다. 강의 레벨은 초급이어서 처음 쿠버네티스를 접하시는 분에게 적합합니다. 쿠버네티스를 처음 접할 때, 쿠버네티스 클러스터 환경을 세팅하는 부분부터 막혀서 제대로 실습을 하지 못하는 상황이 발생하는데 여기서는 Minikube를 세팅하는 방법부터 알려줘서 그대로 따라하기만 하면 되어서 좋습니다. (Minikube란, 쿠버네티스를 로컬 PC에서 가상으로 클러스터를 만들어서 테스트해 볼 수 있는 툴입니다.)

10. Linux Foundation Training (유료)

우연한 기회에 쿠버네티스 자격증 시험 바우처와 linux Foundation Training 코스를 번들로 싸게 판매하는 Cyber Monday Sale라는 이벤트를 통해 절반 이하의 가격에 구매하여 강의를 들었습니다. 강의 진행 방식은 100% 온라인이고 self-paced 방식이라 본인이 강의 진도를 마음대로 조절할 수 있습니다. 강의 레벨은 초급이며 컨텐츠는 전부 글로 되어 있습니다. 간단한 퀴즈 문제와 Hands-on Lab이 있어 직접 문제를 풀어볼 수 있습니다. 개인적으로는 세일을 통해서 강의를 들었지만 정식 구매 가격으로 수강을 생각하신다면 쿠버네티스 공식 홈페이지 문서를 전부 읽는 것만으로도 강의 내용을 전부 커버할 수 있다는 점을 참고하시기 바랍니다. 회사에서 교육 훈련비를 지원해주거나 금액적인 부분은 문제가 되지 않는다면 나쁘지 않은 선택으로 보입니다.


쿠버네티스 연습 환경

쿠버네티스를 공부하기 위한 연습 환경을 다음과 같은 방법으로 가질 수 있습니다.

1. AWS Heptio CloudFormation

Heptio에서 제공하는 AWS Cloud Formation template입니다. 손쉽게 쿠버네티스 single master cluster를 AWS EC2로 구축할 수 있게 해줍니다.

2. EKS

AWS에서 제공하는 완전 관리형 kubernetes 서비스입니다. EKS를 직접 구축하는 것 보다 eksctl툴을 이용하면 금방 쿠버네티스 클러스터를 뚝딱 만들 수 있습니다.

3. GKE

Google Cloud에서 제공하는 완전 관리형 kubernetes 서비스입니다. 아무래도 쿠버네티스 태생이 구글에서 만들었기 때문에 플랫폼 레벨에서 많은 것들을 지원해줍니다.

4. Play with kubernetes

웹상에서 쿠버네티스 클러스터를 구축해 볼 수 있게 제공해주는 웹 페이지입니다. 간단하게 쿠버네티스 클러스터를 만들어 줍니다. session timeout 시간이 있어서 나의 쿠버네티스 환경을 지속적으로 유지해 주지는 않습니다. 대신 AWS, GCP와는 다르게 무료로 사용할 수 있습니다.

5. Katacoda Playground

Play with kubernetes 와 비슷하게 웹상에서 쿠버네티스 클러스터를 조작해 볼 수 있게 해줍니다. 또한 따라해 볼 수 있는 튜토리얼이 잘 만들어져 있습니다.

6. CKA practice 환경

CKA 시험시 사용하는 환경과 유사한 웹 환경을 제공해 줍니다. 도커 compose를 이용하여 시험 환경을 구축해 볼 수 있습니다. 간단한 문제도 제공되어 실제 시험 환경의 느낌을 미리 체험해 볼 수 있습니다.


시험 사전 준비사항

  1. 여권: 영문으로 된 국제 공인 신분증이 필요합니다.
  2. Web Cam: 웹캠을 통해서 감독관이 수험자와 시험 공간을 확인합니다. 생각보다 깐깐하게 주변 환경을 체크하니 미리 필요 없는 물건 (전자기기, 종이, 노트북, 핸드폰, 태블릿 등)은 치우고 시험에 응시하시기 바랍니다.
  3. 마이크: 시험 준비물에는 마이크를 구비하라고 나와있지만 저는 실제로 사용할 일이 없었습니다. 시험 감독관하고는 웹 환경에서 제공하는 채팅으로 대화하였고 제가 마이크로 질문을 한다던가 감독관이 말로 대답하는 일은 없었습니다.
  4. Chrome browser: 해당 시험을 치르기 위해 명시적으로 크롬 브라우저를 쓸 것을 요구합니다. 그 이유는 시험을 치기 위해선 CKA에서 개발한 크롬 plugin을 설치해야하기 때문입니다. 해당 플러그인은 감독관이 웹캠을 통해서 저를 감독할 수 있게 해줍니다.
  5. 조용한 공간 확보: 시험을 치는 공간으로 수험자 외에 아무도 없는 조용한 공간을 요구합니다. 카페나 피씨방처럼 사람이 있는 공간을 금지합니다.
  6. cka tips 읽어보기: 시험을 치기 전에 시험 tips에 대해 꼭 전부 읽어보시고 시험이 응시하시길 바랍니다. 제가 설명 드린 내용보다 더 자세하게 설명되어 있습니다.

시험 응시

1. 시험 시간

시험응시 시간은 총 3시간입니다. 시험 시작하기 15분 전부터 시험 응시가 가능합니다. 시험 응시는 사전에 URL이 들어있는 메일을 받게 되고 시험 시간이 되어서 해당 URL로 접속하면 됩니다. 총 24문제를 3시간만에 풀어야하기 때문에 한문제당 약 7~8분 정도의 시간이 주어진다라고 보시면 됩니다. 뒤로 가면 갈수록 문제가 어려워지기 때문에 초반 문제들은 빨리 풀어 나가고 뒤에 문제에 더 많은 시간을 할애하면 좋습니다. 간혹 가다가 쉬운 문제인데 긴장해서 해결책이 잘 떠오르지 않는 경우가 있습니다. 그럴 경우 해당 문제를 마킹해 놓고 다음 문제로 옮겨가는 것을 권장합니다.

2. 시험시 주의 사항

시험 치는 동안 생각보다 까다롭게 감독을 합니다. 입을 가려서도 안되고 웹캠 밖에 나가서도 안되며 문제를 입으로 읽어서도 안됩니다. 저같은 경우 영어 문장을 입으로 소리내어서 읽는게 버릇이 되다보니 시험 치는 동안 무의식적으로 문제를 읽었는데 주의를 받았습니다. 또한 문제의 내용이 조금 애매모호한 부분이 있다고 생각하여 감독관에게 질문을 하였지만 문제와 관련된 질문에 대해서는 대답해주지 않았습니다.

3. 시험 tips
- imperative 명령어 숙달

쿠버네티스에서는 명령형 command를 지양합니다. 하지만 시험에서 만큼은 명령형 command를 사용하는 것을 권장 드립니다. 예) kubectl run mypod --image nginx --restart Never -oyaml --dry-run 그 이유는 한개 문제를 풀 때마다 YAML 파일을 만들거나 복붙을 하는 것 보다 명령형 command를 이용하여 template을 만들고 거기서 이것 저것 조금씩 수정하는 편이 훨씬 더 시간 경제적이기 때문입니다. 그렇기 때문에 쿠버네티스 imperative command에 대해서 숙지하시고 시험을 보시길 바랍니다.

- vim 숙달

어떤 서버를 사용하든 상관 없이 텍스트를 에디팅해야 하는 상황이면 vim만큼 유용한 툴이 없죠. 텍스트 파일을 작성하거나 수정해야할 문제가 있으니 vim을 숙달하시기 바랍니다. vim의 모든 기능을 알아야할 필요는 없이 간단한 삽입, 수정, 삭제만 할 수 있다면 충분할 것 같습니다.

- tmux, screen 숙달

여러 서버들을 동시에 접속하여 문제를 풀어야 하는 경우도 있기 때문에 tmux나 screen처럼 터미널 멀티플렉서를 활용하는 것을 추천 드립니다. 저 같은 경우 tmux를 사용하는데 개인적으로 사용하는 설정값을 시험 시작 직후 ~/.tmux.conf을 세팅하고 시작하였습니다.

- kubectl completion bash 세팅

시험을 준비하기 전까지 몰랐던 기능인데 kubectl 명령어 자동 완성 기능을 제공해주는 스크립트입니다. 꼭 세팅하셔서 오타로 고통 받는 일이 없으시길 바랍니다.

- 검색Query 활용

https://kubernetes.io/docs/search?q=$QUERY 쿠버네티스 공식 홈페이지의 내용을 쿼리하는 URL입니다. 시험 칠때 빠르게 해당 주제에 대한 위치로 가기 위한 방법으로 사용하기에 매우 유용합니다. 예) daemonset 관련된 문제: https://kubernetes.io/docs/search?q=daemonset


최종 결과

열심히 공부한 덕에 합격선인 74%보다 꽤 높은 91%로 자격증을 확득하게 되었습니다. 자격증을 획득한 것도 기뻤지만 자격증 공부를 함으로써 쿠버네티스에 대해서 훨씬 더 깊이 있는 이해를 할 수 있어서 정말 유용한 시간이 되었습니다. cka