티스토리 뷰
http
CodeCommit의 여러 이벤트 처리하기 CodeCommitAWS는 CodeCommit을 “AWS CodeCommit은 안전한 Git 기반 리포지토리를 호스팅하는 완전관리형 소스 제어 서비스입니다.” 라고 소개하고 있습니다. 즉 GitHub의 AWS 버전입니다. CodePipeline등 AWS의 CI/ techblog.kr
시작하기¶
이 가이드는 배포, 업그레이드, 프로모션 및 롤아웃 중단을 통해 Argo 롤아웃의 다양한 개념과 기능을 보여줍니다.
요구 사항¶
1. 롤아웃 배포¶
먼저 롤아웃 리소스와 해당 롤아웃을 대상으로 하는 Kubernetes 서비스를 배포합니다. 이 가이드의 예제 롤아웃은 트래픽의 20%를 카나리아로 보낸 다음 수동 승격을 하고 마지막으로 업그레이드의 나머지 기간 동안 점진적으로 자동화된 트래픽을 증가시키는 카나리아 업데이트 전략을 사용합니다. 이 동작은 출시 사양의 다음 부분에 설명되어 있습니다.
spec:
replicas: 5
strategy:
canary:
steps:
- setWeight: 20
- pause: {}
- setWeight: 40
- pause: {duration: 10}
- setWeight: 60
- pause: {duration: 10}
- setWeight: 80
- pause: {duration: 10}
다음 명령을 실행하여 초기 롤아웃 및 서비스를 배포합니다.
kubectl apply -f https://raw.githubusercontent.com/argoproj/argo-rollouts/master/docs/getting-started/basic/rollout.yaml
kubectl apply -f https://raw.githubusercontent.com/argoproj/argo-rollouts/master/docs/getting-started/basic/service.yaml
롤아웃의 초기 생성은 발생한 업그레이드가 없기 때문에 복제본을 즉시 100%로 확장합니다(카나리아 업그레이드 단계, 분석 등 건너뛰기...).
Argo Rollouts kubectl 플러그인을 사용하면 롤아웃, 관련 리소스(ReplicaSets, Pods, AnalysisRuns)를 시각화하고 발생하는 실시간 상태 변경을 표시할 수 있습니다. 배포되는 롤아웃을 보려면 get rollout --watch플러그인에서 다음 명령을 실행하세요.
kubectl argo rollouts get rollout rollouts-demo --watch
2. 롤아웃 업데이트¶
다음은 업데이트를 수행할 시간입니다. 배포와 마찬가지로 파드 템플릿 필드( spec.template)를 변경하면 배포할 새 버전(예: ReplicaSet)이 생성됩니다. kubectl apply롤아웃 업데이트에는 일반적으로 새 버전으로 컨테이너 이미지 필드를 변경한 다음 새 매니페스트에 대해 실행하는 롤아웃 사양 수정이 포함됩니다 . 편의상, 롤아웃 플러그인은 set image라이브 롤아웃 개체에 대해 이러한 단계를 제자리에서 수행하는 명령을 제공합니다. 다음 명령을 실행하여 rollouts-demo컨테이너의 "노란색" 버전으로 롤아웃을 업데이트합니다.
kubectl argo rollouts set image rollouts-demo \
rollouts-demo=argoproj/rollouts-demo:yellow
롤아웃 업데이트 중에 컨트롤러는 롤아웃의 업데이트 전략에 정의된 단계를 진행합니다. 예시 롤아웃은 카나리아에 20% 트래픽 가중치를 설정하고 롤아웃 일시 중지 해제/승격을 위한 사용자 작업이 수행될 때까지 롤아웃을 무기한 일시 중지합니다. 이미지를 업데이트한 후 일시중지 상태가 될 때까지 롤아웃을 다시 관찰합니다.
kubectl argo rollouts get rollout rollouts-demo --watch
데모 롤아웃이 두 번째 단계에 도달하면 플러그인에서 롤아웃이 일시 중지된 상태이고 이제 새 버전의 포드 템플릿을 실행하는 복제본 5개 중 1개와 이전 버전을 실행하는 복제본 5개 중 4개가 있음을 플러그인에서 볼 수 있습니다. 이는 setWeight: 20단계에서 정의한 20% 카나리아 중량과 같습니다.
3. 출시 촉진¶
이제 출시가 일시 중지된 상태입니다. 롤아웃이 pause지속 시간이 없는 단계에 도달하면 재개/승격될 때까지 일시 중지된 상태로 무기한 유지됩니다. 다음 단계로 롤아웃을 수동으로 승격하려면 promote플러그인 명령을 실행하세요.
kubectl argo rollouts promote rollouts-demo
승격 후 롤아웃은 나머지 단계를 계속 실행합니다. 이 예의 나머지 롤아웃 단계는 완전히 자동화되어 있으므로 롤아웃은 새 버전으로 완전히 전환될 때까지 결국 단계를 완료합니다. 모든 단계를 완료할 때까지 롤아웃을 다시 시청하세요.
kubectl argo rollouts get rollout rollouts-demo --watch
팁
이 명령은 플래그 promote를 사용하여 나머지 모든 단계 및 분석을 건너뛰는 기능도 지원합니다 .--full
모든 단계가 성공적으로 완료되면 새 ReplicaSet이 "안정된" ReplicaSet으로 표시됩니다. 업데이트 중에 롤아웃이 중단될 때마다 실패한 카나리아 분석을 통해 자동으로 또는 사용자가 수동으로 롤아웃이 "안정된" 버전으로 대체됩니다.
4. 롤아웃 중단¶
다음으로 업데이트 중에 롤아웃을 수동으로 중단하는 방법을 알아보겠습니다. 먼저 명령을 사용하여 컨테이너의 새 "빨간색" 버전을 배포 set image하고 롤아웃이 일시 중지된 단계에 다시 도달할 때까지 기다립니다.
kubectl argo rollouts set image rollouts-demo \
rollouts-demo=argoproj/rollouts-demo:red
이번에는 다음 단계로 롤아웃을 승격하는 대신 업데이트를 중단하여 "안정된" 버전으로 돌아갑니다. 플러그인은 abort업데이트 중에 언제든지 롤아웃을 수동으로 중단하는 방법으로 명령을 제공합니다.
kubectl argo rollouts abort rollouts-demo
롤아웃이 중단되면 ReplicaSet의 "안정된" 버전(이 경우 노란색 이미지)을 확장하고 다른 버전은 축소합니다. ReplicaSet의 안정적인 버전이 실행 중일 수 있고 정상이지만 Degraded원하는 버전(빨간색 이미지)이 실제로 실행 중인 버전이 아니기 때문에 전체 롤아웃은 여전히 고려됩니다.
롤아웃을 다시 정상으로 간주하고 성능이 저하되지 않도록 하려면 원하는 상태를 이전의 안정적인 버전으로 다시 변경해야 합니다. 여기에는 일반적으로 kubectl apply 이전 출시 사양에 대한 실행이 포함됩니다. 우리의 경우 set image이전 "노란색" 이미지를 사용하여 명령을 다시 실행할 수 있습니다.
kubectl argo rollouts set image rollouts-demo \
rollouts-demo=argoproj/rollouts-demo:yellow
이 명령을 실행한 후 롤아웃이 즉시 정상 상태가 되고 생성되는 새 ReplicaSet와 관련된 활동이 없음을 확인해야 합니다.
롤아웃이 아직 원하는 상태에 도달하지 않고(예: 중단되었거나 업데이트 중) 안정적인 매니페스트가 다시 적용된 경우 롤아웃은 이를 업데이트가 아닌 롤백으로 감지하고 빠르게 실행합니다. 분석 및 단계를 건너뛰어 안정적인 ReplicaSet의 배포를 추적합니다.
요약¶
이 가이드에서는 다음을 포함하여 Argo 롤아웃의 기본 기능을 배웠습니다.
- 출시 배포
- 카나리아 업데이트 수행
- 수동 승격
- 수동 낙태
이 기본 예의 롤아웃은 트래픽을 라우팅하기 위해 수신 컨트롤러 또는 서비스 메시 제공자를 활용하지 않았습니다. 대신 새 복제본 수와 기존 복제본 수의 가장 가까운 비율을 기반으로 대략적인 카나리아 가중치 를 달성하기 위해 일반 Kubernetes 서비스 네트워킹(예: kube-proxy)을 사용했습니다 . 결과적으로 이 롤아웃은 새 버전을 실행하기 위해 5개의 포드 중 1개를 확장하여 최소 20%의 카나리아 가중치만 달성할 수 있다는 한계가 있었습니다. 훨씬 더 미세한 카나리아를 구현하려면 인그레스 컨트롤러 또는 서비스 메시가 필요합니다.
트래픽 라우팅 가이드 중 하나를 따라 Argo Rollouts가 네트워킹 공급자를 활용하여 고급 트래픽 셰이핑을 달성하는 방법을 확인하십시오.
- Total
- Today
- Yesterday
- 쿠버네티스
- Oracle
- 커널
- ORACLE 트러블 슈팅(성능 고도화 원리와 해법!)
- pod 상태
- 트리이스
- 키알리
- 오라클 인스턴트클라이언트(InstantClient) 설치하기(HP-UX)
- 튜닝
- directory copy 후 startup 에러
- 오라클
- (InstantClient) 설치하기(HP-UX)
- 우분투
- 여러서버 컨트롤
- 코로나19
- 설치하기(HP-UX)
- MSA
- 버쳐박스
- 앤시블
- startup 에러
- K8s
- 오라클 홈디렉토리 copy 후 startup 에러
- [오라클 튜닝] instance 튜닝2
- 5.4.0.1072
- 테라폼
- 스토리지 클레스
- 오라클 트러블 슈팅(성능 고도화 원리와 해법!)
- CVE 취약점 점검
- [오라클 튜닝] sql 튜닝
- ubuntu
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |