와탭 프론트엔드 개발자가 말하는 CKA 취득기
안녕하세요, 와탭랩스의 프론트엔드 개발자 조이성입니다. 저는 2023년의 목표로 삼았던 CKA 자격증을 취득한 후기를 이야기하려고 합니다. 이 콘텐츠로 CKA 취득을 준비하는 분들에게 많은 도움이 되길 바랍니다.
쿠버네티스 공인 자격증은 CKAD, CKA, CKS 등 총 3개가 있습니다. 그중 CKA는 CKAD 다음 단계의 난이도를 가진 시험으로, '쿠버네티스 관리자'라는 직무를 수행할 수 있는 기술과 지식, 역량을 갖추고 있음을 입증하는 자격시험입니다.
CKA 자격증을 취득한 이유
CKA 자격증을 취득했다고 하면 "프론트엔드 개발자가 왜 쿠버네티스 자격증을?"라는 질문을 받을 것 같습니다. 개인적으로 저는 항상 '공부는 실무와 연결되어야 한다'라는 생각을 가지고 있습니다. 저의 주요 업무는 쿠버네티스 모니터링 화면을 개발하는 것입니다. 그렇기 때문에, 쿠버네티스와 그 지표들에 대한 깊은 이해가 필요했습니다.
쿠버네티스를 조금씩 이해할 때마다 "이 지표에는 오류가 있으니 서버 개발자에게 확인을 요청해야겠다"라고 생각하거나, "이런 데이터를 이렇게 표현한다면 사용자의 모니터링에 도움이 되지 않을까?"라는 아이디어가 떠올랐습니다. 그래서 올해는 쿠버네티스 자격증을 취득하여 쿠버네티스에 대해 더 깊게 이해해야겠다고 다짐했습니다. 이를 통해 사용자를 위한 화면을 더 잘 개발하고 싶었습니다.
CKA 자격증 공부 방법
CKA 공부를 시작하기는 어려웠습니다. 시작이 중요하다고 하지만 업무와 병행하다 보니 시작 자체가 쉽지 않았습니다. 그러던 중 저희 쿠버네티스 그룹의 PO이신 진식님께서 쪽지시험 몇 개를 내주셨습니다. 이 쪽지시험은 공부를 시작하는 좋은 계기가 되었습니다. 물론 아무런 공부 없이 본 시험이었기 때문에 거의 풀지 못했습니다. 그러나 다음 쪽지시험에서는 조금이라도 문제를 풀어보자는 생각이 들면서 공부를 시작하게 되었습니다. 게다가 공부를 시작한 후에는 쪽지시험에 나온 내용들이 더 잘 이해되고 쉽게 외워졌습니다. 이 글의 마지막에 몇 개의 쪽지시험 문제를 적어두었습니다. 여러분도 제가 연습한 쪽지시험으로 CKA공부를 시작하게 되는 계기가 되었으면 좋겠습니다.
공부를 시작한 후 Udemy의 "Certified Kubernetes Administrator With Practice Tests" 강의를 신청했습니다. 이 강의는 매 회차마다 실습을 수행할 수 있어서 이론적인 내용을 이해하는 데 큰 도움이 되었습니다. 실습 문제를 반복하다 보니 나중에는 손이 머리보다 먼저 움직이는 것을 느낄 수 있었습니다. CKA 시험 준비에 이 강의는 정말 많은 도움을 주었습니다. 다만 아쉬운 점은 한국어 자막이 잘 지원되지 않는다는 것입니다. 그러나 인도 영어도 몇 번 들어보면 익숙해집니다.
강의를 듣다 보면 "Cluster Maintenance"부터는 난이도가 높아집니다. 특히 저는 프론트엔드 개발자이기 때문에 기반 지식이 부족하여 이해가 되지 않는 부분들이 있었습니다. 하지만 어려운 부분을 너무 붙잡고 있지 않고 일단 진도를 나갔습니다. 그리고 실습 문제를 처음부터 다시 풀었습니다. 문제를 풀지 못하거나 이해하지 못한 부분만 강의를 다시 듣고 문제를 풀었습니다. 이렇게 하니 이해가 되지 않았던 부분이 서서히 이해되기 시작했습니다. 덕분에 쿠버네티스 뿐만 아니라 인프라 지식도 덤으로 얻을 수 있었습니다.
실습 문제를 4회차까지 풀었을 때 시험을 신청했습니다. 그러나 첫 시험에서는 불합격했습니다. ETCD를 백업하거나 노드 업그레이드를 하는 과정에서 시간을 너무 많이 썼기 때문입니다. 시험을 볼 때 시간이 오래 걸리는 이 두 문제는 가장 마지막에 푸는 것을 추천드립니다. 두 번째로 제가 불합격한 요인은 use-context를 이용하여 context를 지정하는 것을 누락한 것입니다. CKA는 각 문제마다 다른 context로 변경해서 문제를 풀어야 합니다. 그러나 시간이 부족하거나 당황하면 context 변경하는 것을 잊어버리기 쉽습니다. 꼭 문제를 풀기 전에 context를 변경하고 확인을 해주세요.
저는 불합격을 하고 이 context를 변경하고 확인하는 것을 연습해서 손에 익혀두었습니다. 1차 시험은 아무래도 긴장도 많이 하고, 시험 감독관의 잦은 간섭으로 당황을 많이 했었습니다. 그래서 2차 시험에서는 당황하지 않도록 최대한 시험 환경이라고 생각하고 머릿속에서 시뮬레이션을 많이 돌려보았습니다.
CKA 자격증을 취득한 이후
CKA 자격증을 취득하기까지는 쉽지 않았지만, 합격한 순간에는 정말 뿌듯했습니다. 그리고 무엇보다 쿠버네티스에 대해 어느 정도 이해를 갖게 되어, 더 나은 모니터링 기능을 개발할 수 있게 되었습니다.
CKA를 취득한 후에는 “오브젝트 매니페스트”라는 새로운 기능을 개발하였습니다. 이 “오브젝트 매니페스트”는 쿠버네티스의 Pod, Deployment, Service 등과 같은 오브젝트의 Raw 정보(매니페스트)를 보여주는 기능입니다.
kubectl describe
명령어로 볼 수 있는 정보를 UI로 제공하는 것과 같습니다.
CKA를 공부하면서
kubectl describe
를 수없이 많이 사용했기 때문에 이 정보의 중요성과 터미널에서 조회할 때의 불편함을 체감했습니다. 그래서 사용자들이 이 정보를 더 쉽고 편하게 볼 수 있도록 기능을 개발하게 되었습니다.
공부가 실무와 연관되어 있을 때는 더 재미가 있고, 더 좋은 결과를 얻을 수 있는 것 같습니다. 새로운 역량을 키우고, 이를 바탕으로 사용자에게 도움이 되는 기능을 개발한 경험은 제게 값진 경험이었습니다. 앞으로도 저희 와탭 사용자들에게 도움이 되는 다양한 기능을 개발해나가고 싶습니다.
쪽지 시험
아래 문제는 쪽지 시험으로 실제 CKA문제와는 다릅니다. 호기심을 가지고 CKA 공부를 시작할 수 있도록 도와주는 문제이므로 참고용으로 사용해 주시길 바랍니다.
문제 1. 다음은 kubectl명령어를 이용하여 Node 정보를 조회한 결과입니다. 이 결과를 보고 노드 ip-10-21-120-186.ap-northeast-2.compute.internal의 버전과 컨테이너 런타임을 작성해주세요.
정답 예시
- 노드 버전: v1.25.13-eks-43840fb
- 컨테이너 런타임: containerd://1.6.19
문제 2. 다음은 ReplicaSet을 정의하는 YAML 파일입니다. 빈 칸을 채워주세요.
정답 예시
apiVersion: apps/v1kind: ReplicaSetmetadata:name: frontendlabels:app: testspec:replicas: 3selector:matchLabels:tier: frontendtemplate:metadata:labels:tier: frontendspec:containers:- name: nginximage: nginx:1.14.2
문제 3.
my-pod
라는 파드에 접근하기 위한 서비스를 만드는 명령어를 작성하세요. 아래의 조건을 만족해야합니다.
- type: ClusterIP
- name: my-service
- port: 80
정답 예시
kubectl expose pod my-pod --type=ClusterIP --name=my-service --port=80