7.4. Jenkinsfile을 사용하여 파이프라인 생성
이 섹션에서는 3scale toolbox를 사용하는 Groovy에서 사용자 정의 Jenkinsfile
을 처음부터 작성하는 모범 사례를 제공합니다.
Red Hat은 Red Hat Integration 리포지토리에서 제공되는 Jenkins 파이프라인 샘플을 지원합니다.
이러한 파이프라인의 수정은 Red Hat에서 직접 지원하지 않습니다. 환경에 대해 생성한 사용자 정의 파이프라인은 지원되지 않습니다. 이 섹션은 참조용으로만 제공됩니다.
사전 요구 사항
- 샘플 Jenkins CI/CD 파이프라인 배포.
- API용 OpenAPI 사양 파일이 있어야 합니다. 예를 들어 Apicurio Studio 를 사용하여 이를 생성할 수 있습니다.
절차
3scale toolbox를 호출하는 유틸리티 함수를 작성합니다. 다음은 3scale toolbox를 실행하는 Kubernetes 작업을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Kubernetes 오브젝트 템플릿
이 함수는 Kubernetes 오브젝트 템플릿을 사용하여 요구 사항에 맞게 조정할 수 있는 3scale toolbox를 실행합니다. 3scale toolbox CLI 인수를 설정하고 결과 Kubernetes 작업 정의를 YAML 파일에 쓰고, toolbox의 이전 실행을 정리하고, Kubernetes 작업을 생성하고, 대기합니다.
-
Pod가
생성됨
상태와Running
상태 간에 전환해야 하는 시간과 일치하도록 서버 속도의 대기 시간을 조정할 수 있습니다. 폴링 루프를 사용하여 이 단계를 구체화할 수 있습니다. -
OpenAPI 사양 파일은
openapi
라는ConfigMap
에서 가져옵니다. -
3scale Admin Portal 호스트 이름 및 액세스 토큰은
3scale-toolbox
라는 시크릿에서 가져옵니다. 3scale 도구 상자 설치 및 액세스 활성화에 따라 다음과 같습니다. -
ConfigMap
은 3단계의 파이프라인에 의해 생성됩니다. 그러나 보안은 파이프라인 외부에서 이미 프로비저닝되었으며 보안을 강화하기 위해 RBAC(역할 기반 액세스 제어)의 적용을 받습니다.
-
Pod가
Jenkins 파이프라인 단계에서 3scale toolbox와 함께 사용할 글로벌 환경 변수를 정의합니다. 예를 들어 다음과 같습니다.
3scale 호스팅
def targetSystemName = "saas-apikey-usecase" def targetInstance = "3scale-saas" def privateBaseURL = "http://echo-api.3scale.net" def testUserKey = "abcdef1234567890" def developerAccountId = "john"
def targetSystemName = "saas-apikey-usecase" def targetInstance = "3scale-saas" def privateBaseURL = "http://echo-api.3scale.net" def testUserKey = "abcdef1234567890" def developerAccountId = "john"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 3scale 온-프레미스
자체 관리형 APIcast 또는 3scale의 온-프레미스 설치를 사용하는 경우 다음 두 개의 변수를 선언해야 합니다.
def publicStagingBaseURL = "http://my-staging-api.example.test" def publicProductionBaseURL = "http://my-production-api.example.test"
def publicStagingBaseURL = "http://my-staging-api.example.test" def publicProductionBaseURL = "http://my-production-api.example.test"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 변수는 다음과 같이 설명되어 있습니다.
-
targetSystemName
: 생성할 서비스의 이름입니다. -
targetInstance
: 3scale toolbox 설치 및 액세스 활성화에서 생성된 3scale 원격 인스턴스의 이름과 일치합니다. -
privateBaseURL
: API 백엔드의 끝점 호스트입니다. -
testUserKey
: 통합 테스트를 실행하는 데 사용되는 사용자 API 키입니다. 표시되거나 HMAC 함수에서 생성되어 하드 코딩될 수 있습니다. -
developerAccountId
: 테스트 애플리케이션이 생성될 대상 계정의 ID입니다. -
publicStagingBaseURL
: 생성할 서비스의 공용 스테이징 기본 URL입니다. -
publicProductionBaseURL
: 생성할 서비스의 공용 프로덕션 기본 URL입니다.
-
다음과 같이 OpenAPI 사양 파일을 가져와서 OpenShift에서
ConfigMap
으로 프로비저닝하는 파이프라인 단계를 추가합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 3scale toolbox를 사용하여 API를 3scale로 가져오는 파이프라인 단계를 추가합니다.
3scale 호스팅
stage("Import OpenAPI") { runToolbox([ "3scale", "import", "openapi", "-d", targetInstance, "/artifacts/swagger.json", "--override-private-base-url=${privateBaseURL}", "-t", targetSystemName ]) }
stage("Import OpenAPI") { runToolbox([ "3scale", "import", "openapi", "-d", targetInstance, "/artifacts/swagger.json", "--override-private-base-url=${privateBaseURL}", "-t", targetSystemName ]) }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 3scale 온-프레미스
자체 관리형 APIcast 또는 3scale의 온-프레미스 설치를 사용하는 경우 공개 스테이징 및 프로덕션 기본 URL에 대한 옵션도 지정해야 합니다.
stage("Import OpenAPI") { runToolbox([ "3scale", "import", "openapi", "-d", targetInstance, "/artifacts/swagger.json", "--override-private-base-url=${privateBaseURL}", "-t", targetSystemName, "--production-public-base-url=${publicProductionBaseURL}", "--staging-public-base-url=${publicStagingBaseURL}" ]) }
stage("Import OpenAPI") { runToolbox([ "3scale", "import", "openapi", "-d", targetInstance, "/artifacts/swagger.json", "--override-private-base-url=${privateBaseURL}", "-t", targetSystemName, "--production-public-base-url=${publicProductionBaseURL}", "--staging-public-base-url=${publicStagingBaseURL}" ]) }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow toolbox를 사용하여 3scale 애플리케이션 계획 및 애플리케이션을 생성하는 파이프라인 단계를 추가합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow toolbox를 사용하여 API를 프로덕션 환경으로 승격하는 단계를 추가합니다.
stage("Promote to production") { runToolbox([ "3scale", "proxy", "promote", targetInstance, targetSystemName ]) }
stage("Promote to production") { runToolbox([ "3scale", "proxy", "promote", targetInstance, targetSystemName ]) }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow