컨테이너 이미지 요구사항
CloudNativePG(Kubernetes용 PostgreSQL 오퍼레이터)는 아래 요구사항을 충족하는 모든 호환 가능한 PostgreSQL 컨테이너 이미지와 함께 동작하도록 설계되어 있어요. 기술적으로 까다로운 부분은 공식 이미지를 쓰면 대부분 해결되지만, 커스텀 이미지를 직접 만든다면 어떤 점을 지켜야 하는지 정확히 알아두는 게 좋아요.
출처: 문서
본문
CloudNativePG(Kubernetes용 PostgreSQL 오퍼레이터)는 다음과 같은 요구사항을 충족하는 모든 호환 가능한 PostgreSQL 컨테이너 이미지와 함께 동작하도록 설계되어 있어요:
- PostgreSQL 실행 파일이 시스템 PATH에 있어야 해요:
initdbpostgrespg_ctlpg_controldatapg_basebackup
- 올바른 로케일(locale) 설정이 구성되어 있어야 해요
선택적 구성 요소:
- PGAudit 확장 (감사 로깅이 필요할 때만)
du(kubectl cnpg status에서 사용됨)
:::info[Important] 오직 PGDG가 공식적으로 지원하는 PostgreSQL 버전만 허용돼요. :::
:::info CloudNativePG에서는 더 이상 Barman Cloud 실행 파일이 필요하지 않아요. 권장하는 방법은 전용 Barman Cloud Plugin을 사용하는 거예요. :::
이미지 정의에 entry point나 command가 필요하지 않아요. CloudNativePG가 인스턴스 매니저로 자동으로 오버라이드하기 때문이에요.
:::warning CloudNativePG는 PostgreSQL 애플리케이션 컨테이너 이미지에 대해 프라이머리(Primary) + 다중/선택적 핫 스탠바이(Hot Standby) 서버 아키텍처만 지원해요. :::
CloudNativePG 커뮤니티는 CloudNativePG와 완전히 호환되는 공개 PostgreSQL 컨테이너 이미지를 제공하고 유지 관리하고 있어요. 이 이미지는 ghcr.io에 게시돼 있어요.
이미지 태그 요구사항
오퍼레이터가 올바른 결정을 내리려면 PostgreSQL 메이저 버전을 정확하게 감지해야 해요. 이 감지는 두 가지 방식으로 이루어져요:
- 정의되어 있다면
imageCatalogRef의major필드를 활용한다. - 명시적으로 지정되지 않았다면
imageName의 이미지 태그에서 메이저 버전을 자동 감지한다.
자동 감지가 동작하려면 이미지 태그가 특정 형식을 따라야 해요. 유효한 PostgreSQL 메이저 버전 번호(예: 15.6 또는 16)로 시작해야 하며, 선택적으로 점(.)과 패치 레벨이 이어질 수 있어요.
그 다음으로 태그에는 점, 밑줄, 또는 마이너스 기호가 앞에 붙은 Docker 태그에서 유효하고 허용되는 모든 문자 조합이 포함될 수 있어요.
허용되는 이미지 태그 예시:
12.113.3.2.1-113.41415.5-1016.0
:::warning
latest는 이미지의 유효한 태그로 간주되지 않아요.
:::
:::note 이미지 태그 요구사항은 카탈로그에 정의된 이미지에는 적용되지 않아요. :::