인프런 복습 - 쿠버네티스 어나더 클래스

[Sprint2] Blue/Green 배포 스크립트로 자동화 (Step 4)

closun 2025. 5. 22. 14:50

목차

실습 전에 ..

Blue/Green 자동 배포 Script 실습

Jenkins Script 확인 

 

 


실습 전에..

 

이전의 Blue/Green 배포 과정에서 

1. Green Deployment, 테스트용 Service 생성

2. Service의 selector를 2로 변경하여 트래픽을 Green으로 전환

3. Blue Deployment, Green service 삭제 및 관련 리소스와 labels 정보(version) 변경 

=> 이후에는 이때 누락정보가 있을 수 있기 때문에 helm을 사용 

 

 

현재 배포 과정

1 .Green Deployment 생성

2. Pod들이 ready 상태인지 확인

3. Service의 selector (blue-green-no: 2 로 수정)
4. Blue Deployment 삭제 및 관련 모든 리소스의 레이블 정보 변경(version: 2.0.0)

 

 

자동 배포는 새로 배포하는 앱에 문제가 생기지 않을 거라는 확신을 전제로 함 

단지 배포 중에 하나의 버전의 앱을 호출하기 원하는 것! 

 

 

 

 


 

 

Blue/Green 자동 배포 Script 실습

Enter an item name : 2214-jenkins_pipeline-step4

Copy from : 2213-jenkins_pipeline-step3

 

# mater node 에서 version 조회
while true; do curl http://192.168.56.30:32214/version; sleep 1; echo '';  done;

▲ Blue가 삭제되면서 v2로 트래픽이 전환됨 

 

 

 

 

 


Jenkins Script 확인 

 

Deployment 하나만 배포 

 

 

 

▲ v2 파드가 기동이 되었는지 확인하는 부분 

▲ kubectl의 결과값이 나오면 콘솔 화면에 출력되는 변수값을 returnValue에 넣는다 

-l 옵션: Pod의 레이블 지정 

-o 옵션: Pod의 내부 상태 값 조회

▲ containerStatues의 ready 키가 ture이면 readinessProbe가 성공했고 트래픽을 정상으로 받는다는 의미 

결국 kubectl로 조회했을 때 나오는 Pod가 두개임으로 true가 두번 출력된다. (그런데 Pod가 몇개일지 모르는 상황에서 이런식으로 코딩하면 좋지 않음, 참고만 하기 )

 

 

 

 

 

 

 

 

이렇게까지 코딩해서 블루그린 배포를 해야할까?

지금까지 배운 Blue/Green 배포는 교육용이지 실무용은 아님. 

하지만 원리는 알아야함 !!!! 

그럼 어떻게 사용해야 할까? => ArcoCD 사용

 

 

⚠️다음 실습을 위해 꼭 정리하기 

kubectl delete ns anotherclass-221