반응형
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
반응형
'⭐ AWS > Codebuild' 카테고리의 다른 글
CodeBuild에서 Phython 실행하기 (0) | 2022.10.20 |
---|---|
[에러해결] The policy is attached to 3 entities but it must be attached to a single role (0) | 2022.10.20 |
CodeBuild시 빌드도중 빌드를 실행했을때 로직 설명 (0) | 2022.07.12 |