제품 릴리스 비호환 관계
extensions.product-incompatibilities는 같은 배포 환경(Environment)에 동시에 설치할 수 없는 다른 제품 릴리스(Product Release)를 선언합니다. Apollo는 선언된 비호환 관계를 위반하는 동시 설치를 막습니다.
선언
다음은 가상 제품이 PostgreSQL의 특정 버전 범위와 동시에 설치되지 않도록 하는 예시입니다.
extensions:
product-incompatibilities:
- product-group: org.postgresql
product-name: postgresql
minimum-version: 9.3.6
maximum-version: 9.6.x
목록은 순서가 없습니다.
| 필드 | 필수 여부와 의미 |
|---|---|
product-group | 필수입니다. 비호환 대상 제품의 그룹입니다. |
product-name | 필수입니다. 비호환 대상 제품 이름입니다. |
product-type | 선택 항목입니다. 지정하면 특정 제품 유형으로 범위를 제한하고 생략하면 모든 유형에 적용합니다. 대상 매니페스트의 실제 유형을 사용합니다. |
minimum-version | 선택 항목입니다. 비호환 범위에 포함되는 최저 비교 가능 버전입니다. |
maximum-version | 선택 항목입니다. 비호환 범위에 포함되는 상한 버전 매처입니다. |
예시에서는 제품 유형을 생략하여 모든 유형에 적용합니다. 배포 개체의 entity-type 값을 제품 매니페스트 유형으로 대입하지 않습니다.
한쪽 선언으로도 양방향 적용
가상의 서비스 A와 B가 함께 실행될 수 없으면 각 매니페스트에 서로의 비호환 관계를 선언할 수 있습니다. 다만 A만 B와의 비호환 관계를 선언해도 두 방향에 적용합니다.
- B가 이미 설치되어 있으면 A 설치를 막습니다.
- A가 이미 설치되어 있으면 나중에 추가한 B 설치를 막습니다.
이 제약은 둘 중 하나를 반드시 설치하도록 보장하지 않습니다. 환경 편집자가 필요한 제품을 Apollo 관리 대상으로 지정해야 합니다. 비호환 관계와 의존 관계는 함께 사용할 수 있습니다.
비호환 버전 범위
상하한을 지정하면 후보 v가 하한 이상이고, 상한 매처에 맞는 Release 버전 upper-bound 중 upper-bound >= v인 값이 있을 때 비호환 범위에 들어갑니다. 위 예시는 다음과 같습니다.
| 판정 | 버전 |
|---|---|
| 비호환 범위에 포함 | 9.3.6, 9.4.0, 9.4.2-rc1, 9.6.0-rc1, 9.6.1-22-g1a2b3c4 |
| 범위보다 낮음 | 9.2.0 |
| 범위보다 높음 | 10.0.0, 11.1.2-rc2, 9.7.0-1-gabcdef |
| 비교 가능한 범위 판정 대상이 아님 | 9.5.0-custom-branch |
상한이 1.2.3이면 1.2.3과 1.2.3-rc4는 그 상한 안에 있지만 1.2.4와 1.2.3-4-gabcdef는 상한을 넘습니다. 일반 스냅샷은 같은 기본 버전의 Release보다 더 큽니다.