Menu Close

2.8.2. 3scale Operator를 사용하여 사용자 지정 환경 삽입

포함된 APIcast를 사용하는 3scale 설치에서는 3scale 연산자를 사용하여 사용자 정의 환경을 삽입할 수 있습니다. 임베디드 APIcast는 관리 또는 호스팅 APIcast라고도 합니다. 사용자 지정 환경은 게이트웨이가 제공하는 모든 업스트림 API에 APIcast가 적용되는 동작을 정의합니다. 사용자 지정 환경을 만들려면 Lua 코드에서 글로벌 구성을 정의합니다.

3scale 설치 전이나 후에 사용자 지정 환경을 삽입할 수 있습니다. 사용자 지정 환경을 삽입한 후 3scale 설치 후 사용자 지정 환경을 제거할 수 있습니다. 3scale Operator는 변경 사항을 조정합니다.

사전 요구 사항

  • 3scale Operator가 설치되어 있습니다.

절차

  1. 삽입할 사용자 지정 환경을 정의하는 Lua 코드를 작성합니다. 예를 들어 다음 env1.lua 파일은 3scale 운영자가 모든 서비스에 대해 로드하는 사용자 지정 로깅 정책을 보여줍니다.

    local cjson = require('cjson')
    local PolicyChain = require('apicast.policy_chain')
    local policy_chain = context.policy_chain
    
    local logging_policy_config = cjson.decode([[
    {
      "enable_access_logs": false,
      "custom_logging": "\"{{request}}\" to service {{service.id}} and {{service.name}}"
    }
    ]])
    
    policy_chain:insert( PolicyChain.load_policy('logging', 'builtin', logging_policy_config), 1)
    
    return {
      policy_chain = policy_chain,
      port = { metrics = 9421 },
    }
  2. 사용자 지정 환경을 정의하는 Lua 파일에서 시크릿을 생성합니다. 예를 들어 다음과 같습니다.

    oc create secret generic custom-env-1 --from-file=./env1.lua

    시크릿에는 여러 사용자 지정 환경이 포함될 수 있습니다. 사용자 지정 환경을 정의하는 각 파일에 대해 '-from-file 옵션을 지정합니다. Operator는 각 사용자 지정 환경을 로드합니다.

  3. 방금 생성한 시크릿을 참조하는 APIManager 사용자 정의 리소스를 정의합니다. 다음 예제에서는 사용자 지정 환경을 정의하는 시크릿을 참조하는 상대적 콘텐츠만 보여줍니다.

    apiVersion: apps.3scale.net/v1alpha1
    kind: APIManager
    metadata:
      name: apimanager-apicast-custom-environment
    spec:
      wildcardDomain: <desired-domain>
      apicast:
        productionSpec:
          customEnvironments:
            - secretRef:
                name: custom-env-1
        stagingSpec:
          customEnvironments:
            - secretRef:
                name: custom-env-1

    APIManager 사용자 정의 리소스는 사용자 지정 환경을 정의하는 여러 시크릿을 참조할 수 있습니다. Operator는 각 사용자 지정 환경을 로드합니다.

  4. 사용자 지정 환경을 추가하는 APIManager 사용자 정의 리소스를 생성합니다. 예를 들어 다음과 같습니다.

    oc apply -f apimanager.yaml

다음 단계

사용자 지정 환경을 정의하는 보안의 콘텐츠를 업데이트할 수 없습니다. 사용자 지정 환경을 업데이트해야 하는 경우 다음 중 하나를 수행할 수 있습니다.

  • 권장 옵션은 다른 이름으로 시크릿을 생성하고 APIManager 사용자 정의 리소스 필드, customEnvironments[].secretRef.name 을 업데이트하는 것입니다. Operator는 롤링 업데이트를 트리거하고 업데이트된 사용자 지정 환경을 로드합니다.
  • 또는 spec.apicast.productionSpec.replicas 또는 spec.apicast.stagingSpec.replicas 를 0으로 설정한 다음 spec.apicast.productionSpec.replicas 또는 spec.apicast.stagingSpec.replicas 를 이전 값으로 설정하여 APIcast를 다시 배포하여 기존 보안을 업데이트할 수 있습니다.