Aws

EKS CodeBuild를 이용해서 자동으로 Pod 업데이트 하기

wngnl05 2024. 12. 24. 14:58

참고 사이트

buildspec.yaml < ECR태그를 latest로 할때 >

더보기
version: 0.2
phases:
  install:
    commands:
      # kubectl 설치
      - kubectl 설치 명령어 작성!!
		
      # EKS Cluster 인증
      - aws eks --region <리전> update-kubeconfig --name <클러스터 이름> 
      - kubectl get po -n <네임스페이스>
  pre_build:
    commands:
      # CodeCommit 저장소에서 소스 코드를 가져옵니다.
      - <ECR 인증>
      - MY_ECR="<ECR URL>:<태그>"
  build:
    commands:
      - echo "Building Docker image..."
      - docker build -t $MY_ECR .
      - echo "Pushing Docker image to Amazon ECR..."
      - docker push $MY_ECR
  post_build:
    commands:
      - echo "Deploying to Kubernetes cluster..."
      - kubectl delete -f k8s/deployment.yaml
      - kubectl delete -f k8s/service.yaml
      - kubectl apply -f k8s/deployment.yaml
      - kubectl apply -f k8s/service.yaml
      - kubectl get all -n <네임스페이스>

buildspec.yaml < ECR태그를 현재 시간으로 할때 >

더보기

deployment.yaml에서 "MY_ECR"을 sed 명령어로 ECR URL로 변경해줍니다.

deployment.yaml에서 "MY_ECR" 이 꼭!! 입력 되어 있어야 합니다. 

version: 0.2
phases:
  install:
    commands:
      # kubectl 설치
      - kubectl 설치 명령어 작성!!
		
      # EKS Cluster 인증
      - aws eks --region <리전> update-kubeconfig --name <클러스터 이름> 
      - kubectl get po -n <네임스페이스>
  pre_build:
    commands:
      # CodeCommit 저장소에서 소스 코드를 가져옵니다.
      - <ECR 인증>
      - CURRENT_TIME=$(date '+%Y%m%d%H%M%S')
	  - MY_ECR="<ECR URL>:$CURRENT_TIME"
  build:
    commands:
      - echo "Building Docker image..."
      - docker build -t $MY_ECR .
      - echo "Pushing Docker image to Amazon ECR..."
      - docker push $MY_ECR
  post_build:
    commands:
      - echo "Deploying to Kubernetes cluster..."
      - kubectl delete -f k8s/deployment.yaml
      - kubectl delete -f k8s/service.yaml
      
      # deployment.yaml에서 MY_ECR를 ECR URL로 변경
      - sed -i "s/MY_ECR/$MY_ECR/g" ./k8s/deployment.yaml
      - kubectl apply -f k8s/deployment.yaml
      - kubectl apply -f k8s/service.yaml
      - kubectl get all -n <네임스페이스>

MY_ECR

 

CodeBuild의 역활을 EKS Cluster Auth에 설정해보겠습니다.

kubectl -n kube-system edit cm aws-auth

아래의 권한을 수정하여 추가해주세요.

    - groups:
      - system:masters
      rolearn: arn:aws:iam::<사용자 아이디>:role/<CodeBuild 역활 이름>
      username: <CodeBuild 역활 이름>