Software Workshop

Spinnaker의 전체 구조도

spinnaker_architecture.jpeg

좀 더 간단한 버전의 구조도 - 현재 rush는 deprecate됨
spinnaker-components.png

주요 컴포넌트

공식 문서에 따르면 다음 컴포넌트들이 마이크로 서비스로 구성되어 있다고 함

주요 기능 시퀀스

Bake의 시퀀스

participant Igor
participant Jenkins
participant  ArtifactRepo
participant  Echo
participant Front50
participant  Orca
participant Rosco
participant Packer
participant  Redis
participant  Cloud

Echo -> Front50: 파이프라인 트리거들의\n캐시를 빌드함
Jenkins -> ArtifactRepo: 새로 생산된\n배포가능한\n자산(아티팩트)을 공개함
note left: 아티팩트를 아카이브함

Igor -> Jenkins: Jenkins가 빌드를 완료했는지 폴링함
Igor -> Echo: 완료된 빌드 정보를\n이벤트 버스로 공개함
Echo -> Orca: 일치된 트리거에 기반하여\n파이프라인 실행을 시작함
activate Orca

Orca -> Redis: 새로운 실행을 저장함
note left: Orca는 트리거로부터\n받은 아티팩트 상세를\n사용해서 버전 정보로\n패키지 이름을 장식함

Orca -> Rosco: 설치할 버전의 패키지를 전달하여\n(이미지) 굽기를 요청함
deactivate Orca

Rosco -> Redis: 새로운 굽기를 저장함
Rosco -> Packer: 설정에서 받은 저장소 주소와\n패키지/버전을 전달하여\n굽기 작업을 시작함
Packer -> ArtifactRepo: 저장소로부터 배포가능한\n자산을 당겨옴
Packer -> Cloud: 머신 이미지를 공개함

loop 백그라운드 쓰레드에서
Rosco -> Packer: 작업 완료까지 폴링함
Rosco -> Redis: 굽기를 완료로 마킹함
end

loop 워커 쓰레드에서
Orca -> Rosco: 작업 종료까지 폴링함
Rosco -> Redis: 굽기 상황을 질의함
Orca -> Redis: 실행 상태를 업데이트함
end

Deploy의 시퀀스

participant Deck
participant Gate
participant Orca
participant Clouddriver
participant Redis
participant Cloud

Deck -> Gate: 배포 오케스트레이션을 시작함
activate Gate

Gate -> Orca: 배포 오케스트레이션을 시작함
activate Orca

Orca -> Redis: 새로운 실행을 저장함
Orca --> Gate: 오케스트레이션 ID를 가지고 응답함
deactivate Orca

Gate --> Deck: 오케스크레이션 ID를 가지고 응답함
deactivate Gate

Orca -> Clouddriver: 배포 연산을 시작함
activate Clouddriver
note left: 워커 쓰레드에서

Clouddriver ->Redis: 새로운 태스크를 저장함
Clouddriver --> Orca: 태스크 ID로 응답함
deactivate Clouddriver

Clouddriver -x Cloud: 호출을 변형함
activate Clouddriver

Clouddriver -> Redis: 태스크를 완료로 마킹함
deactivate Clouddriver

loop 워커 쓰레드에서
Orca -> Clouddriver: 태스크 완료까지 폴링함
Clouddriver -> Redis: 태스크 상황을 질의함
Orca -> Redis: 실행 상태를 업데이트함
end

loop 워커 쓰레드에서
Orca -> Clouddriver: 인스턴스가 올라올 때까지 폴링함
Clouddriver -> Redis: 서버 그룹/인스턴스\n상태를 캐시에서 질의함
Orca -> Redis: 실행 완료로 마킹함
end

loop 백그라운드 쓰레드에서
Deck -> Gate: 오케이스트레이션 완료까지 폴링함
Gate -> Orca: 오케스트레이션 상황을 질의함
Orca -> Redis: 실행 상황을 질의함
end

참고자료