Kantra는 Konveyor의 분석 및 변환 기능을 통합하는 CLI입니다. Linux, Mac 및 Windows에서 사용할 수 있습니다.
칸트라를 실행하려면 Podman 4+가 필요합니다. 기본적으로 호스트에서 사용 가능한 podman 실행 파일을 사용하도록 구성됩니다.
kantra는 주로 podman으로 테스트되었지만 Docker Engine 24+ 또는 Docker Desktop 4+를 대안으로 사용할 수 있습니다. docker를 사용하려면 docker 실행 파일의 경로를 가리키는 환경 변수 CONTAINER_TOOL
설정합니다.
export CONTAINER_TOOL=/usr/bin/docker
Kantra를 설치하려면 플랫폼에 맞는 실행 파일을 다운로드하여 경로에 추가하세요.
참고: Mac의 경우 "Apple이 확인할 수 없습니다." 오류 메시지가 나타날 수 있습니다. 그렇게 하는 경우 xattr -d com.apple.quarantine kantra
실행하여 Apple이 kantra
바이너리를 신뢰하도록 할 수 있습니다.
릴리스 페이지로 이동하여 플랫폼 및 아키텍처에 대한 바이너리가 포함된 zip 파일을 다운로드하세요. 아카이브의 압축을 풀고 실행 파일을 경로에 추가합니다.
최신(또는 특정/이전) 실행 파일을 가져오는 가장 쉬운 방법은 해당 컨테이너 이미지에서 가져오는 것입니다.
해당 버전을 가져오려면 셸 변수 kantra_version
특정 버전으로 설정하세요(예: kantra_version=v0.4.0
.
달리다:
${CONTAINER_TOOL :- podman} cp $( ${CONTAINER_TOOL :- podman} create --name kantra-download quay.io/konveyor/kantra: ${kantra_version :- latest} ) :/usr/local/bin/kantra . && ${CONTAINER_TOOL :- podman} rm kantra-download
Mac에서 Docker for Desktop을 사용하지 않는 경우(위 참조) Podman 명령을 실행하기 전에 Podman 머신을 시작해야 합니다(Mac용 설정 참조).
머신이 시작되면 다음을 실행합니다.
${CONTAINER_TOOL :- podman} cp $( ${CONTAINER_TOOL :- podman} create --name kantra-download quay.io/konveyor/kantra: ${kantra_version :- latest} ) :/usr/local/bin/darwin-kantra . && ${CONTAINER_TOOL :- podman} rm kantra-download
Windows에서 데스크톱용 Docker를 사용하지 않는 경우(위 참조) Podman 명령을 실행하기 전에 Podman 머신을 시작해야 합니다(Windows용 설정 참조).
머신이 시작되면 다음을 실행합니다.
${CONTAINER_TOOL :- podman} cp $( ${CONTAINER_TOOL :- podman} create --name kantra-download quay.io/konveyor/kantra: ${kantra_version :- latest} ) :/usr/local/bin/windows-kantra . && ${CONTAINER_TOOL :- podman} rm kantra-download
실행 파일을
PATH
에 추가했는지 확인하세요.
Mac 및 Windows에서는 Docker(데스크탑용)를 사용하지 않는 한 명령을 실행하기 전에 podman 머신을 시작해야 합니다.
Podman 머신을 시작하기 전에 다음을 실행하십시오.
ulimit -n unlimited
Podman 머신을 초기화하십시오.
포드맨 4 :
Podman 4를 사용하려면 VM 내에 일부 호스트 디렉터리를 마운트해야 합니다.
podman machine init < vm_name > -v $HOME : $HOME -v /private/tmp:/private/tmp -v /var/folders/:/var/folders/
포드맨 5 :
Podman 5는 기본적으로 $HOME , /private/tmp 및 /var/folders 디렉토리를 마운트하며 간단히 머신을 초기화합니다.
podman machine init < vm_name >
kantra와 함께 사용하려는 입력 및/또는 출력 디렉터리가 $HOME, /private/tmp 및 /var/folders 디렉터리 트리 외부에 있는 경우 기본값 외에 해당 디렉터리를 마운트해야 합니다.
Podman 리소스 늘리기(최소 4G 메모리 필요):
podman machine set < vm_name > --cpus 4 --memory 4096
기계를 초기화하십시오:
podman machine init < vm_name >
Kantra에는 세 가지 하위 명령이 있습니다.
analyze : 이 하위 명령을 사용하면 입력 소스 코드 또는 바이너리에 대해 소스 코드 분석을 실행할 수 있습니다.
변환 : 이 하위 명령을 사용하면 XML 규칙을 YAML로 변환하거나 소스 코드에서 OpenRewrite 레시피를 실행할 수 있습니다.
test : 이 하위 명령을 사용하면 YAML 규칙을 테스트할 수 있습니다.
analyze 하위 명령을 사용하면 analyzer-lsp를 사용하여 소스 코드 및 바이너리 분석을 실행할 수 있습니다.
애플리케이션 소스 코드에 대한 분석을 실행하려면 다음을 실행하세요.
kantra analyze --input= < path/to/source/code > --output= < path/to/output/dir >
--input은 소스 코드 디렉터리 또는 바이너리 파일을 가리켜야 하며, --output은 분석 결과를 포함할 디렉터리를 가리켜야 합니다.
모든 플래그:
Flags:
--analyze-known-libraries analyze known open-source libraries
--bulk running multiple analyze commands in bulk will result to combined static report
--context-lines int number of lines of source code to include in the output for each incident (default 100)
-d, --dependency-folders stringArray directory for dependencies
--enable-default-rulesets run default rulesets with analysis (default true)
-h, --help help for analyze
--http-proxy string HTTP proxy string URL
--https-proxy string HTTPS proxy string URL
--incident-selector string an expression to select incidents based on custom variables. ex: (!package=io.konveyor.demo.config-utils)
-i, --input string path to application source code or a binary
--jaeger-endpoint string jaeger endpoint to collect traces
--json-output create analysis and dependency output as json
-l, --label-selector string run rules based on specified label selector expression
--list-sources list rules for available migration sources
--list-targets list rules for available migration targets
--maven-settings string path to a custom maven settings file to use
-m, --mode string analysis mode. Must be one of 'full' or 'source-only' (default "full")
--no-proxy string proxy excluded URLs (relevant only with proxy)
-o, --output string path to the directory for analysis output
--overwrite overwrite output directory
--rules stringArray filename or directory containing rule files. Use multiple times for additional rules: --rules --rules ...
--skip-static-report do not generate static report
-s, --source stringArray source technology to consider for analysis. Use multiple times for additional sources: --source --source ...
-t, --target stringArray target technology to consider for analysis. Use multiple times for additional targets: --target --target ...
설계상 Kantra는 Kantra 명령 실행당 단일 애플리케이션 분석을 지원합니다. 그러나 다양한 애플리케이션에서 여러 kantra analyze 명령을 실행하기 위해 --bulk
옵션을 사용하면 모든 애플리케이션 분석 보고서로 채워진 출력 디렉터리 및 정적 보고서를 얻을 수 있습니다.
예:
kantra analyze --bulk --input= < path/to/source/A > --output= < path/to/output/ABC >
kantra analyze --bulk --input= < path/to/source/B > --output= < path/to/output/ABC >
kantra analyze --bulk --input= < path/to/source/C > --output= < path/to/output/ABC >
Transform에는 두 가지 하위 명령이 있습니다.
openrewrite : 이 하위 명령을 사용하면 입력 소스 코드에서 하나 이상의 사용 가능한 OpenRewrite 레시피를 실행할 수 있습니다.
rule : 이 하위 명령을 사용하면 Windup XML 규칙을 analyzer-lsp YAML 형식으로 변환할 수 있습니다.
openrewrite 하위 명령을 사용하면 소스 코드에서 OpenRewrite 레시피를 실행할 수 있습니다.
OpenRewrite를 사용하여 애플리케이션을 변환하려면 다음을 실행하세요.
kantra transform openrewrite --input= < path/to/source/code > --target= < exactly_one_target_from_the_list >
--target 옵션의 값은 사용 가능한 OpenRewrite 레시피 중 하나여야 합니다. 사용 가능한 모든 레시피를 나열하려면 다음을 실행하세요.
kantra transform --list-targets
모든 플래그:
Flags:
-g, --goal string target goal (default " dryRun " )
-h, --help help for openrewrite
-i, --input string path to application source code directory
-l, --list-targets list all available OpenRewrite recipes
-s, --maven-settings string path to a custom maven settings file to use
-t, --target string target openrewrite recipe to use. Run --list-targets to get a list of packaged recipes.
규칙 하위 명령을 사용하면 Windup-shim을 사용하여 Windup XML 규칙을 analyzer-lsp YAML 규칙으로 변환할 수 있습니다.
Windup XML 규칙을 analyzer-lsp YAML 형식으로 변환하려면 다음을 실행합니다.
kantra transform rules --input= < path/to/xmlrules > --output= < path/to/output/dir >
--input 플래그는 XML 규칙이 포함된 파일이나 디렉터리를 가리켜야 하며, --output은 YAML 규칙의 출력 디렉터리를 가리켜야 합니다.
모든 플래그:
Flags:
-h, --help help for rules
-i, --input stringArray path to XML rule file(s) or directory
-o, --output string path to output directory
test 하위 명령을 사용하면 analyzer-lsp용으로 작성된 YAML 규칙에 대한 테스트를 실행할 수 있습니다.
테스트 실행기에 대한 입력은 하나 이상의 테스트 파일 및/또는 YAML로 작성된 테스트가 포함된 디렉터리입니다.
kantra test /path/to/a/single/tests/file.test.yaml
테스트 결과는 콘솔에 인쇄됩니다.
테스트 실행기 문서에서 테스트 명령을 실행하는 다양한 방법을 확인하세요.
여기에서 Konveyor의 행동 강령을 참조하십시오.