5.3. 경로 업데이트
설치된 클러스터 확장에 대한 업그레이드 에지 또는 업그레이드 제약 조건이라고도 하는 업데이트 경로를 결정할 때 OLM(Operator Lifecycle Manager) v1은 OpenShift Container Platform 4.16에서 시작하는 OLM(Classic) 의미 체계를 지원합니다. 이 지원은 replaces
, skips
, skipRange
지시어를 포함하여 OLM(클래식)의 동작을 따르지만 몇 가지 주목할 만한 차이점이 있습니다.
OLM(Classic) 의미 체계를 지원함으로써 OLM v1은 카탈로그의 업데이트 그래프를 정확하게 반영합니다.
원래 OLM(Classic) 구현의 차이점
여러 성공자가 있는 경우 OLM v1 동작은 다음과 같은 방식으로 다릅니다.
- OLM(Classic)에서 채널 헤드에 가장 가까운 후속 항목이 선택됩니다.
- OLM v1에서 의미 체계(semver)가 가장 높은 후속 버전이 선택됩니다.
다음 파일 기반 카탈로그(FBC) 채널 항목을 고려하십시오.
# ... - name: example.v3.0.0 skips: ["example.v2.0.0"] - name: example.v2.0.0 skipRange: >=1.0.0 <2.0.0
# ... - name: example.v3.0.0 skips: ["example.v2.0.0"] - name: example.v2.0.0 skipRange: >=1.0.0 <2.0.0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 1.0.0
이 설치된 경우 OLM v1 동작은 다음과 같은 방식으로 다릅니다.-
v2.0.0
을 건너뛰고대체
체인에 있지 않기 때문에 OLM(Classic)은v2.0.0
의 업데이트 경로를 감지하지 않습니다. -
OLM v1에는
대체
체인의 개념이 없기 때문에 OLM v1은 업데이트 경로를 감지합니다. OLM v1은 현재 설치된 버전을 포함하는replace
,skip
또는skipRange
값이 있는 모든 항목을 찾습니다.
-
5.3.1. 버전 범위 지원 링크 복사링크가 클립보드에 복사되었습니다!
OLM(Operator Lifecycle Manager) v1에서는 Operator 또는 확장의 CR(사용자 정의 리소스)에서 비교 문자열을 사용하여 버전 범위를 지정할 수 있습니다. CR에 버전 범위를 지정하면 OLM v1이 버전 범위 내에서 해결할 수 있는 최신 버전의 Operator를 설치하거나 업데이트합니다.
해결된 버전 워크플로
- 해결된 버전은 Operator 및 환경의 제약 조건을 충족하는 최신 버전의 Operator입니다.
- 지정된 범위 내의 Operator 업데이트가 성공적으로 확인되면 자동으로 설치됩니다.
- 지정된 범위를 벗어나거나 성공적으로 해결할 수 없는 경우 업데이트가 설치되지 않습니다.
5.3.2. 버전 비교 문자열 링크 복사링크가 클립보드에 복사되었습니다!
Operator 또는 확장의 CR(사용자 정의 리소스)의 spec.version
필드에 비교 문자열을 추가하여 버전 범위를 정의할 수 있습니다. 비교 문자열은 공백 또는 쉼표로 구분된 값 목록과 큰따옴표("
)로 묶인 하나 이상의 비교 연산자입니다. OR 또는 double vertical bar ( || ) 비교 연산자를 포함 하 여 다른 비교 문자열을 추가할 수 있습니다.You can add another comparison string by including an OR
, or double vertical bar (||
), comparison operator between the strings.
비교 연산자 | 정의 |
---|---|
| 동일 |
| 같지 않음 |
| 보다 큼 |
| 보다 작음 |
| 크거나 같음 |
| 작거나 같음 |
다음 예와 유사한 범위 비교를 사용하여 Operator 또는 확장의 CR에서 버전 범위를 지정할 수 있습니다.
버전 범위 비교 예
모든 유형의 비교 문자열에 와일드카드 문자를 사용할 수 있습니다. OLM v1에서는 x
,X
및 별표(*
)를 와일드카드 문자로 사용할 수 있습니다. 등호(=
) 비교 연산자와 함께 와일드카드 문자를 사용하는 경우 패치 또는 마이너 버전 수준에서 비교를 정의합니다.
와일드카드 비교 | 일치하는 문자열 |
---|---|
|
|
|
|
|
|
|
|
틸드(~
) 비교 연산자를 사용하여 패치 릴리스 비교를 수행할 수 있습니다. 패치 릴리스 비교에서는 다음 주요 버전까지 마이너 버전을 지정합니다.
패치 릴리스 비교 | 일치하는 문자열 |
---|---|
|
|
|
|
|
|
|
|
|
|
caret(^
) 비교 연산자를 사용하여 주요 릴리스를 비교할 수 있습니다. 첫 번째 안정적인 릴리스가 게시되기 전에 주요 릴리스 비교를 수행하는 경우 마이너 버전은 API의 안정성 수준을 정의합니다. 의미 체계 버전 관리 (semver) 사양에서 첫 번째 안정적인 릴리스는 1.0.0
버전으로 게시됩니다.
주요 릴리스 비교 | 일치하는 문자열 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5.3.3. 대상 버전을 지정하는 CR(사용자 정의 리소스)의 예 링크 복사링크가 클립보드에 복사되었습니다!
OLM(Operator Lifecycle Manager) v1에서 클러스터 관리자는 사용자 정의 리소스(CR)에서 Operator 또는 확장의 대상 버전을 선언적으로 설정할 수 있습니다.
다음 필드 중 하나를 지정하여 대상 버전을 정의할 수 있습니다.
- 채널
- 버전 번호
- 버전 범위
CR에 채널을 지정하면 OLM v1이 지정된 채널 내에서 해결할 수 있는 최신 버전의 Operator 또는 확장 버전을 설치합니다. 지정된 채널에 업데이트가 게시되면 OLM v1이 채널에서 확인할 수 있는 최신 릴리스로 자동으로 업데이트됩니다.
지정된 채널이 있는 CR의 예
- 1
- 선택 사항: 지정된 채널에서 확인할 수 있는 최신 릴리스를 설치합니다. 채널 업데이트가 자동으로 설치됩니다.
channels
매개변수의 값을 배열로 지정합니다.
CR에서 Operator 또는 확장의 대상 버전을 지정하면 OLM v1이 지정된 버전을 설치합니다. 대상 버전이 CR에 지정되면 업데이트가 카탈로그에 게시될 때 OLM v1에서 대상 버전이 변경되지 않습니다.
클러스터에 설치된 Operator 버전을 업데이트하려면 Operator의 CR을 수동으로 편집해야 합니다. Operator의 대상 버전을 지정하면 Operator 버전이 지정된 릴리스에 고정됩니다.
대상 버전이 지정된 CR의 예
- 1
- 선택 사항: 대상 버전을 지정합니다. 설치된 Operator 또는 확장 버전을 업데이트하려면 CR을 원하는 대상 버전으로 수동으로 업데이트해야 합니다.
Operator 또는 확장에 허용되는 다양한 버전을 정의하려면 비교 문자열을 사용하여 버전 범위를 지정할 수 있습니다. 버전 범위를 지정하면 OLM v1은 Operator 컨트롤러에서 해결할 수 있는 최신 버전의 Operator 또는 확장을 설치합니다.
버전 범위가 지정된 CR의 예
- 1
- 선택 사항: 원하는 버전 범위가 버전
1.11.1
보다 큰지 지정합니다. 자세한 내용은 "버전 범위 지원"을 참조하십시오.
CR을 생성하거나 업데이트한 후 다음 명령을 실행하여 구성 파일을 적용합니다.
명령 구문
oc apply -f <extension_name>.yaml
$ oc apply -f <extension_name>.yaml
5.3.4. 업데이트 또는 롤백 강제 적용 링크 복사링크가 클립보드에 복사되었습니다!
OLM v1은 다음 주요 버전 또는 롤백에 대한 자동 업데이트를 지원하지 않습니다. 주요 버전 업데이트 또는 롤백을 수행하려면 수동으로 업데이트를 확인하고 강제 적용해야 합니다.
수동 업데이트 또는 롤백을 강제 적용하는 결과를 확인해야 합니다. 강제 업데이트 또는 롤백을 확인하지 않으면 데이터 손실과 같은 심각한 결과가 발생할 수 있습니다.
사전 요구 사항
- 카탈로그가 설치되어 있어야 합니다.
- Operator 또는 확장이 설치되어 있어야 합니다.
- 서비스 계정을 생성하고 설치할 확장 기능을 설치, 업데이트 및 관리할 충분한 RBAC(역할 기반 액세스 제어)가 할당되었습니다. 자세한 내용은 서비스 계정 생성을 참조하십시오.
프로세스
다음 예와 같이 Operator 또는 확장의 CR(사용자 정의 리소스)을 편집합니다.
CR 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
파이프라인
또는my-extension
와 같이 번들을 설치할 네임스페이스를 지정합니다. 확장 기능은 여전히 클러스터 범위이며 다른 네임스페이스에 설치된 리소스가 포함될 수 있습니다.- 2
- 확장 기능을 설치, 업데이트 및 관리하기 위해 만든 서비스 계정의 이름을 지정합니다.
- 3
- 선택 사항:
pipelines-1.14
또는latest
와 같은 채널 이름을 배열로 지정합니다. - 4
- 선택 사항: 설치 또는 업데이트하려는 패키지의
1.14.0
,1.14.x
또는 >=1.16
과 같은 버전 범위를 지정합니다. 자세한 내용은 "대상 버전을 지정하는 CR(사용자 정의 리소스) 예" 및 "버전 범위에 대한 지원"을 참조하십시오. - 5
- 선택 사항: 업그레이드 제약 조건 정책을 지정합니다. 업데이트 또는 롤백을 강제 적용하려면 필드를
SelfCertified
로 설정합니다. 지정되지 않은 경우 기본 설정은CatalogProvided
입니다.CatalogProvided
설정은 새 버전이 패키지 작성자가 설정한 업그레이드 제약 조건을 충족하는 경우에만 업데이트됩니다.
다음 명령을 실행하여 Operator 또는 extensions CR에 변경 사항을 적용합니다.
oc apply -f <extension_name>.yaml
$ oc apply -f <extension_name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.5. OpenShift Container Platform 버전과의 호환성 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 관리자가 OpenShift Container Platform 클러스터를 다음 마이너 버전으로 업데이트하려면 설치된 모든 Operator가 클러스터의 다음 마이너 버전(4.y+1)과 호환되는 번들 버전으로 업데이트되었는지 확인해야 합니다.
예를 들어 Kubernetes는 후속 릴리스에서 제거된 특정 API를 주기적으로 사용하지 않습니다. 더 이상 사용되지 않는 API를 사용하는 경우 OpenShift Container Platform 클러스터가 제거된 Kubernetes 버전으로 업데이트된 후 더 이상 작동하지 않을 수 있습니다.
Operator 작성자가 특정 번들 버전이 지원되지 않고 특정 클러스터 마이너 버전 이후 OpenShift Container Platform에서 제대로 작동하지 않는 것을 알고 있는 경우 Operator와 호환되는 최대 OpenShift Container Platform 버전을 구성할 수 있습니다.
Operator 프로젝트의 CSV(클러스터 서비스 버전)에서 작성자는 olm.maxOpenShiftVersion
주석을 설정하여 설치된 Operator를 호환 버전으로 업데이트하기 전에 관리자가 클러스터를 업데이트하지 못하도록 할 수 있습니다.
olm.maxOpenShiftVersion
주석이 있는 CSV의 예
apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion metadata: annotations: "olm.properties": '[{"type": "olm.maxOpenShiftVersion", "value": "<cluster_version>"}]'
apiVersion: operators.coreos.com/v1alpha1
kind: ClusterServiceVersion
metadata:
annotations:
"olm.properties": '[{"type": "olm.maxOpenShiftVersion", "value": "<cluster_version>"}]'
- 1
- Operator와 호환되는 최신 마이너 버전 (4.y)을 지정합니다. 예를 들어
값을
4.20
으로 설정하면 이 번들이 클러스터에 설치될 때 4.20 이후의 마이너 버전으로 클러스터 업데이트가 수행되지 않습니다.olm.maxOpenShiftVersion
필드를 생략하면 이 Operator에 의해 클러스터 업데이트가 차단되지 않습니다.
클러스터의 다음 마이너 버전(4.y+1)을 결정할 때 OLM v1은 비교에 대해 메이저 및 마이너 버전(x 및 y)만 고려합니다. 패치 릴리스 또는 시험판 버전으로도 알려진 z-stream 버전(4.y.z)을 무시합니다.
예를 들어 클러스터의 현재 버전이 4.20.0
인 경우 다음 마이너 버전은 4.21
입니다. 현재 버전이 4.20.0-rc1
인 경우 다음 마이너 버전은 여전히 4.21
입니다.
5.3.5.1. olm cluster Operator에 의해 차단된 클러스터 업데이트 링크 복사링크가 클립보드에 복사되었습니다!
설치된 Operator의 olm.maxOpenShiftVersion
필드가 설정되어 클러스터 관리자가 Operator에서 유효한 업데이트 경로를 제공하지 않는 버전으로 클러스터를 업데이트하려고 하면 클러스터 업데이트가 실패하고 olm
클러스터 Operator의 Upgradeable
상태가 False
로 설정됩니다.
이 문제를 해결하려면 클러스터 관리자가 설치된 Operator를 유효한 업데이트 경로를 사용하여 버전으로 업데이트하거나 Operator를 제거해야 합니다. 그런 다음 클러스터 업데이트를 다시 시도할 수 있습니다.