7.2. 샘플 Jenkins CI/CD 파이프라인 배포
3scale toolbox가 포함된 API 라이프사이클 자동화에서는 API 라이프사이클의 배포 단계에 중점을 두고 CI/CD 파이프라인을 사용하여 API 관리 솔루션을 자동화할 수 있습니다. 이 주제에서는 3scale toolbox를 호출하는 샘플 Jenkins 파이프라인을 배포하는 방법을 설명합니다.
- 7.2.1절. “Jenkins CI/CD 파이프라인 샘플”
- 7.2.2절. “3scale 호스팅 환경 설정”
- 7.2.3절. “3scale 온-프레미스 환경 설정”
- 7.2.4절. “OpenID Connect용 Red Hat Single Sign-On 배포”
- 7.2.5절. “3scale toolbox 설치 및 액세스 활성화”
- 7.2.6절. “API 백엔드 배포”
- 7.2.7절. “자체 관리 APIcast 인스턴스 배포”
- 7.2.8절. “샘플 파이프라인 설치 및 배포”
- 7.2.9절. “3scale toolbox를 통한 API 라이프사이클 자동화 제한”
7.2.1. Jenkins CI/CD 파이프라인 샘플
다음 샘플은 Red Hat Integration 리포지토리에서 API 라이프사이클 자동화를 위한 Jenkins 파이프라인을 생성하고 배포하는 방법에 대한 예입니다.
샘플 파이프라인 | 대상 환경 | 보안 |
---|---|---|
3scale Hosted | API 키 | |
APIcast 자체 관리가 가능한 3scale 호스팅 및 3scale 온-프레미스 | 없음 | |
APIcast 자체 관리가 가능한 3scale 호스팅 및 3scale 온-프레미스 | OpenID Connect(OIDC) | |
3scale Hosted on development, test, and production, with APIcast self-managed | API 키 | |
3scale Hosted on development, test, and production, with APIcast self-managed | API 키, none, OIDC |
이 샘플은 3scale toolbox를 호출하여 주요 API 관리 기능을 보여주는 3scale Jenkins 공유 라이브러리를 사용합니다. 이 주제에서 설정 단계를 수행한 후 Red Hat Integration 리포지토리의 각 샘플 사용 사례에 대해 제공된 OpenShift 템플릿을 사용하여 파이프라인을 설치할 수 있습니다.
샘플 파이프라인 및 애플리케이션은 예제로만 제공됩니다. 샘플 파이프라인에서 활용하는 기본 API, CLI 및 기타 인터페이스는 Red Hat에서 완전히 지원합니다. 파이프라인에 대한 수정 사항은 Red Hat에서 직접 지원하지 않습니다.
7.2.2. 3scale 호스팅 환경 설정
3scale 호스팅 환경 설정은 모든 샘플 Jenkins CI/CD 파이프라인에 필요합니다.
SaaS - API 키
,Multi-environment
, Semantic 버전 관리
샘플 파이프라인은 3scale 호스트 만 사용합니다. 하이브리드 - 오픈
및 하이브리드 - OIDC
파이프라인은 3scale 온-프레미스도 사용합니다. 3scale 온-프레미스 환경 설정 도 참조하십시오.
사전 요구 사항
- Linux 워크스테이션이 있어야 합니다.
- 3scale Hosted 환경이 있어야 합니다.
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
- everyone & gt; Accounts > Admin Portal 에서 account로 이동합니다.
- Developer 를 클릭합니다.
개발자 계정 ID 를 에 저장합니다.
/buyers/accounts/
. 뒤에 있는 URL의 마지막 부분입니다. 예를 들어 다음과 같습니다.export SAAS_DEVELOPER_ACCOUNT_ID=123...456
7.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
- everyone & gt; Accounts > Admin Portal 에서 account로 이동합니다.
- Developer 를 클릭합니다.
개발자 계정 ID 를 에 저장합니다. 이 URL은
/buyers/accounts/
:export ONPREM_DEVELOPER_ACCOUNT_ID=5
7.2.4. OpenID Connect용 Red Hat Single Sign-On 배포
OIDC( Hybrid - OpenID Connect)
또는 Semantic 버전 관리
샘플 파이프라인을 사용하는 경우 이 섹션의 단계를 수행하여 3scale을 사용하여 Red Hat Single Sign-On(RH-SSO)을 배포합니다. 이는 두 샘플 모두에서 사용되는 OIDC 인증에 필요합니다.
절차
RH-SSO 설명서에 설명된 대로 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
7.2.5. 3scale toolbox 설치 및 액세스 활성화
이 섹션에서는 toolbox를 설치하고, 원격 3scale 인스턴스를 생성하며, 관리 포털에 액세스하는 데 사용되는 시크릿을 프로비저닝하는 방법을 설명합니다.
절차
- 3scale toolbox 에 설명된 대로 3scale toolbox 를 로컬로 설치합니다.
적절한 toolbox 명령을 실행하여 3scale 원격 인스턴스를 생성합니다.
3scale Hosted
3scale remote add 3scale-saas "https://$SAAS_ACCESS_TOKEN@$SAAS_TENANT-admin.3scale.net/"
3scale On-premises
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"
7.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}')"
7.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.13 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.13 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
7.2.8. 샘플 파이프라인 설치 및 배포
필수 환경을 설정한 후에는 Red Hat Integration 리포지토리의 각 샘플 사용 사례에 대해 제공된 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
7.2.9. 3scale toolbox를 통한 API 라이프사이클 자동화 제한
이 릴리스에는 다음과 같은 제한 사항이 적용됩니다.
- OpenShift 지원
- 샘플 파이프라인은 OpenShift 3.11에서만 지원됩니다. OpenShift 4는 현재 지원되지 않습니다. 지원되는 구성에 대한 자세한 내용은 Red Hat 3scale API Management Supported Configurations 페이지를 참조하십시오.
- 애플리케이션 업데이트
-
3scale 애플리케이션 apply
toolbox 명령을 사용하여 애플리케이션을 생성하고 업데이트할 수 있습니다. 계정, 계획, 서비스 및 애플리케이션 키를 지원하는 명령을 생성합니다. - 업데이트 명령은 계정, 계획 또는 서비스 변경 사항을 지원하지 않습니다. 변경 사항이 전달되면 파이프라인이 트리거되고 오류가 표시되지 않지만 해당 필드는 업데이트되지 않습니다.
-
- 서비스 복사
-
3scale 복사 서비스
toolbox 명령을 사용하여 사용자 지정 정책으로 서비스를 복사하는 경우 사용자 지정 정책을 먼저 복사하고 별도로 복사해야 합니다.