4.3.4. 3scale 사용자 지정 정책에 외부 Lua 종속성 포함
APIcast에서 아직 3scale 이미지에 없는 Lua 라이브러리를 사용할 수 있도록 사용자 지정 정책에 외부 Lua 종속성을 추가할 수 있습니다.
						다음 절차에서는 응답 본문을 JSON에서 XML로 변환하는 사용자 지정 정책 예제를 사용하여 이 작업을 수행하는 방법을 보여줍니다. 예제 사용자 지정 정책에는 Lua로 작성된 xml2lua XML 파서가 필요합니다. 전체 예제는 빌드 및 테스트를 간략하게 보여주지만 예제 절차에 따라 사용자 지정 정책을 배포할 수 없습니다. 외부 Lua 종속성이 있는 사용자 지정 정책을 배포하려면 이 절차의 단계와 다른 OpenShift Container Platform에서 사용자 지정 정책을 3scale에 추가하는 절차를 수행해야 합니다.
					
						JSON에서 XML 사용자 지정 정책은 예시일 뿐입니다. 운용 환경에서는 사용하지 않습니다.
					
전제 조건
- 3scale 사용자 정의 정책
- 외부 Lua 라이브러리 액세스
절차
- 사용자 지정 정책이 포함된 디렉터리에서 외부 Lua 라이브러리를 식별하는 파일을 추가합니다. - 파일 이름은 - Roverfile이어야 합니다.- JSON에서 XML 사용자 지정 정책 예에서는다음 내용이 있습니다.- Roverfile에- luarocks { group 'production' { module { 'xml2lua' }, } }- luarocks { group 'production' { module { 'xml2lua' }, } }- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Lua - -rover는 LuaRocks 관련 래퍼입니다.- lua-rover는 종속성에 대한 전이적 잠금을 제공합니다. LuaRocks는 Lua 모듈의 패키지 관리자입니다.
- 사용자 지정 정책이 포함된 디렉터리에서 - lua-rover잠금 파일을 추가합니다.- 파일 이름은 - Roverfile.lock이어야 합니다.- JSON에서 XML사용자 지정 정책 예제의- Roverfile.lock에는 다음 내용이 있습니다.- xml2lua 1.5-2||productionbash-4.4 - xml2lua 1.5-2||productionbash-4.4- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Roverfile 및은 APIcast 또는 3scale Operator를 함께 사용하여 종속 라이브러리를 가져올 수 있습니다.- Roverfile.lock
- 사용자 지정 정책을 정의하는 파일에서 Lua 종속성을 지정하는 행을 추가합니다. - JSON에서 XML사용자 지정 정책 예제에서는 다음 행을 지정합니다.- local xml2lua = require("xml2lua")- local xml2lua = require("xml2lua")- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 사용자 지정 정책을 빌드하는 데 사용하는 Dockerfile에서 - Roverfile 및을 복사하고- Roverfile.lock- rover install을 실행합니다.- JSON에서 XML사용자 지정 정책 예제에서는 다음 행을 Dockerfile에 추가합니다.- COPY Roverfile . COPY Roverfile.lock . RUN rover install --roverfile=/opt/app-root/src/Roverfile - COPY Roverfile . COPY Roverfile.lock . RUN rover install --roverfile=/opt/app-root/src/Roverfile- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Dockerfile은 APIcast 또는 3scale Operator를 사용하여 정책을 빌드할 수 있습니다. 
- 사용자 지정 정책의 - Makefile에서 사용자 지정 정책에 대해 원하는 대로- 빌드대상을 지정합니다.- 예를 들어 - 빌드대상은 다음과 같을 수 있습니다.- TARGET_IMAGE="apicast/json_to_xml:latest" # IP="http://localhost:8080" build: docker build . --build-arg IMAGE=registry.redhat.io/3scale-amp2/apicast-gateway-rhel8:3scale2.12 -t $(TARGET_IMAGE) - TARGET_IMAGE="apicast/json_to_xml:latest" # IP="http://localhost:8080" build: docker build . --build-arg IMAGE=registry.redhat.io/3scale-amp2/apicast-gateway-rhel8:3scale2.12 -t $(TARGET_IMAGE)- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
다음 단계
외부 Lua 종속성이 있는 사용자 지정 정책을 배포하는 나머지 단계는 다른 사용자 지정 정책을 배포하는 것과 동일합니다. 즉, 이미지를 리포지토리에 내보내고 APIcast 이미지를 방금 빌드한 이미지로 교체해야 합니다.
추가 리소스