본문 바로가기

⭐ AWS/Codebuild

Codebuild가 실행되는 프로세스 설명

반응형

1. 코드 빌드는 코드로 파이프라인을 구성하여 수행

예제 코드는 아래와 같다.

version: 0.2
phases:
  install:
    runtime-versions:
      docker: 18
    commands:
      - curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.19.6/2021-01-05/bin/linux/amd64/kubectl
      - chmod +x ./kubectl
      - mv ./kubectl /usr/local/bin/kubectl
      - mkdir ~/.kube
      - aws eks --region ap-northeast-2 update-kubeconfig --name eks
      - kubectl get po -n kube-system
  pre_build:
    commands:
      - echo Logging in to Amazon ECR...
      - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/
  build:
    commands:
      - echo Building the Docker image
      - docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG .
      - docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
      - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG

  post_build:
    commands:
      - AWS_ECR_URI=$AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
      - DATE='date'
      - echo Build completed on $DATE
      - sed -i.bak 's#AWS_ECR_URI#'"$AWS_ECR_URI"'#' ./EKS/deploy.yaml
      - sed -i.bak 's#DATE_STRING#'"$DATE"'#' ./EKS/deploy.yaml
      - kubectl apply -f ./EKS/deploy.yaml
      - kubectl apply -f ./EKS/svc.yaml

2. buildspec.yaml 파일내용 설명

buildspec.yaml은 git repository 루트 디렉터리에 생성한다.

이 파일은 codebuild 생성할 때 정의했던 파일로 Codebuild가 빌드할 때 해당 파일을 참조하여 빌드를 수행한다.

 

install :  런타임으로 도커를 설치하고, EKS 클러스터에 도커 이미지를 배포하기 위해서 kubectl을 설치하고 kubeconfig를 생성하여 kubectl 명령어를 사용할 수 있게 한다.

pre_build : ECR에 로그인한다

build :  Dockerfile을 빌드하고 ECR에 Push 한다

post_build : ECR의 URI를 AWS_ECR_URI로 치환하여 사용한다.

그리고 deployment.yaml 파일과 service.yaml 파일을 배포한다.

 

3. Dockerfile 작성

테스트를 진행하기 위해서 간단하게 Dockerfile로 아파치를 설치하여 실행할 예정이다.

Dockerfile의 경로는 git Repository의 루트 디렉터리에 생성한다.

# ./Dockerfile

FROM ubuntu:18.04
RUN apt-get update
RUN apt-get install apache2 -y
COPY index.html /var/www/html
EXPOSE 80
CMD apachectl -DFOREGROUND
반응형