6.2. 샘플 Jenkins CI/CD 파이프라인 배포
3scale toolbox를 사용한 API 라이프사이클 자동화에서는 API 라이프사이클의 배포 단계에 중점을 두고 CI/CD 파이프라인을 사용하여 API 관리 솔루션을 자동화할 수 있습니다. 이 주제에서는 3scale toolbox를 호출하는 샘플 Jenkins 파이프라인을 배포하는 방법에 대해 설명합니다.
- 6.2.1절. “Jenkins CI/CD 파이프라인 샘플”
- 6.2.2절. “3scale 호스팅 환경 설정”
- 6.2.3절. “3scale 온프레미스 환경 설정”
- 6.2.4절. “OpenID Connect용 Red Hat Single Sign-On 배포”
- 6.2.5절. “3scale toolbox 설치 및 액세스 활성화”
- 6.2.6절. “API 백엔드 배포”
- 6.2.7절. “자체 관리 APIcast 인스턴스 배포”
- 6.2.8절. “샘플 파이프라인 설치 및 배포”
- 6.2.9절. “3scale toolbox를 사용한 API 라이프사이클 자동화의 제한 사항”
6.2.1. Jenkins CI/CD 파이프라인 샘플
다음 샘플은 API 라이프사이클 자동화를 위해 Jenkins 파이프라인을 생성하고 배포하는 방법에 대한 예로 Red Hat 통합 리포지토리에 제공됩니다.
샘플 파이프라인 | 대상 환경 | 보안 |
---|---|---|
3scale 호스팅 | API 키 | |
APIcast 자체 관리가 포함된 3scale 호스팅 및 3scale 온프레미스 | 없음 | |
APIcast 자체 관리가 포함된 3scale 호스팅 및 3scale 온프레미스 | OpenID Connect (OIDC) | |
3scale APIcast 자체 관리와 함께 개발, 테스트 및 프로덕션 호스팅 | API 키 | |
3scale APIcast 자체 관리와 함께 개발, 테스트 및 프로덕션 호스팅 | API 키, 없음, OIDC |
이러한 샘플은 3scale 툴박스를 호출하여 주요 API 관리 기능을 보여주는 3scale Jenkins 공유 라이브러리를 사용합니다. 이 항목에서 설정 단계를 수행한 후 Red Hat 통합 리포지토리의 각 샘플 사용 사례에 제공된 OpenShift 템플릿을 사용하여 파이프라인을 설치할 수 있습니다.
샘플 파이프라인 및 애플리케이션은 예제로만 제공됩니다. 샘플 파이프라인에서 활용하는 기본 API, CLI 및 기타 인터페이스는 Red Hat에서 완벽하게 지원합니다. 파이프라인에 대한 수정 사항은 Red Hat에서 직접 지원하지 않습니다.
6.2.2. 3scale 호스팅 환경 설정
3scale 호스팅 환경 설정은 모든 샘플 Jenkins CI/CD 파이프라인에 필요합니다.
SaaS - API 키
,멀티 환경
및 의미 버전 지정
샘플 파이프라인은 3scale 호스팅만 사용합니다. 하이브리드 - 개방형
하이브리드 - OIDC
파이프라인은 또한 3scale 온프레미스를 사용합니다. 3scale 온프레미스 환경 설정 도 참조하십시오.
사전 요구 사항
- Linux 워크스테이션이 있어야 합니다.
- 3scale 호스팅 환경이 있어야 합니다.
OpenShift 3.11 클러스터가 있어야 합니다. OpenShift 4는 현재 지원되지 않습니다.
- 지원되는 구성에 대한 자세한 내용은 Red Hat 3scale API Management Supported Configurations 페이지를 참조하십시오.
- OpenShift 설명서에 설명된 대로 와일드카드 경로가 OpenShift 라우터에서 활성화되었는지 확인합니다.
절차
- 3scale 호스팅 관리 포털 콘솔에 로그인합니다.
- 계정 관리 API에 대한 쓰기 액세스 권한이 있는 새 액세스 토큰을 생성합니다.
나중에 사용하기 위해 생성된 액세스 토큰을 저장합니다. 예를 들면 다음과 같습니다.
export SAAS_ACCESS_TOKEN=123...456
나중에 사용하기 위해 3scale 테넌트의 이름을 저장합니다. 관리 포털 URL에서
-admin.3scale.net
이전의 문자열입니다. 예를 들면 다음과 같습니다.export SAAS_TENANT=my_username
- 관리 포털의 대상 > ; 계정 > 목록으로 이동합니다.
- Developer (개발자)를 클릭합니다.
개발자 계정 ID 를 저장합니다.
/buyers/accounts/
뒤의 URL의 마지막 부분입니다. 예를 들면 다음과 같습니다.export SAAS_DEVELOPER_ACCOUNT_ID=123...456
6.2.3. 3scale 온프레미스 환경 설정
3scale 온프레미스 환경 설정은 하이브리드( 오픈 및
샘플 Jenkins CI/CD 파이프라인에만 필요합니다.
하이브리드) -
OIDC
이러한 하이브리드
샘플 파이프라인을 사용하려면 3scale 온프레미스 환경과 3scale 호스팅 환경을 설정해야 합니다. 3scale 호스팅 환경 설정을 참조하십시오.
사전 요구 사항
- Linux 워크스테이션이 있어야 합니다.
- 3scale 온프레미스 환경이 있어야 합니다. OpenShift에 템플릿을 사용하여 3scale 온프레미스를 설치하는 방법에 대한 자세한 내용은 3scale 설치 설명서를 참조하십시오.
OpenShift 3.11 클러스터가 있어야 합니다. OpenShift 4는 현재 지원되지 않습니다.
- 지원되는 구성에 대한 자세한 내용은 Red Hat 3scale API Management Supported Configurations 페이지를 참조하십시오.
- OpenShift 설명서에 설명된 대로 와일드카드 경로가 OpenShift 라우터에서 활성화되었는지 확인합니다.
절차
- 3scale 사내 관리 포털 콘솔에 로그인합니다.
- 계정 관리 API에 대한 쓰기 액세스 권한이 있는 새 액세스 토큰을 생성합니다.
나중에 사용하기 위해 생성된 액세스 토큰을 저장합니다. 예를 들면 다음과 같습니다.
export SAAS_ACCESS_TOKEN=123...456
나중에 사용하기 위해 3scale 테넌트의 이름을 저장합니다.
export ONPREM_ADMIN_PORTAL_HOSTNAME="$(oc get route system-provider-admin -o jsonpath='{.spec.host}')"
와일드카드 경로를 정의합니다.
export OPENSHIFT_ROUTER_SUFFIX=app.openshift.test # Replace me! export APICAST_ONPREM_STAGING_WILDCARD_DOMAIN=onprem-staging.$OPENSHIFT_ROUTER_SUFFIX export APICAST_ONPREM_PRODUCTION_WILDCARD_DOMAIN=onprem-production.$OPENSHIFT_ROUTER_SUFFIX
참고OPENSHIFT_ROUTER_SUFFIX
값을 OpenShift 라우터의 접미사(예:app.openshift.test)로 설정해야 합니다.
기존 3scale 온프레미스 인스턴스에 와일드카드 경로를 추가합니다.
oc create route edge apicast-wildcard-staging --service=apicast-staging --hostname="wildcard.$APICAST_ONPREM_STAGING_WILDCARD_DOMAIN" --insecure-policy=Allow --wildcard-policy=Subdomain oc create route edge apicast-wildcard-production --service=apicast-production --hostname="wildcard.$APICAST_ONPREM_PRODUCTION_WILDCARD_DOMAIN" --insecure-policy=Allow --wildcard-policy=Subdomain
- 관리 포털의 대상 > ; 계정 > 목록으로 이동합니다.
- Developer (개발자)를 클릭합니다.
개발자 계정 ID 를 저장합니다.
/buyers/accounts/
:export ONPREM_DEVELOPER_ACCOUNT_ID=5
6.2.4. OpenID Connect용 Red Hat Single Sign-On 배포
Hybrid - OpenID Connect (OIDC)
또는 Semantic 버전 지정
샘플 파이프라인을 사용하는 경우 이 섹션의 단계를 수행하여 3scale로 RH-SSO(Red Hat Single Sign-On)를 배포합니다. 이는 두 샘플 모두에서 사용되는 OIDC 인증에 필요합니다.
절차
RH-SSO 7.3 설명서에 설명된 대로 RH-SSO 7.3을 배포합니다.
다음 예제 명령은 간단한 요약을 제공합니다.
oc replace -n openshift --force -f https://raw.githubusercontent.com/jboss-container-images/redhat-sso-7-openshift-image/sso73-dev/templates/sso73-image-stream.json oc replace -n openshift --force -f https://raw.githubusercontent.com/jboss-container-images/redhat-sso-7-openshift-image/sso73-dev/templates/sso73-x509-postgresql-persistent.json oc -n openshift import-image redhat-sso73-openshift:1.0 oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default oc new-app --template=sso73-x509-postgresql-persistent --name=sso -p DB_USERNAME=sso -p SSO_ADMIN_USERNAME=admin -p DB_DATABASE=sso
나중에 사용하기 위해 RH-SSO 설치의 호스트 이름을 저장합니다.
export SSO_HOSTNAME="$(oc get route sso -o jsonpath='{.spec.host}')"
- 3scale 개발자 포털 설명서에 설명된 대로 3scale 용 RH-SSO 구성.
나중에 사용하기 위해 영역 이름, 클라이언트 ID 및 클라이언트 시크릿을 저장합니다.
export REALM=3scale export CLIENT_ID=3scale-admin export CLIENT_SECRET=123...456
6.2.5. 3scale toolbox 설치 및 액세스 활성화
이 섹션에서는 toolbox를 설치하고, 원격 3scale 인스턴스를 생성하며, 관리 포털에 액세스하는 데 사용되는 시크릿을 프로비저닝하는 방법을 설명합니다.
절차
- 3scale toolbox에 설명된 대로 3scale toolbox 를 로컬로 설치합니다.
적절한 toolbox 명령을 실행하여 3scale 원격 인스턴스를 생성합니다.
3scale 호스팅
3scale remote add 3scale-saas "https://$SAAS_ACCESS_TOKEN@$SAAS_TENANT-admin.3scale.net/"
3scale 온프레미스
3scale remote add 3scale-onprem "https://$ONPREM_ACCESS_TOKEN@$ONPREM_ADMIN_PORTAL_HOSTNAME/"
다음 OpenShift 명령을 실행하여 3scale 관리 포털 및 액세스 토큰이 포함된 시크릿을 프로비저닝합니다.
oc create secret generic 3scale-toolbox -n "$TOOLBOX_NAMESPACE" --from-file="$HOME/.3scalerc.yaml"
6.2.6. API 백엔드 배포
이 섹션에서는 샘플 파이프라인과 함께 제공되는 예제 API 백엔드를 배포하는 방법을 보여줍니다. 자체 파이프라인을 생성 및 배포할 때 필요에 따라 자체 API 백엔드를 교체할 수 있습니다.
절차
다음 샘플과 함께 사용할 예제 Beer Catalog API 백엔드를 배포합니다.
-
SaaS - API 키
-
하이브리드 - 오픈
하이브리드 - OIDC
oc new-app -n "$TOOLBOX_NAMESPACE" -i openshift/redhat-openjdk18-openshift:1.4 https://github.com/microcks/api-lifecycle.git --context-dir=/beer-catalog-demo/api-implementation --name=beer-catalog oc expose -n "$TOOLBOX_NAMESPACE" svc/beer-catalog
-
나중에 사용하기 위해 Beer Catalog API 호스트 이름을 저장합니다.
export BEER_CATALOG_HOSTNAME="$(oc get route -n "$TOOLBOX_NAMESPACE" beer-catalog -o jsonpath='{.spec.host}')"
다음 샘플과 함께 사용할 Red Hat Event API 백엔드 예제를 배포합니다.
-
다중 환경
의미 체계 버전
oc new-app -n "$TOOLBOX_NAMESPACE" -i openshift/nodejs:10 'https://github.com/nmasse-itix/rhte-api.git#085b015' --name=event-api oc expose -n "$TOOLBOX_NAMESPACE" svc/event-api
-
나중에 사용하기 위해 이벤트 API 호스트 이름을 저장합니다.
export EVENT_API_HOSTNAME="$(oc get route -n "$TOOLBOX_NAMESPACE" event-api -o jsonpath='{.spec.host}')"
6.2.7. 자체 관리 APIcast 인스턴스 배포
이 섹션은 3scale 호스팅 환경에서 APIcast 자체 관리 인스턴스에 사용하기 위한 것입니다. SaaS - API 키를
제외한 모든 샘플 파이프라인에 적용됩니다.
절차
와일드카드 경로를 정의합니다.
export APICAST_SELF_MANAGED_STAGING_WILDCARD_DOMAIN=saas-staging.$OPENSHIFT_ROUTER_SUFFIX export APICAST_SELF_MANAGED_PRODUCTION_WILDCARD_DOMAIN=saas-production.$OPENSHIFT_ROUTER_SUFFIX
프로젝트에 APIcast 자체 관리 인스턴스를 배포합니다.
oc create secret generic 3scale-tenant --from-literal=password=https://$SAAS_ACCESS_TOKEN@$SAAS_TENANT-admin.3scale.net oc create -f https://raw.githubusercontent.com/3scale/apicast/v3.5.0/openshift/apicast-template.yml oc new-app --template=3scale-gateway --name=apicast-staging -p CONFIGURATION_URL_SECRET=3scale-tenant -p CONFIGURATION_CACHE=0 -p RESPONSE_CODES=true -p LOG_LEVEL=info -p CONFIGURATION_LOADER=lazy -p APICAST_NAME=apicast-staging -p DEPLOYMENT_ENVIRONMENT=sandbox -p IMAGE_NAME=registry.redhat.io/3scale-amp2/apicast-gateway-rhel8:3scale2.10 oc new-app --template=3scale-gateway --name=apicast-production -p CONFIGURATION_URL_SECRET=3scale-tenant -p CONFIGURATION_CACHE=60 -p RESPONSE_CODES=true -p LOG_LEVEL=info -p CONFIGURATION_LOADER=boot -p APICAST_NAME=apicast-production -p DEPLOYMENT_ENVIRONMENT=production -p IMAGE_NAME=registry.redhat.io/3scale-amp2/apicast-gateway-rhel8:3scale2.10 oc scale dc/apicast-staging --replicas=1 oc scale dc/apicast-production --replicas=1 oc create route edge apicast-staging --service=apicast-staging --hostname="wildcard.$APICAST_SELF_MANAGED_STAGING_WILDCARD_DOMAIN" --insecure-policy=Allow --wildcard-policy=Subdomain oc create route edge apicast-production --service=apicast-production --hostname="wildcard.$APICAST_SELF_MANAGED_PRODUCTION_WILDCARD_DOMAIN" --insecure-policy=Allow --wildcard-policy=Subdomain
6.2.8. 샘플 파이프라인 설치 및 배포
필수 환경을 설정한 후에는 Red Hat 통합 리포지토리의 각 샘플 사용 사례에 제공된 OpenShift 템플릿을 사용하여 샘플 파이프라인을 설치하고 배포할 수 있습니다. 예를 들어 이 섹션에는 SaaS - API Key
샘플만 표시됩니다.
절차
제공된 OpenShift 템플릿을 사용하여 Jenkins 파이프라인을 설치합니다.
oc process -f saas-usecase-apikey/setup.yaml \ -p DEVELOPER_ACCOUNT_ID="$SAAS_DEVELOPER_ACCOUNT_ID" \ -p PRIVATE_BASE_URL="http://$BEER_CATALOG_HOSTNAME" \ -p NAMESPACE="$TOOLBOX_NAMESPACE" |oc create -f -
다음과 같이 샘플을 배포합니다.
oc start-build saas-usecase-apikey
6.2.9. 3scale toolbox를 사용한 API 라이프사이클 자동화의 제한 사항
이 릴리스에서는 다음과 같은 제한 사항이 적용됩니다.
- OpenShift 지원
- 샘플 파이프라인은 OpenShift 3.11에서만 지원됩니다. OpenShift 4는 현재 지원되지 않습니다. 지원되는 구성에 대한 자세한 내용은 Red Hat 3scale API Management Supported Configurations 페이지를 참조하십시오.
- 애플리케이션 업데이트
-
3scale 애플리케이션 apply
toolbox 명령을 사용하여 애플리케이션을 생성하고 업데이트할 수 있습니다. 지원 명령 생성 계정, 계획, 서비스 및 애플리케이션 키. - 업데이트 명령은 계정, 계획 또는 서비스의 변경 사항을 지원하지 않습니다. 변경 사항이 전달되면 파이프라인이 트리거되고 오류가 표시되지 않지만 해당 필드는 업데이트되지 않습니다.
-
- 서비스 복사
-
3scale 복사 서비스
toolbox 명령을 사용하여 사용자 지정 정책으로 서비스를 복사하는 경우 사용자 지정 정책을 먼저 별도로 복사해야 합니다.