[Sprint2] Blue/Green 배포 스크립트로 자동화 (Step 4)
목차
실습 전에 ..
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