2.2.3. 프로세스 워크플로 업데이트
다음 단계는 OCP(OpenShift Container Platform) 업데이트 프로세스의 자세한 워크플로를 나타냅니다.
-
대상 버전은 웹 콘솔 또는 CLI를 통해 관리할 수 있는
ClusterVersion리소스의spec.desiredUpdate.version필드에 저장됩니다. -
CVO(Cluster Version Operator)는
ClusterVersion리소스의desiredUpdate가 현재 클러스터 버전과 다른 것을 감지합니다. OpenShift Update Service의 그래프 데이터를 사용하여 CVO는 원하는 클러스터 버전을 릴리스 이미지의 가져오기 사양으로 확인합니다. - CVO는 릴리스 이미지의 무결성 및 진위 여부를 검증합니다. Red Hat은 이미지 SHA 다이제스트를 고유하고 변경할 수 없는 릴리스 이미지 식별자로 사용하여 사전 정의된 위치에서 게시된 릴리스 이미지에 대해 암호화 방식으로 서명합니다. CVO는 기본 제공 공개 키 목록을 사용하여 선택한 릴리스 이미지와 일치하는 문의 존재 및 서명을 검증합니다.
-
CVO는
openshift-cluster-version네임스페이스에version-$version-$hash라는 작업을 생성합니다. 이 작업은 릴리스 이미지를 실행하는 컨테이너를 사용하므로 클러스터는 컨테이너 런타임을 통해 이미지를 다운로드합니다. 그런 다음 이 작업은 릴리스 이미지의 매니페스트 및 메타데이터를 CVO에 액세스할 수 있는 공유 볼륨으로 추출합니다. - CVO는 추출된 매니페스트 및 메타데이터의 유효성을 검사합니다.
- CVO는 일부 사전 조건을 검사하여 클러스터에서 문제가 있는 상태가 탐지되지 않도록 합니다. 특정 조건은 업데이트가 진행되지 않도록 할 수 있습니다. 이러한 조건은 CVO 자체에 의해 결정되거나, Operator가 업데이트에 문제가 있다고 간주하는 클러스터에 대한 몇 가지 세부 정보를 감지하는 개별 클러스터 Operator에 의해 보고됩니다.
-
CVO는 허용되는 릴리스를
status.desired에 기록하고 새 업데이트에 대한status.history항목을 생성합니다. - CVO는 릴리스 이미지에서 매니페스트를 조정하기 시작합니다. 클러스터 Operator는 Runlevels라는 별도의 단계에서 업데이트되며 CVO는 다음 단계로 진행하기 전에 Runlevel 완료 업데이트의 모든 Operator를 확인합니다.
- CVO 자체에 대한 매니페스트는 프로세스 초기에 적용됩니다. CVO 배포가 적용되면 현재 CVO Pod가 중지되고 새 버전을 사용하는 CVO Pod가 시작됩니다. 새 CVO는 나머지 매니페스트를 조정합니다.
-
업데이트는 전체 컨트롤 플레인이 새 버전으로 업데이트될 때까지 진행됩니다. 개별 클러스터 Operator는 클러스터 도메인에서 업데이트 작업을 수행할 수 있으며 이렇게 하는 동안
Progressing=True조건을 통해 상태를 보고합니다. - MCO(Machine Config Operator) 매니페스트는 프로세스 종료에 적용됩니다. 그런 다음 업데이트된 MCO는 모든 노드의 시스템 구성 및 운영 체제를 업데이트하기 시작합니다. 워크로드를 다시 수락하기 전에 각 노드를 드레이닝, 업데이트 및 재부팅할 수 있습니다.
일반적으로 모든 노드가 업데이트되기 전에 클러스터는 컨트롤 플레인 업데이트가 완료된 후 업데이트된 것으로 보고합니다. 업데이트 후 CVO는 릴리스 이미지에서 전달된 상태와 일치하도록 모든 클러스터 리소스를 유지 관리합니다.