7.2. 샘플 Jenkins CI/CD 파이프라인 배포

3scale toolbox를 사용한 API 라이프사이클 자동화에서는 API 라이프사이클의 배포 단계에 중점을 두고 CI/CD 파이프라인을 사용하여 API 관리 솔루션을 자동화할 수 있습니다. 이 주제에서는 3scale toolbox를 호출하는 샘플 Jenkins 파이프라인을 배포하는 방법에 대해 설명합니다.

7.2.1. Jenkins CI/CD 파이프라인 샘플

다음 샘플은 API 라이프사이클 자동화를 위해 Jenkins 파이프라인을 생성하고 배포하는 방법에 대한 예로 Red Hat 통합 리포지토리에 제공됩니다.

표 7.3. Jenkins 공유 라이브러리 파이프라인 샘플

샘플 파이프라인대상 환경보안

SaaS - API 키

3scale 호스팅

API 키

하이브리드 - 오픈

APIcast 자체 관리가 포함된 3scale 호스팅 및 3scale 온프레미스

없음

하이브리드 - OpenID Connect

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에서 직접 지원하지 않습니다.

7.2.2. 3scale 호스팅 환경 설정

3scale 호스팅 환경 설정은 모든 샘플 Jenkins CI/CD 파이프라인에 필요합니다.

참고

SaaS - API 키,멀티 환경의미 버전 지정 샘플 파이프라인은 3scale 호스팅만 사용합니다. 하이브리드 - 개방형 하이브리드 - OIDC 파이프라인은 또한 3scale 온프레미스를 사용합니다. 또한 3scale 온-프레미스 환경 설정을 참조하십시오.

사전 요구 사항

절차

  1. 3scale 호스팅 관리 포털 콘솔에 로그인합니다.
  2. 계정 관리 API에 대한 쓰기 액세스 권한이 있는 새 액세스 토큰을 생성합니다.
  3. 나중에 사용하기 위해 생성된 액세스 토큰을 저장합니다. 예를 들면 다음과 같습니다.

    export SAAS_ACCESS_TOKEN=123...456
  4. 나중에 사용하기 위해 3scale 테넌트의 이름을 저장합니다. 관리 포털 URL에서 -admin.3scale.net 이전의 문자열입니다. 예를 들면 다음과 같습니다.

    export SAAS_TENANT=my_username
  5. 관리 포털의 대상 &gt ; 계정 > 목록으로 이동합니다.
  6. Developer (개발자)를 클릭합니다.
  7. 개발자 계정 ID 를 저장합니다. /buyers/accounts/ 뒤의 URL의 마지막 부분입니다. 예를 들면 다음과 같습니다.

    export SAAS_DEVELOPER_ACCOUNT_ID=123...456

7.2.3. 3scale 온프레미스 환경 설정

3scale 온프레미스 환경 설정은 하이브리드( 오픈 및 하이브리드) - OIDC 샘플 Jenkins CI/CD 파이프라인에만 필요합니다.

참고

이러한 하이브리드 샘플 파이프라인을 사용하려면 3scale 온프레미스 환경과 3scale 호스팅 환경을 설정해야 합니다. 3scale 호스팅 환경 설정 도 참조하십시오.

사전 요구 사항

절차

  1. 3scale 사내 관리 포털 콘솔에 로그인합니다.
  2. 계정 관리 API에 대한 쓰기 액세스 권한이 있는 새 액세스 토큰을 생성합니다.
  3. 나중에 사용하기 위해 생성된 액세스 토큰을 저장합니다. 예를 들면 다음과 같습니다.

    export SAAS_ACCESS_TOKEN=123...456
  4. 나중에 사용하기 위해 3scale 테넌트의 이름을 저장합니다.

    export ONPREM_ADMIN_PORTAL_HOSTNAME="$(oc get route system-provider-admin -o jsonpath='{.spec.host}')"
  5. 와일드카드 경로를 정의합니다.

    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)로 설정해야 합니다.

  6. 기존 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
  7. 관리 포털의 대상 &gt ; 계정 > 목록으로 이동합니다.
  8. Developer (개발자)를 클릭합니다.
  9. 개발자 계정 ID 를 저장합니다. /buyers/accounts/:

    export ONPREM_DEVELOPER_ACCOUNT_ID=5

7.2.4. OpenID Connect용 Red Hat Single Sign-On 배포

Hybrid - OpenID Connect (OIDC) 또는 Semantic 버전 지정 샘플 파이프라인을 사용하는 경우 이 섹션의 단계를 수행하여 3scale로 RH-SSO(Red Hat Single Sign-On)를 배포합니다. 이는 두 샘플 모두에서 사용되는 OIDC 인증에 필요합니다.

절차

  1. 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
  2. 나중에 사용하기 위해 RH-SSO 설치의 호스트 이름을 저장합니다.

    export SSO_HOSTNAME="$(oc get route sso -o jsonpath='{.spec.host}')"
  3. 3scale 개발자 포털 설명서에 설명된 대로 RH-SSO for 3scale 을 구성합니다.
  4. 나중에 사용하기 위해 영역 이름, 클라이언트 ID 및 클라이언트 시크릿을 저장합니다.

    export REALM=3scale
    
    export CLIENT_ID=3scale-admin
    
    export CLIENT_SECRET=123...456

7.2.5. 3scale toolbox 설치 및 액세스 활성화

이 섹션에서는 toolbox를 설치하고, 원격 3scale 인스턴스를 생성하며, 관리 포털에 액세스하는 데 사용되는 시크릿을 프로비저닝하는 방법을 설명합니다.

절차

  1. 3scale toolbox에 설명된 대로 3scale toolbox 를 로컬로 설치합니다.
  2. 적절한 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/"

  3. 다음 OpenShift 명령을 실행하여 3scale 관리 포털 및 액세스 토큰이 포함된 시크릿을 프로비저닝합니다.

    oc create secret generic 3scale-toolbox -n "$TOOLBOX_NAMESPACE" --from-file="$HOME/.3scalerc.yaml"

7.2.6. API 백엔드 배포

이 섹션에서는 샘플 파이프라인과 함께 제공되는 예제 API 백엔드를 배포하는 방법을 보여줍니다. 자체 파이프라인을 생성 및 배포할 때 필요에 따라 자체 API 백엔드를 교체할 수 있습니다.

절차

  1. 다음 샘플과 함께 사용할 예제 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
  2. 나중에 사용하기 위해 Beer Catalog API 호스트 이름을 저장합니다.

    export BEER_CATALOG_HOSTNAME="$(oc get route -n "$TOOLBOX_NAMESPACE" beer-catalog -o jsonpath='{.spec.host}')"
  3. 다음 샘플과 함께 사용할 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
  4. 나중에 사용하기 위해 이벤트 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 키를 제외한 모든 샘플 파이프라인에 적용됩니다.

절차

  1. 와일드카드 경로를 정의합니다.

    export APICAST_SELF_MANAGED_STAGING_WILDCARD_DOMAIN=saas-staging.$OPENSHIFT_ROUTER_SUFFIX
    
    export APICAST_SELF_MANAGED_PRODUCTION_WILDCARD_DOMAIN=saas-production.$OPENSHIFT_ROUTER_SUFFIX
  2. 프로젝트에 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.11
    
    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.11
    
    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 통합 리포지토리의 각 샘플 사용 사례에 제공된 OpenShift 템플릿을 사용하여 샘플 파이프라인을 설치하고 배포할 수 있습니다. 예를 들어 이 섹션에는 SaaS - API Key 샘플만 표시됩니다.

절차

  1. 제공된 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 -
  2. 다음과 같이 샘플을 배포합니다.

    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 명령을 사용하여 사용자 지정 정책으로 서비스를 복사하는 경우 사용자 지정 정책을 먼저 별도로 복사해야 합니다.