ECS 배포 도구를 게시했습니다.
개요
AWS ECS를 운영하기 위해 내부에서 개발한 배포 도구를 공개했습니다.
리포지토리
무엇을 할 수 있는가
Slack bot에 대해
deploy
를 입력하면 ECS 클러스터에 대상 소스를 배포합니다. 또한 명령 기반 배포와 GitHub의 Push를 트리거로 한 자동 배포도 지원합니다.기능 상세
그림.
웹 콘솔은 배포의 상태를 시각화합니다. "누가""언제""어디에""무엇을"배포했는지 한눈에 파악할 수 있습니다.
상세 페이지에서 배포 상태를 확인할 수 있습니다.
설정 파일
배치 구성 파일과 태스크 정의 파일을 작성해야 합니다. 자세한 내용은 Wiki을 참조하십시오.
태스크 정의 파일
응용 프로그램 디렉토리 아래에
config/deploy/{services}.yml
를 만듭니다. 이름은 무엇이든 상관 없습니다. 파일은 컨테이너별 태스크 스펙을 정의합니다. 지정 가능한 파라미터는 태스크 정의 매개변수 와 같습니다.환경 변수에 비밀번호와 같은 비밀 값을 전달하는 경우 KMS로 암호화된 값을 지정하는 것이 좋습니다. 값은 배포 시점에 해독되고 환경 변수로 확장됩니다.
family: sandbox-productiton
task_role_arn: ''
network_ode: bridge
container_definitions:
- name: app
image: ***.dkr.ecr.ap-northeast-1.amazonaws.com/sandbox-app-production:{{tag}}
memory: 1024
port_mappings:
- container_port: 3000
host_port: 0
protocol: tcp
essential: true
environment:
# Private value can be encrypted with KMS
- name: SECRET_KEY
value: ${***}
readonly_root_filesystem: false
log_configuration:
log_driver: fluentd
options:
fluentd-address: ***:24224
fluentd-async-connect: "true"
tag: docker.sandbox-app-production
배포 정의 파일
배포 규칙을 정의한
config/deploy.yml
파일을 만듭니다. clusters
에 응용 프로그램을 배포할 클러스터와 서비스를 정의합니다.clusters:
# クラスタ名
- name: sandbox
services:
# サービス名
production:
# タスク定義ファイルの相対パス
path: ./config/development.yml
# コンテナごとのビルドファイル指定
containers:
- name: web
build:
# etc/docker/web/Dockerfileを参照
context: ../etc/docker/web
배포 형식
명령 기반 배포
대상 리포지토리 클러스터 서비스(필요한 경우 분기)를 지정하여 배포를 시작합니다.
$ docker-compose run --rm rails thor genova:deploy service -r {repository} -c {cluster} -s {service} -b master
Slack을 사용한 대화형 배포
Slack App을 설정하면
deploy
명령이 대화식 배포를 시작합니다.GitHub의 Push를 트리거로 자동 배포
Push 이벤트를 트리거로 특정 서비스에 자동 배포가 실행됩니다.
auto_deploy:
- branch: master
cluster: sandbox
service: production
이 설정은 "
master
브랜치에 Push를 감지했을 때 sandbox
클러스터의 production
서비스 배포"라는 의미입니다. 또한 실행 결과는 Slack에 통지됩니다.
Reference
이 문제에 관하여(ECS 배포 도구를 게시했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/naomichi-y/items/fee7720fdadd443a0aa0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)