4.4.2. 포함된 APIcast에 사용자 정의 정책 추가

온프레미스 배포에 사용자 지정 APIcast 정책을 추가하려면 사용자 지정 정책이 포함된 OpenShift 이미지를 빌드하고 배포에 추가해야 합니다. 3scale은 프레임워크로 사용할 수 있는 샘플 리포지토리를 제공하여 온프레미스 배포에 사용자 지정 정책을 만들고 추가할 수 있습니다.

이 샘플 리포지토리에는 사용자 지정 정책에 대한 올바른 디렉터리 구조와 생성한 사용자 지정 정책이 포함된 새 APIcast OpenShift 이미지를 빌드하기 위한 이미지 스트림 및 BuildConfigs를 생성하는 템플릿이 포함되어 있습니다.

주의

apicast-custom-policies 를 빌드하면 빌드 프로세스에서 새 이미지를 the amp-apicast:latest 태그로 내보냅니다. 이 이미지 스트림 태그(:latest)에 이미지가 변경되면 기본적으로 apicast-stagingapicast-production 태그 모두 새 배포를 자동으로 시작하도록 구성됩니다. 프로덕션 서비스(또는 스테이징)의 중단을 방지하려면 자동 배포(이미지가변경될 경우 자동으로 새 배포를 시작) 확인란을 비활성화하거나 프로덕션에 대해 다른 이미지 스트림 태그(예:: amp-apicast:production)를 구성하는 것이 좋습니다.

온프레미스 배포에 사용자 지정 정책을 추가하려면 다음을 수행합니다.

  1. 다음 고려 사항에 따라 레지스트리 서비스 계정 생성에서 생성한 인증 정보를 사용하여 docker-registry 보안을 생성합니다.

    • your-registry-service-account-username12345678|username 형식으로 생성된 사용자 이름으로 바꿉니다.
    • Token Information ( 토큰 정보) 탭의 username 아래의 password 문자열로 your-registry-service-account-password 를 바꿉니다.
    • 이미지 스트림이 상주하고 registry.redhat.io 를 사용하는 모든 새 네임스페이스에 대해 docker-registry 보안을 생성합니다.

      이 명령을 실행하여 docker-registry 보안을 생성합니다.

      oc create secret docker-registry threescale-registry-auth \
        --docker-server=registry.redhat.io \
        --docker-username="your-registry-service-account-username" \
        --docker-password="your-registry-service-account-password"
  2. https://github.com/3scale/apicast-example-policy [정책 예제]를 사용하여 공용 리포지토리를 분기하거나 해당 콘텐츠를 사용하여 개인 리포지토리를 생성합니다. OpenShift에서 이미지를 빌드하려면 Git 리포지토리에서 사용할 수 있는 사용자 지정 정책 코드가 있어야 합니다. 개인 Git 리포지토리를 사용하려면 OpenShift에서 시크릿을 설정해야 합니다.
  3. 리포지토리를 로컬로 복제하고, 정책에 대한 구현을 추가하고, 변경 사항을 Git 리포지토리로 내보냅니다.
  4. openshift.yml 템플릿을 업데이트합니다. 구체적으로 다음 매개변수를 변경합니다.

    1. 정책 BuildConfig의 spec.source.git.uri: https://github.com/3scale/apicast-example-policy.git - Git 리포지토리 위치로 변경합니다.
    2. 사용자 정의 정책 BuildConfig의 spec.source.images[0].paths.sourcePath: /opt/app-root/policies/example - 예제 를 리포지토리의 policy 디렉터리에 추가한 사용자 지정 정책 이름으로 변경합니다.
    3. 선택적으로 OpenShift 오브젝트 이름 및 이미지 태그를 업데이트합니다. 그러나 변경 사항이 일관성(예: apicast-example-policy BuildConfig 빌드)인지 확인하고 apicast- custom-policies BuildConfig에서 소스로 사용되는 apicast- policy:example 이미지를 푸시해야 합니다. 따라서 태그는 동일해야 합니다.
  5. 명령을 실행하여 OpenShift 오브젝트를 생성합니다.

    oc new-app -f openshift.yml --param AMP_RELEASE=2.9
  6. 빌드가 자동으로 시작되지 않으면 다음 두 명령을 실행합니다. 변경한 경우 apicast-example-policy 를 자체 BuildConfig 이름(예: apicast-<name>-policy)으로 바꿉니다. 두 번째 명령을 실행하기 전에 첫 번째 명령이 완료될 때까지 기다립니다.

    oc start-build apicast-example-policy
    oc start-build apicast-custom-policies

기본 제공 APIcast 이미지에 the amp-apicast:latest 이미지 스트림의 변경 사항을 추적하는 트리거가 있는 경우 APIcast의 새 배포가 시작됩니다. apicast-staging 이 다시 시작되면 Integration > Policies (통합 > 정책 )로 이동하여 Add Policy (정책 추가) 버튼을 클릭하여 나열된 사용자 정의 정책을 확인합니다. 이를 선택하고 구성한 후 Update Policy(정책 체인 업데이트)를 클릭하여 스테이징 APIcast에서 사용자 지정 정책이 작동하도록 합니다.