업그레이드 실패 동작 제어
개요
이 가이드에서는 컨테이너 CNF(네트워크 함수)에 대한 AOSM(Azure Operator Service Manager) 업그레이드 실패 동작 기능에 대해 설명합니다. 이러한 기능은 AOSM 안전 업그레이드 사례 이니셔티브의 일부로 실패 시 일시 중지와 실패 시 롤백을 통해 시작 지점으로의 복귀 중에서 더 빠른 재시도 중에서 선택할 수 있습니다.
오류 발생 후 일시 중지
AOSM을 사용하는 모든 업그레이드는 SNS(사이트 네트워크 서비스) 평판 opreation으로 시작됩니다. 평판 작업은 NFDV(네트워크 함수 디자인 버전)에 있는 NfApps(네트워크 함수 애플리케이션)를 처리합니다. 평판 작업은 다음 기본 논리를 구현합니다.
- NfApps는 updateDependsOn 순서에 따라 처리되거나 순차적으로 표시됩니다.
- "applicationEnabled" 매개 변수가 사용하지 않도록 설정된 NfApps는 건너뜁니다.
- NFApps가 있지만 새 NFDV에서 참조하지 않는 경우 삭제됩니다.
- NfApp 업그레이드가 실패하고 롤백이 고려되면 실행 시퀀스가 일시 중지됩니다.
- 이 오류로 인해 NF 리소스가 실패 상태로 남습니다.
실패 시 일시 중지 시 AOSM은 testOptions, installOptions 또는 upgradeOptions 매개 변수를 통해 실패한 NfApp만 롤백합니다. 실패한 NfApp을 진행하는 NfApp에 대해 아무 작업도 수행되지 않습니다. 이 방법을 사용하면 최종 사용자가 실패한 NfApp 문제를 해결한 다음 해당 시점부터 업그레이드를 다시 시작할 수 있습니다. 기본 동작으로, 이 메서드는 가장 효율적인 방법이지만 혼합 버전 상태에서 NF(네트워크 함수) 불일치가 발생할 수 있습니다.
실패 시 롤백
NfApp 버전이 일치하지 않는 위험을 해결하기 위해 이제 AOSM은 실패 시 NF 수준 롤백을 지원합니다. 이 옵션을 사용하도록 설정하면 NfApp 작업이 실패하면 실패한 NfApp과 이전에 완료된 모든 NfApps를 모두 초기 버전 상태로 롤백할 수 있습니다. 이 메서드는 NF가 NfApp 버전 불일치에 노출되는 시간을 최소화하거나 제거합니다. 오류 기능에 대한 선택적 롤백은 다음과 같이 작동합니다.
- 사용자가 sSNS 평판 작업을 시작하고 실패 시 롤백을 사용하도록 설정합니다.
- 현재 NfApp 버전의 스냅샷이 캡처되고 저장됩니다.
- 스냅샷은 성공적으로 완료된 역방향 작업을 위해 수행된 개별 NfApp 작업을 결정하는 데 사용됩니다.
- 삭제된 구성 요소에 대한 "helm install" 작업,
- 업그레이드된 구성 요소에 대한 "helm rollback" 작업,
- 새로 설치된 구성 요소에 대한 "helm delete" 작업
- NfApp 오류가 발생하면 AOSM은 업그레이드 전에 NfApps를 스냅샷 버전 상태로 복원하고 가장 최근의 작업은 먼저 되돌려 줍니다.
참고 항목
- 사용자가 실패 시 롤백을 사용하도록 설정하지 않으면 AOSM에서 스냅샷을 만들지 않습니다.
- 실패 시 롤백은 성공적으로 완료된 NFApps에만 적용됩니다.
- testOptions, installOptions 또는 upgradeOptions 매개 변수를 사용하여 실패한 NfApp의 롤백을 제어합니다.
AOSM은 각 결과에 따라 다음과 같은 작업 상태 및 메시지를 반환합니다.
- Upgrade Succeeded
- Provisioning State: Succeeded
- Message: <empty>
- Upgrade Failed, Rollback Succeeded
- Provisioning State: Failed
- Message: Application(<ComponentName>) : <Failure Reason>; Rollback succeeded
- Upgrade Failed, Rollback Failed
- Provisioning State: Failed
- Message: Application(<ComponentName>) : <Failure reason>; Rollback Failed (<RollbackComponentName>) : <Rollback Failure reason>
실패 시 롤백을 구성하는 방법
실패 동작을 제어하는 가장 유연한 방법은 NF 페이로드에서 roleOverrideValues를 통해 CGV(구성 그룹 값) 제어를 허용하도록 새 CGS(구성 그룹 스키마) 매개 변수인 rollbackEnabled를 확장하는 것입니다. 먼저 CGS 매개 변수를 정의합니다.
{
"description": "NF configuration",
"type": "object",
"properties": {
"nfConfiguration": {
"type": "object",
"properties": {
"rollbackEnabled": {
"type": "boolean"
}
},
"required": [
"rollbackEnabled"
]
}
}
}
참고 항목
- roleOverrideValues 매개 변수를 통해 nfConfiguration을 제공하지 않으면 기본적으로 롤백이 비활성화됩니다.
새 rollbackEnable 매개 변수가 정의된 상태에서 운영자는 이제 NF 리포지토리 페이로드의 일부로 roleOverrideValues에서 런타임 값을 제공할 수 있습니다.
example:
{
"location": "eastus",
"properties": {
// ...
"roleOverrideValues": [
"{\"nfConfiguration\":{\"rollbackEnabled\":true}}",
"{\"name\":\"nfApp1\",\"deployParametersMappingRuleProfile\":{\"applicationEnablement\" : \"Disabled\"}}",
"{\"name\":\"nfApp2\",\"deployParametersMappingRuleProfile\":{\"applicationEnablement\" : \"Disabled\"}}",
//... other nfapps overrides
]
}
}
참고 항목
- 각 roleOverrideValues 항목은 NfAapps의 기본 동작을 재정의합니다.
- roleOverrideValues에서 nfConfiguration의 여러 항목이 발견되면 NF 평판이 잘못된 요청으로 반환됩니다.
오류 시 롤백 문제를 해결하는 방법
Pod 상태 이해
다양한 Pod 상태를 이해하는 것은 효과적인 문제 해결에 매우 중요합니다. 다음은 가장 일반적인 Pod 상태입니다.
- 보류 중: Kubernetes에서 Pod 예약을 진행 중입니다.
- 실행 중: Pod의 모든 컨테이너가 실행 중이며 정상 상태입니다.
- 실패: Pod에서 하나 이상의 컨테이너가 0이 아닌 종료 코드로 종료됩니다.
- CrashLoopBackOff: Pod 내의 컨테이너가 반복적으로 충돌하고 Kubernetes에서 다시 시작할 수 없습니다.
- ContainerCreating: 컨테이너 런타임에 의해 컨테이너 만들기가 진행 중입니다.
Pod 상태 및 로그 확인
먼저 kubectl 명령을 사용하여 Pod 상태 및 로그를 확인합니다.
$ kubectl get pods
$ kubectl logs <pod-name>
get Pod 명령은 현재 네임스페이스의 모든 Pod와 현재 상태를 나열합니다. logs 명령은 특정 Pod에 대한 로그를 검색하여 오류 또는 예외를 검사할 수 있도록 합니다. 네트워킹 문제를 해결하려면 다음 명령을 사용합니다.
$ kubectl get services
$ kubectl describe service <service-name>
get services 명령은 현재 네임스페이스의 모든 서비스를 표시합니다. 이 명령은 연결된 엔드포인트 및 관련 오류 메시지를 포함하여 특정 서비스에 대한 세부 정보를 제공합니다. PVC에 문제가 발생하는 경우 다음 명령을 사용하여 디버그할 수 있습니다.
$ kubectl get persistentvolumeclaims
$ kubectl describe persistentvolumeclaims <pvc-name>
"get persistentvolumeclaims" 명령은 현재 네임스페이스의 모든 PVC를 나열합니다. 설명 명령은 상태, 연결된 스토리지 클래스 및 관련 이벤트 또는 오류를 포함하여 특정 PVC에 대한 자세한 정보를 제공합니다.