CKA 시험을 보면서 기출 문제가 굉장히 중요하다는 것을 알게 되었다. 인터넷에서 살펴본 기출 문제들에서 다 고만고만하게 나오는 느낌이 있었고 살펴본 결과 약 1~2년 전부터 쓰인 블로그들을 통해서 기출 문제들을 분석했는데, 실제 시험과 비슷하게 나왔다. 나 또한 CKA 시험을 보고 난 후에 기출 문제를 정리함으로써 CKA를 준비하는 사람들에게 많은 도움이 되고자 내용을 정리했다. 본론CKA의 시험 환경은 생각보다 많이 친절하다. 아마도 killer.sh나 Kodekloud를 통해서 mock exam을 본 사람들이 많을텐데, 이에 비해서 엄청나게 친절하다. 키워드들(pod name, path) 등에 복사를 편리하게 해줄 수 있게 클릭으로 복사를 지원하거나, 관련된 문제의 레퍼런스를 직접 달아두어 바로 접..
예전에 선언형과 명령형에 대한 이야기를 한 적이 있다. Kustomize는 선언형으로 쿠버네티스 오브젝트를 사용자가 원하는 대로 변경할 수 있게 도와주는 도구이다. 쿠버네티스의 버전 1.14 이후로, kubetctl에서 kustomize 명령어를 지원하게 되었다. 가장 큰 특징은 overlay 구조로 기본이 되는 구조에 추가적인 오브젝트 설정들을 오버라이딩하여, 다양한 스테이지에 배포할 수 있다는 점이다. base 디렉토리에 기본이 되는 쿠버네티스 리소스를 정의하고, overley를 통해서 환경별(dev, prod, alpha 등) 차이점을 정의하여 여러 가지 환경에 맞게 사용할 수 있게 도와주는 역할을 한다. 이러한 Kustomize가 없다면, 직접 하나하나씩 kubectl apply -f 명령어를 통..
쿠버네티스의 다양한 리소스들에 대해서 다뤄보면 ETCD라는 중요한 요소에 대해서 알 수 있다. ETCD는 키-값으로 데이터를 저장하는 스토리지로 쿠버네티스에서 모든 상태 정보(메타데이터)를 영구적으로 저장하는 역할을 한다. 마스터 노드에 있는 kube-apiserver는 이 ETCD를 참고하여 클러스터 전체의 최신 상태를 일관성 있게 유지하는 역할을 한다. 간단하게 쿠버네티스의 마스터 노드의 컴포넌트에 대한 그림을 그려보면 위와 같다. 여기서 ETCD에 접근할 수 있는 쿠버네티스의 컴포넌트는 kube-apiserver 뿐으로써 etcd는 쿠버네티스 클러스터에 있어 심장과도 같은 중요한 존재이다. 쿠버네티스는 이런 심장과도 같은 etcd를 어떻게 오케스트레이션하는 것인가? 간단하게 스포일러를 하면 etc..
쿠버네티스를 공부하다 보면 아마 처음으로 접하게 되는 것 트래픽 관련 리소스가 Service라고 하는 것일텐데, 이는 우리가 생각하는 대로 특정한 Pod에 대하여 IP를 뚫어주어 전략(ClusterIP, NodePort, LoadBalancer)에 따라서 직접 접근할 수 있게 된다. 그다음으로는 Ingress라는 리소스도 있는데, 이 또한 Port를 이용하여 IP 계층에서 직접 트래픽을 조작해 준다. 대체 어떠한 차이점이 있을까? 쿠버네티스에 대해서 단순하게 이해하고 있을 때에는 Ingress는 프론트엔드 페이지 보여줄 때, Service는 그 외라고 알고 있었지만, 좀 더 공부해 보면 사실 굉장히 이야기할 거리가 많은 주제이고 복잡하기도 했다. 재미있는 사실은 결국에는 Ingress는 웹을 보여줄 때,..
쿠버네티스 클러스터를 통해 다양한 시도를 하기 전 직접 로컬에서 테스트해 볼 수 있는 환경이 있어야 한다. 그 과정에서 사람들이 가장 많이 찾는 툴은 minikube라고 하는 툴이다. minikube는 로컬 쿠버네티스 클러스터를 생성하고 관리하기 위한 경량화된 도구로, 로컬에서 쿠버네티스 애플리케이션을 개발, 테스트 학습할 수 있도록 설계되어 있다. 이번 포스팅에서는 미니쿠베의 세팅 방법과 함께, 꿀같은 터미널 세팅에 대해서 다뤄보려고 한다. 이 외에도 vscode 세팅이나 lens 등 로컬에서 직접 쿠버네티스를 테스트하기 좋은 환경을 구축하기 위한 내용들을 포스팅한다. 먼저, 준비물들이 꽤나 있는데 다음과 같다. 이 포스팅의 내용은 macOS에 특화되어 있다. homebrewdockeroh-my-zs..
앞의 포스팅을 통해 라즈베리파이의 운영체제 설치 및 쿠버네티스 클러스터 환경 세팅이 끝났다. 이제 배포 지점이 될 클러스터의 세팅을 끝내고 본격적으로 CI/CD를 구현할 차례이다. 이번 포스팅에서는 깃허브에서 제공하는 Github Actions를 쓸 예정이다. 중간에 도커라이징하는 부분이 들어가는데, Dockerfile을 작성하는 방법에 대해서는 이번 포스팅에서 다루지 않는다. 관련하여 포스팅을 작성한 부분을 참고 링크로 달아두기만 하겠다. 참고 : https://marsboy.tistory.com/5 본론CI/CD란?CI/CD (Continuous Intergration/Continuous Delivery)는 애플리케이션 개발 단계를 자동화하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 방법을 ..
저번 포스팅에서는 라즈베리파이에 OS를 깔고 기본적인 네트워크 세팅을 마쳤다. ssh를 통해서 다양한 호스트에 접속할 수 있게 되었을 것이다. 이번 포스팅에서는 각 라즈베리파이 호스트에 K8s의 경량화 버전인 K3s를 설치한다. 노드로 쓸 컴퓨터의 스펙은 라즈베리파이 4 4GB이다. 이번 포스팅에서는 K3s의 설치 과정에 대해서 마스터 노드와 워커 노드를 구분하여 포스팅할 예정이다. 본론Lightweight Kubernetes. Easy to install, half the memory, all in a binary of less than 100MB K3s는 쿠버네티스와 완전히 호환되며 결과적으로 가볍게 쿠버네티스를 사용할 수 있게 하기 위해 만들어졌다. Kubernetes가 10글자이기 때문에 절반으..
AWS를 통해 다양한 인프라 서비스를 접한 지 거의 일 년이 다 되어 간다. 프리티어 기간도 슬슬 끝나가고 있고, 이번 기회에 인프라에 대해서 좀 더 폭넓게 공부해 보고자 라즈베리파이로 쿠버네티스 클러스터를 구축하려고 계획 중이다. 또, 지금은 학사에 거주하고 있어 공과금을 내지 않기 때문에 라즈베리파이만 있다면 무료로 온프레미즈 환경을 구축할 수 있다! K8s homeserver 구축 시리즈는 통해서 집에서 라즈베리파이를 통해서 직접 K8s 환경 CI/CD를 구현하는 과정을 포스팅 할 예정이다. 라즈베리파이 설정부터 시작하여 점차 다양한 CI/CD 툴을 사용하여 인프라를 관리할 수 있게 하는 방법에 대해서 포스팅할 시리즈이다. 본론 인프라 구조 (0.1v)이번 포스팅에서는 가정용 공유기를 통해서 위와..