4.9. 사용자 정의 Init Container 이미지 지정
4.1절. “Operator에서 브로커 구성을 생성하는 방법” 에 설명된 대로 AMQ Broker Operator는 기본 기본 Init Container를 사용하여 브로커 구성을 생성합니다. 구성을 생성하기 위해 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.11
FROM registry.redhat.io/amq7/amq-broker-init-rhel8:7.11
Copy to Clipboard Copied! -
사용자 지정 이미지에는
/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
이라는 환경 변수에 정의됩니다.post-config.sh
스크립트는 설치 디렉터리(예:${CONFIG_INSTANCE_DIR}/lib
)를 참조할 때 이 환경 변수 이름을 사용해야 하며 이 변수의 실제 값(예:/amq/init/config/lib
)을 사용해야 합니다. -
사용자 정의 브로커 구성에 추가 리소스(예:
.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>
oc edit ActiveMQArtemis <CR instance name> -n <namespace>
Copy to Clipboard Copied!
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: true
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: true
Copy to Clipboard Copied! initImage
컨테이너 레지스트리에서 사용할 수 있어야 하는 사용자 정의 Init Container 이미지의 전체 URL을 지정합니다.
중요CR에
spec.deploymentPlan.initImage
속성에 지정된 사용자 지정 init 컨테이너 이미지가 있는 경우, 브로커 이미지의 자동 업그레이드를 방지하기 위해spec.deploymentPlan.image
속성에 해당 브로커 컨테이너 이미지의 URL도 지정하는 것이 좋습니다.spec.deploymentPlan.image
속성에 특정 브로커 컨테이너 이미지의 URL을 지정하지 않으면 브로커 이미지를 자동으로 업그레이드할 수 있습니다. 브로커 이미지가 업그레이드되면 브로커 및 사용자 정의 init 컨테이너 이미지가 다르므로 브로커가 실행되지 않을 수 있습니다.사용자 지정 init 컨테이너가 있는 작업 중인 배포가 있는 경우 브로커 컨테이너 이미지의 추가 업그레이드를 방지하여 사용자 정의 init 컨테이너 이미지로 작동하지 않는 최신 브로커 이미지의 위험을 제거할 수 있습니다. 브로커 이미지로 업그레이드하지 않는 방법에 대한 자세한 내용은 6.4.2절. “이미지 URL을 사용하여 이미지 자동 업그레이드 제한” 을 참조하십시오.
- CR을 저장합니다.
추가 리소스
- ArtemisCloud Operator에 대한 사용자 정의 Init Container 이미지를 빌드하고 지정하는 전체 예제는 JDBC 기반 지속성에 대한 사용자 정의 Init Container 이미지를 참조하십시오.