4.11. 사용자 정의 Init Container 이미지 지정
4.1절. “Operator에서 브로커 구성을 생성하는 방법” 에 설명된 대로 AMQ Broker Operator는 기본 기본 제공 Init 컨테이너를 사용하여 브로커 구성을 생성합니다. 구성을 생성하기 위해 Init Container는 배포에 기본 CR(사용자 정의 리소스) 인스턴스를 사용합니다. 경우에 따라 사용자 지정 Init Container를 사용해야 할 수 있습니다. 예를 들어 브로커 설치 디렉터리에 런타임 종속성 .jar 파일을 추가로 포함하려면 다음을 수행합니다.
사용자 정의 Init Container 이미지를 빌드할 때 다음과 같은 중요한 지침을 따라야 합니다.
사용자 정의 이미지에 대해 생성하는 빌드 스크립트(예: Docker Dockerfile 또는 Podman Containerfile)에서
FROM명령은 최신 버전의 AMQ Broker Operator 내장 Init Container를 기본 이미지로 지정해야 합니다. 스크립트에서 다음 행을 포함합니다.FROM registry.redhat.io/amq7/amq-broker-init-rhel8:7.12-
사용자 지정 이미지에는
/amq/scripts라는 디렉터리에 포함하는post-config.sh라는 스크립트가 포함되어야 합니다.post-config.sh스크립트는 Operator가 생성하는 초기 구성을 수정하거나 추가할 수 있는 위치입니다. 사용자 정의 Init Container를 지정하면 Operator는 CR 인스턴스를 사용한 후 브로커 애플리케이션 컨테이너를 시작하기 전에post-config.sh스크립트를 실행합니다. -
4.1.2절. “브로커 Pod의 디렉터리 구조” 에 설명된 대로 Init Container에서 사용하는 설치 디렉터리의 경로는
CONFIG_INSTANCE_DIR이라는 환경 변수에 정의됩니다. 설치 디렉토리(예:${CONFIG_INSTANCE_DIR}/lib) 및 이 변수의 실제 값(예:/amq/init/config/lib)을 참조할 때post-config.sh스크립트에서 이 환경 변수 이름을 사용해야 합니다. -
사용자 지정 브로커 구성에 추가 리소스(예:
.xml또는.jar파일)를 포함하려면 사용자 지정 이미지에 포함되어post-config.sh스크립트에 액세스할 수 있는지 확인해야 합니다.
다음 절차에서는 사용자 정의 Init Container 이미지를 지정하는 방법을 설명합니다.
사전 요구 사항
- 위에서 설명한 지침을 충족하는 사용자 정의 Init Container 이미지를 빌드해야 합니다. ArtemisCloud Operator에 대한 사용자 정의 Init Container 이미지를 빌드하고 지정하는 전체 예제는 JDBC 기반 지속성에 대한 사용자 정의 Init Container 이미지를 참조하십시오.
- AMQ Broker Operator에 대한 사용자 정의 Init Container 이미지를 제공하려면 Quay 컨테이너 레지스트리와 같은 컨테이너 레지스트리의 리포지토리에 이미지를 추가할 수 있어야 합니다.
- Operator에서 Init Container를 사용하여 브로커 구성을 생성하는 방법을 이해해야 합니다. 자세한 내용은 4.1절. “Operator에서 브로커 구성을 생성하는 방법”의 내용을 참조하십시오.
- CR을 사용하여 브로커 배포를 생성하는 방법을 숙지해야 합니다. 자세한 내용은 3.4절. “Operator 기반 브로커 배포 생성”의 내용을 참조하십시오.
프로세스
브로커 배포의 CR 인스턴스를 편집합니다.
OpenShift 명령줄 인터페이스 사용:
- 브로커 배포를 위해 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 OpenShift Container Platform에 로그인합니다.
배포에 사용할 CR을 편집합니다.
oc edit ActiveMQArtemis <CR instance name> -n <namespace>
OpenShift Container Platform 웹 콘솔 사용:
- 브로커 배포를 위해 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 OpenShift Container Platform에 로그인합니다.
-
왼쪽 창에서
를 클릭합니다. - ActiveMQArtemis CRD를 클릭합니다.
- Instances 탭을 클릭합니다.
- 브로커 배포에 사용할 인스턴스를 클릭합니다.
YAML 탭을 클릭합니다.
콘솔에서 YAML 편집기가 열리고 CR 인스턴스를 편집할 수 있습니다.
CR의
deploymentPlan섹션에서initImage속성을 추가하고 사용자 정의 Init Container 이미지의 URL로 값을 설정합니다.apiVersion: broker.amq.io/v1beta1 kind: ActiveMQArtemis metadata: name: ex-aao spec: deploymentPlan: size: 1 image: placeholder initImage: <custom_init_container_image_url> requireLogin: false persistenceEnabled: true journalType: nio messageMigration: trueinitImage컨테이너 레지스트리에서 사용할 수 있어야 하는 사용자 정의 Init Container 이미지의 전체 URL을 지정합니다.
중요CR에
spec.deploymentPlan.initImage속성에 지정된 사용자 지정 init 컨테이너 이미지가 있는 경우, 브로커 이미지의 자동 업그레이드를 방지하기 위해spec.deploymentPlan.image속성에 해당 브로커 컨테이너 이미지의 URL도 지정하는 것이 좋습니다.spec.deploymentPlan.image속성에 특정 브로커 컨테이너 이미지의 URL을 지정하지 않으면 브로커 이미지를 자동으로 업그레이드할 수 있습니다. 브로커 이미지가 업그레이드되면 브로커 및 사용자 정의 init 컨테이너 이미지가 다르므로 브로커가 실행되지 않을 수 있습니다.사용자 지정 init 컨테이너가 있는 작업 중인 배포가 있는 경우 브로커 컨테이너 이미지의 추가 업그레이드를 방지하여 사용자 정의 init 컨테이너 이미지로 작동하지 않는 최신 브로커 이미지의 위험을 제거할 수 있습니다. 브로커 이미지로 업그레이드하지 않는 방법에 대한 자세한 내용은 6.6.2절. “이미지 URL을 사용하여 이미지 자동 업그레이드 제한” 을 참조하십시오.
- CR을 저장합니다.
추가 리소스
- ArtemisCloud Operator에 대한 사용자 정의 Init Container 이미지를 빌드하고 지정하는 전체 예제는 JDBC 기반 지속성에 대한 사용자 정의 Init Container 이미지를 참조하십시오.