5. 컨테이너·쿠버네티스에 설치
앞의 3장은 서버에 직접 설치한 WAS 에 에이전트를 붙이는 방법입니다. 이 장은 WAS 가 컨테이너로 도는 경우를 다룬다.
어느 방법을 고를 것인가
| 방법 | 무엇을 하나 | 언제 쓰나 |
|---|---|---|
| 이미지에 굽기 | 에이전트를 넣은 base 이미지를 만들어 두고 애플리케이션이 그것을 FROM 으로 쓴다 | 이미지 빌드를 직접 관리할 때 |
| S2I | 소스와 함께 에이전트 파일을 넣어 두면 빌드가 알아서 담는다 | 개발자가 소스만 올려 빌드할 때 |
| 자동 주입 (Operator) | 워크로드에 라벨만 붙이면 에이전트가 자동으로 들어갑니다. 이미지를 고치지 않는다 | 쿠버네티스·OpenShift 를 쓸 때 권장 |
자동 주입은 이 가이드가 아니라 OPENMARU APM Operator 사용자 가이드에서 다룬다. 이미지를 손대지 않아도 되고 업그레이드도 Operator 가 맡으므로, 쿠버네티스 환경이면 그쪽을 먼저 검토합니다. 아래 두 방법은 Operator 를 쓸 수 없거나 이미지를 직접 관리해야 하는 경우를 위한 것입니다.
1. 이미지에 에이전트 굽기
컨테이너로 운영되는 WAS 인스턴스를 모니터링하려면 에이전트를 담은 이미지를 빌드해 레지스트리에 등록해야 합니다. 다음에서 빌드하고 배포하는 절차를 설명합니다.
에이전트 파일 구성
레지스트리에 접속할 수 있고 Podman 이 설치된 리눅스 머신에서 아래 파일의 압축을 푼다.
$ wget https://cloud.openmaru.io/api/v1/projects/{SAAS_PROJECT_ID}/download/was-agent.zip
$ unzip khan-agent-5.1.0.zip
Dockerfile 구성
이미지를 만들 때 khan-agent-5.1.0.jar, khan-agent.conf, user-interceptor.conf 를 넣는다.
FROM registry.redhat.io/jboss-eap-7/eap74-openjdk8-openshift-rhel7
USER root
ENV JAVA_OPTS="-javaagent:/opt/eap/khan-apm/khan-agent-5.1.0.jar"
ENV JAVA_OPTS="-Dkhan.config.file=/opt/eap/khan-apm/khan-agent.conf"
ADD ./khan-agent-5.1.0.zip /opt/eap/
RUN unzip -q /opt/eap/khan-agent-5.1.0.zip -d /opt/eap/khan-apm && \
chmod -R 777 /opt/eap/khan-apm
ADD khan-agent.conf /opt/eap/khan-apm
ADD user-interceptor.conf /opt/eap/khan-apm
USER jboss
khan-agent.conf 의 설정 항목은 아래 4. Pod 에서 쓸 수 있는 환경변수를 참고합니다.