EKS에서 단일 애플리케이션을 n개의 POD으로 다중 배포하기(2)

안녕하세요 오늘은 BESPIN GLOBAL innovate AI실 송규호님이 ‘EKS에서 단일 애플리케이션을 n개의 POD으로 다중 배포하기(1)’ 무엇인지 소개해드리도록 하겠습니다.

AWS EKS 환경에서 단일 애플리케이션에 대하여 일부 환경변수만 변경하여 다중 배포하는 방법인데요.변경이 필요한 부분은 각 애플리케이션 환경마다 AWS Parameter Store에 변수 등록을 한 후 Codebuild 환경변수에서 제어 하여 배포하는 방식입니다.

목차
  1. EKS 환경 구축
  2. 샘플 애플리케이션 생성 후 AWS Code Commit 연동
  3. 도커 이미지 만들고 ECR 설정
  4. CodeBuild 설정
  5. parameter store 설정, codebuild 환경변수 설정 후 애플리케이션 배포 실행

3. 도커 이미지 생성 및 ECR 설정

  • ECR에 repository 생성
ECR에 repository 생성
  • 정책 설정 – 생성 – JSON
정책 설정 - 생성 - JSON
{
      "Statement": [
          {
              "Action": [
                  "ecr:BatchCheckLayerAvailability",
                  "ecr:CompleteLayerUpload",
                  "ecr:GetAuthorizationToken",
                  "ecr:InitiateLayerUpload",
                  "ecr:PutImage",
                  "ecr:UploadLayerPart"
              ],
              "Resource": "*",
              "Effect": "Allow"
          }
      ],
      "Version": "2012-10-17"
  }
  • 정책이름 : CodeBuildECRPolicy-ecr_hw_poc-us-east-1
정책이름 : CodeBuildECRPolicy-ecr_hw_poc-us-east-1
  • buildspec.yml 작성
version: 0.2 
 
phases: 
  install: 
    runtime-versions: 
      nodejs: 20 
    commands: 
      - echo Installing source NPM dependencies...
      - npm install
  pre_build: 
    commands: 
      - $(aws ecr get-login --no-include-email --region $AWS_DEFAULT_REGION) 
  build: 
    commands: 
      - echo Build started on `date` 
      - echo Building the Docker image...    
      - npm run build
      - 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 
  post_build: 
    commands: 
      - echo Build completed on `date` 
      - echo Pushing the Docker image... 
      - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG 
cache: 
  paths: 
    - '/root/.m2/**/*' 
  • dockerfile 작성
FROM node:20-alpine
WORKDIR /app
COPY . .
RUN npm install
CMD ["npm", "start"]

여기까지 ‘EKS에서 단일 애플리케이션을 n개의 POD으로 다중 배포하기(2)’에 대해 소개해드렸습니다. 다음 포스팅에서 이어서 설명드리도록 하겠습니다. 유익한 정보가 되셨길 바랍니다. 감사합니다. 

Written by 송 규호 / innovate AI실

BESPIN GLOBAL