4.3.4. 3scale 사용자 지정 정책에 외부 Lua 종속성 포함

APIcast에서 아직 3scale 이미지에 없는 Lua 라이브러리를 사용할 수 있도록 사용자 지정 정책에 외부 Lua 종속성을 추가할 수 있습니다.

다음 절차에서는 응답 본문을 JSON에서 XML로 변환하는 사용자 지정 정책 예제를 사용하여 이 작업을 수행하는 방법을 보여줍니다. 예제 사용자 지정 정책에는 Lua로 작성된 xml2lua XML 파서가 필요합니다. 전체 예제는 빌드 및 테스트를 간략하게 보여주지만 예제 절차에 따라 사용자 지정 정책을 배포할 수 없습니다. 외부 Lua 종속성이 있는 사용자 지정 정책을 배포하려면 이 절차의 단계와 다른 OpenShift Container Platform에서 사용자 지정 정책을 3scale에 추가하는 절차를 수행해야 합니다.

JSON에서 XML 사용자 지정 정책은 예시일 뿐입니다. 운용 환경에서는 사용하지 않습니다.

전제 조건

  • 3scale 사용자 정의 정책
  • 외부 Lua 라이브러리 액세스

절차

  1. 사용자 지정 정책이 포함된 디렉터리에서 외부 Lua 라이브러리를 식별하는 파일을 추가합니다.

    파일 이름은 Roverfile 이어야 합니다. JSON에서 XML 사용자 지정 정책 예에서는 Roverfile 다음 내용이 있습니다.

    luarocks {
    	group 'production' {
    		module { 'xml2lua' },
    	}
    }

    Lua -rover 는 LuaRocks 관련 래퍼입니다. lua-rover 는 종속성에 대한 전이적 잠금을 제공합니다. LuaRocks는 Lua 모듈의 패키지 관리자입니다.

  2. 사용자 지정 정책이 포함된 디렉터리에서 lua-rover 잠금 파일을 추가합니다.

    파일 이름은 Roverfile.lock 이어야 합니다. JSON에서 XML 사용자 지정 정책 예제의 Roverfile.lock 에는 다음 내용이 있습니다.

    xml2lua 1.5-2||productionbash-4.4

    Roverfile 및 Roverfile.lock 은 APIcast 또는 3scale Operator를 함께 사용하여 종속 라이브러리를 가져올 수 있습니다.

  3. 사용자 지정 정책을 정의하는 파일에서 Lua 종속성을 지정하는 행을 추가합니다. JSON에서 XML 사용자 지정 정책 예제에서는 다음 행을 지정합니다.

    local xml2lua = require("xml2lua")
  4. 사용자 지정 정책을 빌드하는 데 사용하는 Dockerfile에서 Roverfile 및 Roverfile.lock 을 복사하고 rover install 을 실행합니다. JSON에서 XML 사용자 지정 정책 예제에서는 다음 행을 Dockerfile에 추가합니다.

    COPY Roverfile .
    COPY Roverfile.lock .
    
    RUN rover install --roverfile=/opt/app-root/src/Roverfile

    Dockerfile은 APIcast 또는 3scale Operator를 사용하여 정책을 빌드할 수 있습니다.

  5. 사용자 지정 정책의 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.11 -t $(TARGET_IMAGE)

다음 단계

외부 Lua 종속성이 있는 사용자 지정 정책을 배포하는 나머지 단계는 다른 사용자 지정 정책을 배포하는 것과 동일합니다. 즉, 이미지를 리포지토리에 내보내고 APIcast 이미지를 방금 빌드한 이미지로 교체해야 합니다.