4.4. 타사 JAR 파일 추가


런타임 시 AMQ Broker에서 타사 JAR 파일을 사용할 수 있습니다. 예를 들어 브로커가 JDBC 데이터베이스에 메시지를 저장하도록 하려면 데이터베이스에 필요한 타사 JAR 파일을 로드하도록 브로커를 구성할 수 있습니다.

각 브로커 Pod의 마운트된 볼륨에서 타사 JAR 파일을 사용할 수 있도록 Operator를 구성하고 JAR 파일의 볼륨 경로를 브로커의 Java classpath에 추가해야 합니다.

JAR 파일이 크기가 1MB 미만인 경우 JAR 파일을 시크릿 또는 configmap에 추가하고 각 브로커 Pod에 JAR 파일을 마운트하도록 Operator를 구성할 수 있습니다. JAR 파일이 보안 및 configmaps에 대한 1MB 제한보다 크면 각 브로커 Pod에 공유 볼륨을 마운트하고 JAR 파일을 해당 볼륨에 다운로드하도록 Operator를 구성할 수 있습니다.

4.4.1. 시크릿 또는 구성 맵을 사용하여 브로커 Pod에 JAR 파일 마운트

JAR 파일이 1MB 미만이면 시크릿 또는 구성 맵을 사용하여 각 브로커 Pod에 타사 JAR 파일을 마운트할 수 있습니다. 또한 런타임 시 마운트된 위치에서 JAR 파일을 로드하도록 브로커의 Java classpath도 수정해야 합니다.

다음 절차에서는 시크릿을 사용하여 JAR 파일을 마운트한다고 가정합니다.

프로세스

  1. oc create secret 명령을 사용하여 추가하려는 타사 JAR 파일이 포함된 시크릿을 생성합니다. 예를 들면 다음과 같습니다.

    oc create secret generic log4j-template --from-file=log4j-layout-template-json-2.22.1.jar

    시크릿 생성 방법에 대한 자세한 내용은 Kubernetes 문서의 시크릿을 참조하십시오. https://kubernetes.io/docs/concepts/configuration/secret/

  2. 브로커 배포에 대한 CR을 편집하고 각 브로커 Pod에 타사 JAR 파일이 포함된 시크릿을 마운트하도록 Operator를 구성합니다. 예를 들어 다음 구성은 log4j-template 이라는 시크릿을 마운트합니다.

    deploymentPlan:
      ...
      extraMounts:
        secrets:
        - "log4j-template"
      ...

    JAR 파일은 각 브로커 Pod의 /amq/extra/secrets/시크릿 이름 디렉터리에 마운트됩니다. 예를 들어 /amq/extra/secrets/postgresql-driver/log4j-template.jar.

  3. ARTEMIS_EXTRA_LIBS 환경 변수를 생성하여 브로커의 Java 클래스 경로를 확장하여 브로커가 각 Pod의 마운트된 디렉터리에서 JAR 파일을 로드합니다. 예를 들면 다음과 같습니다.

    spec:
      ...
      env:
      - name: ARTEMIS_EXTRA_LIBS
        value: /amq/extra/secrets/log4j-template
  4. CR을 저장합니다.

4.4.2. 각 브로커 Pod의 볼륨에 JAR 파일 다운로드

JAR 파일이 1MB보다 크면 시크릿 또는 구성 맵을 사용하여 각 브로커 Pod에 JAR 파일을 마운트할 수 없습니다. 대신 JAR 파일을 각 브로커 Pod에 Operator가 마운트하는 영구 공유 볼륨으로 다운로드하도록 Operator를 구성할 수 있습니다.

사전 요구 사항

각 브로커 Pod에 마운트할 수 있는 영구 공유 볼륨을 사용할 수 있습니다.

프로세스

  1. 브로커 배포에 사용할 ActiveMQArtemis CR을 편집합니다.
  2. 브로커 CR에서 extraVolumesextraVolumeMounts 속성을 사용하여 영구 볼륨을 추가하고 각 브로커 Pod에 볼륨을 마운트합니다. 예를 들면 다음과 같습니다.

    deploymentPlan:
      ...
      extraVolumes:
      - name: extra-volume
        persistentVolumeClaim:
          claimName: extra-jars
      extraVolumeMounts:
      - name: extra-volume
        mountPath: /opt/extra-lib
      ...
  3. resourceTemplates 특성을 사용하여 배포에 대한 StatefulSet 리소스를 사용자 지정합니다. 사용자 지정에서 init 컨테이너를 사용하여 각 Pod에서 생성한 추가 볼륨 볼륨을 마운트하고 JAR 파일을 볼륨으로 다운로드합니다. 예를 들면 다음과 같습니다.

    spec:
      ...
      resourceTemplates:
      - selector:
          kind: StatefulSet
        patch:
          kind: StatefulSet
          spec:
            template:
              spec:
                initContainers:
                - name: mysql-jdbc-driver-init
                  volumeMounts:
                  - mountPath: /opt/extra-lib
                    name: extra-volume
                  image: curlimages/curl:8.6.0
                  command:
                  - /bin/sh
                  args:
                  - -c
                  - "if ! [ -f /opt/extra-lib/mysql-connector.jar ]; then curl https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.23/mysql-connector-java-8.0.23.jar --output /opt/extra-lib/mysql-connector.jar ; fi"

    이 예제에서 curl 이미지는 파일이 볼륨에 없는 경우 mysql-connector.jar 파일을 볼륨의 마운트된 경로인 /opt/extra-lib 에 다운로드하는 데 사용됩니다.

  4. ARTEMIS_EXTRA_LIBS 환경 변수를 생성하여 브로커가 공유 볼륨에서 JAR 파일을 로드하도록 브로커의 Java 클래스 경로를 확장합니다. 예를 들면 다음과 같습니다.

    spec:
      ...
      env:
      - name: ARTEMIS_EXTRA_LIBS
        value: /opt/extra-lib
  5. CR을 저장합니다.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동