Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.

[Book] The DevOps 2.3 Toolkit: Kubernetes

Docker 유저 그룹에서 Kubernetes 그룹 스터디를 진행해서 참가했다. 재작년인가 인프라 관련 도구에 대해서 살펴보는 스터디도 했었는데 그때는 오케스트레이션 도구가 춘추전국시대였는데 1년 사이에 Kubernets가 완전한 승자가 된 분위기라 Subicura님의 주도로 Kubernetes 스터디를 진행했다. 이 책을 스터디 교재로 진행해서 1월 23일부터 14회 동안 진행하고 지난주에 책을 다 보고 스터디가 끝났다.

인프라 도구들이 대개 그렇듯이 오케스트레이션 도구도 제대로 연습하고 장단점을 느껴보려면 운영할 프로그램이 있어야 해서 서비스의 ping을 검사하는 마이크로 서비스를 같이 만들었다. 굳이 마이크로서비스로 할 필요가 없을 정도로 간단한 애플리케이션이었지만 나한테는 Go 언어도 좀 써보고 재미있었다. 물론 초기 스터디 계획처럼 이 마이크로 서비스가 잘 만들어져서 Kubernetes로 운영해보면서 마이크로서비스를 운영할 때의 장단점을 느껴보는 정도까지는 가지 못했다.

저자인 Viktor Farcic은 데브옵스 책을 계속 쓰고 있는데 2.0 툴킷은 번역서가 출간되었고 The DevOps 2.1 Toolkit: Docker Swarm, The DevOps 2.2 Toolkit: Self-Sufficient Docker Clusters에 이은 버전이다. 이 책을 보기 전에는 글이나 세미나 등에서만 보았을 뿐 Kubernets를 실제로 써본 적은 없었다. 프로덕션뿐만 아니라 로컬에서도 돌려보지 않은 상태로 스터디를 시작했고 취향에 따라 여러 오케스트레이션 도구를 고민해야 했던 1여 년 전과는 달리 이젠 컨테이너로 인프라를 운영하려면 Kubernetes를 반드시 알아야겠다고 생각해서 스터디를 시작했다. 설사 AWS나 Google에서 제공하는 다른 컨테이너 서비스를 쓴다고 하더라도 최소한 Kubernetes의 장단점을 알고 써야겠다는 생각이었다.

보통 그룹스터디를 하면 책을 찬찬히 보지는 못하는데 원서라서 좀 힘들었지만, 이번에는 책을 처음부터 다 읽어보고 예제도 거의 다 따라 해 봤다. 책은 Kubernetes를 처음 사용해보는 사람들을 대상으로 하고 있다. 그래서 Kubernetes의 사용법을 알려주는 데 집중되어 있고 Kubernetes를 운영하는 노하우나 마이크로서비스를 운영하면서 필요한 지식, Kubernetes 내부 등은 많이 다루지 않고 있다. 대신 Kubernetes를 처음 배우기에는 구성이 괜찮다고 생각하고 있다.

Kubernetes를 이해하기 쉽게 가장 작은 단위인 Pod부터 ReplicaSet, Service, Deployment 순으로 살펴보고 운영하는데 필요한 Ingress, Volume, ConfigMap, Secret을 하나씩 다뤄주고 있어서 운영에 필요한 Kubernetes의 리소스와 관계를 이해할 수 있다. 도구 자체가 간단한 도구가 아니라서 책을 읽고 예제를 따라 한 정도로는 Kubernetes를 이해하기 어렵고 직접 운영하거나 자신의 서비스를 Kubernetes를 써보면서 연습을 해봐야 제대로 감을 잡을 수 있었지만, 그 가이드라인을 세워주는 데는 나쁘지 않았다.

뒷부분에서는 실제 프로덕션에 운영과 관련된 내용을 설명한다. Kubernetes 클러스터에 구성을 도와주는 kops와 Namespace, 권한관리 등 Kubernetes를 다 몰라서 빠진 부분이 뭐가 있는지는 모르지만 Kubernetes 클러스터를 운영하려고 할 때 궁금했던 내용 대부분의 방향을 잡아주고 있다.

원서라서 스터디가 아니었으면 못 봤을지도...

2018/05/19 16:32 2018/05/19 16:32

기술 뉴스 #102 : 18-05-15

웹개발 관련

  • SVG, JS, CSS로 만드는 라이언 로그인 폼 : 로그인 폼에서 이메일을 입력할 때는 캐릭터의 시선이 따라가다가 패스워드를 입력할 때는 눈을 가리는 재미있는 애니메이션을 카카오의 라이언을 이용해서 웹으로 직접 구현했다. SVG로 라이언을 그리고 타이핑이나 포커스에 따라 라이언이 움직이도록 구현하는 과정까지 자세하게 나와 있어서 비슷한 구현을 고민할 때 참고하기 아주 좋다. 그리고 예시용 이상으로 엄청난 퀄리티로 구현하셨다.(한국어)
  • "last 2 versions" considered harmful : babel-preset-env을 사용할 때 타겟 브라우저를 last 2 versions처럼 지정하는데 이렇게 하는 경우 사용자가 거의 없는 Blackberry나 QQ 브라우저도 대상에 포함되므로 의도한 대로 컴파일되지 않는다는 점을 지적한 글이다. 대신 >0.25%처럼 지원하려는 사용자 비율을 지정하고 일부 브라우저를 제외하는 방식을 권하고 있다.(영어)
  • Testing your React App with Puppeteer and Jest : Jest 테스트 프레임워크와 Puppeteer를 이용해서 Headless 크롬으로 통합테스트를 작성하는 방법을 설명하는 글이다. Puppeteer를 설정하는 방법부터 사용자 로그인, 쿠키 설정, 모바일 디바이스 에뮬레이팅, 스크린샷까지 튜토리얼 식으로 설명하고 있다. 프론트엔드에서 통합테스트를 작성할지는 쉽게 결정하기 어려운 부분이지만 필요한 때도 있으므로 확인해 볼 만하다.(영어)

그 밖의 프로그래밍 관련

  • 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 : 듀량고의 로그 데이터 수집 및 분석 시스템에 관한 얘기인데 발표자료에 자막이 달려있어서 알기 쉽다. 듀량고 급의 대규모 데이터에서 로그 시스템을 어떤 접근으로 구축했고 각 구성에 대한 상세 활용방법이 잘 나와 있어서 로그 시스템을 고민한다면 꼭 참고해 봐야 할 정도로 잘 정리되어 있다.(한국어)
  • Build Your Own EC2 Machine Images with Packer & Ansible on AWS for Immutable AWS Deployments : 불변 인프라를 위해서 Packer와 Ansible로 AWS AMI를 만드는 방법을 설명하는 글이다. Ansible보다는 Packer 사용법을 위주로 정리되어 있다.(영어)
  • Announcing Fuse Open — making Fuse free and Open Source : 모바일 앱을 쉽게 개발할 수 있는 플랫폼인 Fuse가 오픈소스로 공개되었다. Fuse 플랫폼 전체와 도구, 라이브러리가 모두 포함되었고 유료 프로 플랜은 없어졌다. 새로운 비즈니스 모델로 Apps as a Service인 Fuse App Engine를 공개했다.(영어)
  • Merkle Patricia Tree (MPT) 를 이해하기 위한 여정 : 이더리움에서 사용하는 머클 패트리샤 트리가 무엇인지를 설명하는 글이다. 비트코인이 사용하는 머클트리는 간단한 구조라 쉽게 이해했지만 머클 패트리샤 트리에 대해서는 정확히 모르고 있었는데 이 글을 통해 완전히는 아니어도 어떤 접근인지는 어느 정도 이해하게 되었다.(한국어)

볼만한 링크

  • An Issue with Issues : Babel 프로젝트를 리드하고 있는 Henry Zhu가 오픈소스의 이슈관리에 관해 쓴 글이다. 사람들이 2년 이상 된 이슈에도 같은 이슈가 있다고 댓글을 달거나 질문을 올리는데 이는 사용자로서는 자연스러운 행동이지만 메이테이너들한테는 이미 코드가 많이 바뀌거나 해결된 이슈인 경우가 많아서 큰 부담이 된다는 내용이다. 이를 해결하기 위해 이슈를 잠글 수 있는데 이 행위가 적대적으로 보일 수 있어서 하기가 쉽지 않고 이슈마다 다 잠글 수도 없으므로 Probot을 이용해서 일정 기간이 지난 이슈는 자동으로 닫게 처리한 과정을 설명한 글이다.(영어)
  • EFAIL : 이메일의 종단 간 암호화에 사용하는 OpenPGP과 S/MIME의 이용해서 공격자가 암호화된 이메일의 평문을 얻어낼 수 있는 취약점이 발견되어 해결될 때까지 EEF에서는 일단 PGP 이메일 플러그인을 사용하지 않거나 삭제하고 권고하고 있다. 이 공격을 하려면 먼저 공격자가 먼저 공격자가 암호화된 이메일을 어떤 방법으로든 획득해야 하고 이를 조작해서 피해자에게 메일을 보내면 메일 클라이언트가 이를 복호화하면서 외부 리소스를 요청할 때 평문이 유출될 수 있다고 한다.(영어)
  • 문돌이도 이해하는 스팀 디앱 (DApp)의 세계 : DApp의 개념을 설명한 글이다. DApp의 기본적인 개념부터 DApp 생태계의 규모와 전망 등을 설명하고 있다. 개인적으로 아직은 DApp에 많은 가치를 두고 있지 않지만, 블록체인과 더불어 중요한 개념이 되었으므로 전혀 모른다면 이 글을 통해 DApp을 이해할 수 있다.(한국어)

IT 업계 뉴스

프로젝트

버전 업데이트

2018/05/15 19:33 2018/05/15 19:33