전체 글

IF YOU LET ME BE THE CODE
갑자기 동료 개발자에게 docker에 심각한 버그가 있다는 말을 들었다. 멀웨어 관련 이야기가 나오고 있길래, 우리 도커가 그럴 일이 없다고 생각했지만... 전 세계적인 어뷰징이 발생하고 있었다. 아래와 같은 팝업이 지속적으로 뜨며 개발자를 괴롭힌다. 악성 코드가 차단됨, 'com.docker.vmnetd'에 악성 코드가 포함되어 있어서 열리지 않았습니다. 이 소프트웨어는 악성 코드를 포함하고 있을 수 있습니다. 이 소프트웨어는 다운로드된 후 수정되었을 수 있습니다. 이 소프트웨어를 실행하면 컴퓨터에 손상을 줄 수 있습니다.악성 코드가 차단됨  'com.docker.socket'에 악성 코드가 포함되어 있어서 열리지 않았습니다. 이 소프트웨어는 악성 코드를 포함하고 있을 수 있습니다. 이 소프트웨어는 ..
CKA라는 자격증에 대한 정보는 오래전부터 알고 있었다. 다만 쿠버네티스를 그렇게까지 사용하지 않았을 때였고, 공부를 해볼까라는 생각은 전혀 못했던 것 같다. 하지만 CKA를 주최하는 Linux Foundation은 매년 12월에 사이버 먼데이라고 50% 시험 할인 쿠폰을 제공하는데, 사악한 비용을 자랑하는 CKA 시험을 싸게 칠 수 있는 기회가 있었다. 이전에 AWS 자격증을 딴 적이 있다. AWS 자격증을 따면서 좋았던 점은 공부하기 전에는 그냥 구현만 어느정도 꽤 할줄 알았고 자세한 디테일은 잘 몰랐다. 예를 들면 서브넷이나 VPC에 대해서 신기했던 점은 AWS로 들어오는 트래픽은 무료지만 나가는 트래픽에 전송 비용이 든다는 점이다. 동일 Region에 동일 AZ끼리는 무료, 다른 AZ끼리는 약간의..
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..
· Database
redis를 그냥 띄우게 되면 데이터를 무한정 넣을 수 있다. 음? 인메모리 데이터 그리드에 데이터를 무한정 넣을 수 있다고? 그런 말도 안 되는 일이 어떻게 일어나는 걸까. 그 비밀은 바로 maxmemory라는 설정에 있다. 레디스는 maxmemory를 별도로 설정하지 않으면 메모리 제한을 걸지 않는다. 그렇다면 모든 메모리를 잡아먹게 되는 경우라면 어떨까? 그럴 경우에는 디스크의 스왑 영역까지 사용하게 되며, 이 때부터 레디스의 성능이 급격하게 저하된다. 떠올려보면 이러한 케이스가 몇 번 있었던 것 같다. 레디스를 단순히 적당한 수준에서의 캐싱이나 TTL을 걸어 토큰을 저장하는 경우에는 크게 문제 될 일이 없었다. 하지만 학교 공지사항을 스크래핑하는 크론잡을 만들어서 공지사항에 대한 내용을 전부 레디..
marsboy
PAINT THE WORLD