긴급 명령과 리소스 재시작
일반 변경 계획은 유지보수 시간대, 의존 관계와 상태 등의 제약을 충족해야 실행됩니다. 긴급 상황에서는 명령(Command)으로 이러한 제약과 계획 우선순위를 우회하여 필요한 작업을 가능한 한 빨리 수행할 수 있습니다.
명령은 안전 제약을 우회하므로 일반적인 배포 변경의 대체 수단으로 사용하지 않습니다. 제품 의존 관계나 상태 조건이 충족되지 않아도 동작할 수 있습니다.
명령 발행
Entity operator 또는 Environment operator는 배포 개체 화면의 Actions → Execute command...에서 명령을 발행할 수 있습니다. 명령 유형과 필요한 값을 선택하고 실행 사유를 입력합니다.
개체 하나에는 대기 또는 실행 중인 명령이 하나만 있을 수 있습니다. 이전 명령이 종료되어야 새 명령을 발행할 수 있습니다.
명령 유형
Install
Install pending 상태의 개체에 사용할 수 있습니다. Target Version으로 지정한 제품 릴리스를 환경에 설치합니다.
Uninstall
설치되어 있으면서 Uninstall pending 상태인 개체에 사용할 수 있습니다. 일반 설치 제거가 제약으로 막혀 있을 때 제약을 우회하여 강제로 제거합니다.
의존하는 서비스가 남아 있는 경우 등 일반 제거가 차단된 이유를 먼저 확인해야 합니다.
Enforce config
현재 실행 중인 릴리스에 맞는 최신 설정 재정의를 적용합니다.
Enforce config and version
현재 릴리스를 Target version으로 바꾸고 그 버전에 적용되는 최신 설정 재정의를 함께 적용합니다.
실행 조건과 우선순위
명령을 발행하면 먼저 대기 상태가 됩니다. 실행 조건이 충족되면 가능한 이른 시점에 에이전트에 전달합니다.
| 상황 | 명령 처리 |
|---|---|
| 유지보수 시간대 밖 | 일반 계획과 달리 실행 가능 |
| 활성 변경 억제 시간대 | 명령 자체는 차단되지 않음 |
| 개체가 비정상 상태이거나 회수된 릴리스 실행 중 | 일반 계획의 상태 제약과 달리 실행 시도 가능 |
| 같은 개체에 활성 계획이 있거나 충돌 작업이 진행 중 | 끝나거나 중단될 때까지 대기 |
| 대기 중인 명령과 일반 계획이 함께 있음 | 명령을 먼저 실행하고 이후 계획 평가·실행 계속 |
명령이 대기하는 이유는 상태의 정보 아이콘에 마우스를 올려 확인할 수 있습니다. 긴급히 진행하려면 관련 개체의 변경 억제 시간대로 충돌하는 계획의 중단을 요청할 수 있습니다. 그러나 억제 시간대는 명령 자체를 막지 않으므로 명령을 멈추려면 대기 명령을 취소하거나 실행 중인 명령을 중단해야 합니다.
명령 이후의 자동 관리
명령이 끝나도 Apollo는 가능한 일반 계획을 계속 평가합니다. 예를 들어 명령으로 낮은 버전으로 바꾸어도 기존 릴리스를 회수하거나 변경 억제 시간대를 두지 않았다면, 조건을 충족하는 순간 다시 높은 버전으로 업그레이드할 수 있습니다.
긴급 변경의 목적을 유지하려면 회수, 릴리스 채널과 억제 시간대 등 이후 정책을 함께 검토합니다. 특정 버전 유지가 목적이라면 전용 릴리스 채널을 사용할 수 있습니다.
함께 적용되는 비밀정보 작업
비밀정보를 지원하는 개체에 대기 중인 비밀정보 작업이 있으면 명령에 함께 포함되며 명령 명세에서 확인할 수 있습니다. 버전 설치 명령과 함께 비밀정보를 생성하거나 변경할 수도 있으므로, 이러한 작업의 영향도 확인해야 합니다.
실행 이력 확인
배포 개체의 Commands 탭에서 최근 6개월 동안 실행한 명령을 볼 수 있습니다.
| 정보 | 확인할 내용 |
|---|---|
| 상태 | 선택하면 실패 사유 등 상세 정보 표시 |
| 명령 유형 | Enforce config and version이면 선택한 목표 버전도 표시 |
| 발행자와 발행 시각 | 누가 언제 명령을 발행했는지 |
| 실행 사유 | 물음표 아이콘에 마우스를 올려 발행자가 남긴 사유 확인 |
대기 명령 취소와 실행 중 명령 중단
현재 대기 또는 실행 중인 명령은 Commands 탭의 위쪽에 표시됩니다.
- 실행 전에 취소하면 명령을 에이전트에 추천하지 않습니다.
- 실행 중에 중단하면 에이전트에 실행을 멈추도록 합니다. 이미 적용된 변경을 모두 되돌리는 작업은 아닙니다.
중단 후 개체가 비정상 상태로 남을 수 있습니다. Apollo는 중지된 채 남은 노드를 다시 시작하려고 시도합니다.
Apollo는 에이전트의 협조 없이 계획을 종료할 수 없으므로, 에이전트가 중지되거나 응답하지 않으면 중단에 오래 걸리거나 끝나지 않을 수 있습니다.
Helm 차트의 Kubernetes 리소스 재시작
Helm 차트 개체의 Resources에서는 Deployment나 StatefulSet이 관리하는 리소스를 재시작할 수 있습니다. kubectl rollout restart와 유사하게 컨트롤러의 롤아웃 전략에 따라 Pod를 갱신하며, 별도 전략이 없으면 기본 롤링 업데이트 방식으로 진행합니다.
- Helm 차트 개체의 Resources를 엽니다.
- 대상 Deployment 또는 StatefulSet을 선택합니다.
- 리소스의 메뉴나 오른쪽 위에서 Restart를 선택합니다.
- Apollo가 생성하고 추천한 재시작 계획의 실행 상태를 확인합니다.
- Activity에서 진행 상황을 보고 Resources에서 새 Pod가 만들어지는지 확인합니다.
이 작업은 복제본 수를 0으로 줄여 서비스를 중지하는 구성과 구분합니다.