Spinnaker는 Netflix에서 만든 지속적 배포 도구다. 프로덕션에서 사용해 본 적은 없지만, AWS나 GCP 같은 퍼블릭 클라우드나 Kubernetes와 통합되어 배포를 할 수 있다. 많은 기능을 제공하는 만큼 꽤 복잡해 보이지만 나 같은 경우는 배포 도구로 테스트를 해본 것은 아니고 Korea Chaos Engineering Community에서 Chaos Monkey를 공부하다 보니 Chaos Monkey가 지금은 Spinnaker와 통합되어 있어서 Spinnaker를 설치해 봤다.
Spinnaker 설치 문서를 보면 Halyard라고 하는 Spinnaker를 관리해주는 도구를 설치해서 설정하는 방법이 나오는데 나는 Spinnaker 자체가 목적이 아니었기 때문에 퍼블릭 클라우드가 아니라 로컬에서 테스트를 해보고 싶었다. 그래서 로컬에서 Spinnaker를 사용해 보기 위해 Spinnaker Chart를 사용했다. 나 같은 경우 Spinnaker의 상세 내용이 궁금한 게 아니라 Chaos Monkey를 테스트해보기 위한 환경으로 Spinnaker가 필요했기 때문에 Chart를 선택했는데 작업하면서 고생을 꽤 많이 해서 나중에 로컬에서 테스트해 볼 수 있도록 따로 정리해둔다.
Spinnaker Chart로 Spinnaker 실행하기
Helm은 Kubernetes의 패키지 관리자이다. Kubernetes에 컨테이너를 배포하려면 여러 가지 리소스를 구성해서 배포하게 되는데 이렇게 복잡한 애플리케이션을 미리 템플릿처럼 구성해 놓은 Chart로 쉽게 배포할 수 있는 도구이다. 여기서 Spinnaker Chart라는 것은 Helm의 Chart로 만들어진 Spinnaker를 얘기한다.
Helm 같은 경우 macOS라면 brew install kubernetes-helm
로 설치할 수 있다. Kubernets위에 띄울 것이므로 minikube를 설치하거나 Docker for Mac의 Kubernetes를 활성화 해야 한다.
Helm을 설치했으면 helm init
으로 초기화한다.
helm version
을 실행해서 결과가 제대로 나오면 잘 초기화된 것이다. Server 같은 경우 시간이 약간 걸리므로 init
후 잠시 기다려야 나오기도 한다.
Spinnaker는 자원을 엄청 많이 먹는다. 그래서 기본 Docker for Mac의 설정으로는 Spinnaker를 띄우다가 죽는 경우가 많다. 컨테이너를 실행할 리소스가 부족하면 컨테이너를 띄우지 못하므로 미리 넉넉하게 CPU와 메모리의 자원을 늘려준다. 위의 설정이 적당한 사이즈를 검증한 것은 아니고 적당히 넉넉하게 준 것일 뿐이다.
Spinnaker Chart 문서를 보면 helm install --name my-release stable/spinnaker
로 설치하라고 안내되어 있다. 이렇게 차트를 띄우는 것은 간단하지만 기본 설정에 Chaos Monkey가 활성화되어 있지 않아서 나 같은 경우는 삽질을 꽤 많이 했다. 이 글에서는 Chaos Monkey를 설명하는 것이 아니므로 Spinnaker를 실행하는 것만 다루겠다.
Spinnaker를 실행하기 위해서 상당히 많은 리소스가 실행된 것을 볼 수 있다. 실행 환경의 사양에 따라 다르겠지만 앞에서 설명한 Docker의 자원을 늘려주지 않으면 실행하다가 실패하는 경우가 많았고 helm의 기본 타임아웃이 300인데 이 시간 내에 안 뜨는 경우도 많아서 시간을 늘려주었다.
Chart가 제대로 떴으면 마지막에 안내가 나온 대로 명령어를 실행한다.
이제 브라우저에서 http://127.0.0.1:9000에 접속해 보면 Spinnaker를 확인해 볼 수 있다.
Comments