[Hands-on] CI/CD

채린·2023년 10월 30일
0

EWHA AWS Cloud Clubs

목록 보기
6/10

Docker Image 빌드를 자동화해보자
Feat. AWS Code Series

CI/CD

  1. IAM Role 생성 :
     - 역할 생성
    AWS CodeBuild가 다른 AWS 서비스에 접근할 수 있도록 IAM에서 새 역할을 생성
    이 역할에는 ECR에 이미지를 푸시할 권한이 필요권한 추가 단계에서 '다음'
     - 이 역할이 ECR에 이미지를 푸시할 수 있도록 정책 생성
{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Sid": "Statement1",
			"Effect": "Allow",
			"Action": [
				"ecr:BatchCheckLayerAvailability",
				"ecr:CompleteLayerUpload",
				"ecr:GetAuthorizationToken",
				"ecr:InitiateLayerUpload",
				"ecr:PutImage",
				"ecr:UploadLayerPart"
			],
			"Resource": "*"
		}
	]
}


 - 역할에 정책 연결

  1. CodeBuild 프로젝트 생성:
    1) AWS Management Console에서 CodeBuild 서비스로 이동
    2) 새 프로젝트를 생성
    3) Source: 깃 저장소를 선택하고, GitHub 또는 GitLab 계정과 연결
    4) Environment: "Managed image"를 선택하고, "Operating system"으로 Ubuntu, "Runtime"으로 Standard, "Image"으로 최신 버전을 선택, "Environment type"은 "Linux"으로 설정
    5) "Service role"에서 앞서 생성한 IAM 역할로 선택
    내 깃허브 레포랑 연결프로젝트 생성 완료!

  2. buildspec.yml 작성:
    1) CodeBuild는 buildspec.yml 파일을 사용하여 빌드 명령을 어떻게 실행할지를 알게 됨
    2) 프로젝트 루트에 buildspec.yml 파일 생성
    3) 이 파일 내에는 Docker 빌드와 ECR에 푸시하는 명령이 포함되어야 함

  3. Codebuild 스테이지에서 코드 빌드가 제대로 되는지 확인해보기

  1. CodePipeline을 통해 Codebuild 트리거하기:
    (CopePipeline설정해서 깃허브 코드 푸쉬->CodeBuild 자동 실행)
    1) CodePipeline을 설정하여 코드에 변경이 발생할 때마다 CodePipeline가 알 수 있게 됨
    2) 저장소에 푸시할 때마다 CodePipeline이 트리거 되고 CodePipeline으로부터 CodeBuild가 자동
    으로 트리거됨
    Github2를 이용해 연결한 레포를 설정
  1. 깃허브에 변경사항 푸쉬 후 확인해보기 !
    1) 깃 저장소에 코드를 푸시하고 CodeBuild가 자동으로 트리거되는지 확인
    2) 성공적으로 빌드와 푸시가 완료되면 ECR에서 새로 생성된 Docker 이미지를 확인 가능
    이미지 빌드됨!


Q. 왜 CodeBuild에서는 IAM Role을 수동으로 설정해주고 Codepipeline에선 별도의 IAM Role을 수동으로 설정해주 지 않아도 되는 걸까?
AWS CodeBuild의 IAM 역할:
   - CodeBuild는 빌드 환경 내에서 실행될 명령에 대한 권한이 필요! => 예를 들어, S3 버킷에서 아티팩트를 가져오거나 ECR에 도커 이미지를 푸시하는 작업이 포함됨
   - CodeBuild 프로젝트를 생성하거나 수정할 때 사용자는 이러한 작업을 위해 필요한 권한을 가진 IAM 역할을 지정해야 함.
AWS CodePipeline의 IAM 역할:
   - CodePipeline을 처음 생성할 때 AWS는 자동으로 IAM 서비스 역할을 생성. => 이 역할은 파이프라인에서 사용되는 다양 한 AWS 서비스에 대한 액세스 권한을 가짐. (예: CodeBuild, CodeDeploy, Lambda, S3 등)
   - 사용자는 별도로 이 역할을 지정할 필요가 없음. But 파이프라인 설정이나 사용 사례에 따라 이 역할의 권한을 수정해야 할 수 있음

0개의 댓글