2.6. Operator를 사용하여 OpenShift에서 3scale에 대한 배포 구성 옵션


이 섹션에서는 Operator를 사용하여 OpenShift에서 Red Hat 3scale API Management의 배포 구성 옵션에 대해 설명합니다.

사전 요구 사항

2.6.1. 내장된 APIcast에 대한 프록시 매개변수 구성

3scale 관리자는 내장된 APIcast 준비 및 프로덕션에 대한 프록시 매개변수를 구성할 수 있습니다. 이 섹션에서는 APIManager 사용자 정의 리소스에서 프록시 매개변수를 지정하는 데 필요한 참조 정보를 제공합니다. 즉, 3scale 연산자( APIManager 사용자 정의 리소스)를 사용하여 OpenShift에 3scale을 배포합니다.

APIManager CR을 처음 배포할 때 이러한 매개변수를 지정하거나 배포된 APIManager CR을 업데이트할 수 있으며 Operator에서 업데이트를 조정할 수 있습니다. APIManager 사용자 정의 리소스 배포를 참조하십시오.

내장된 APIcast의 프록시 관련 구성 매개변수는 다음 네 가지입니다.

  • allProxy
  • httpProxy
  • httpsProxy
  • noProxy

allProxy

allProxy 매개변수는 요청이 프로토콜별 프록시를 지정하지 않는 경우 서비스 연결에 사용할 HTTP 또는 HTTPS 프록시를 지정합니다.

프록시를 설정한 후 allProxy 매개변수를 프록시 주소로 설정하여 APIcast를 구성합니다. 프록시에서 인증이 지원되지 않습니다. 즉, APIcast는 인증된 요청을 프록시에 보내지 않습니다.

allProxy 매개변수의 값은 문자열이며, 기본값이 없으며 매개 변수는 필요하지 않습니다. spec.apicast.productionSpec.allProxy 매개변수 또는 spec.apicast.stagingSpec.allProxy 매개변수를 설정하려면 이 형식을 사용합니다.

<scheme>://<host>:<port>

예를 들어 다음과 같습니다.

apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
   name: example-apimanager
spec:
   apicast:
      productionSpec:
         allProxy: http://forward-proxy:80
      stagingSpec:
         allProxy: http://forward-proxy:81
Copy to Clipboard Toggle word wrap

httpProxy

httpProxy 매개변수는 HTTP 서비스 연결에 사용할 HTTP 프록시를 지정합니다.

프록시를 설정한 후 httpProxy 매개변수를 프록시 주소로 설정하여 APIcast를 구성합니다. 프록시에서 인증이 지원되지 않습니다. 즉, APIcast는 인증된 요청을 프록시에 보내지 않습니다.

httpProxy 매개변수의 값은 문자열이며, 기본값이 없으며 매개 변수는 필요하지 않습니다. spec.apicast.productionSpec.httpProxy 매개변수 또는 spec.apicast.stagingSpec.httpProxy 매개변수를 설정하려면 이 형식을 사용합니다.

http://<host>:<port>

예를 들어 다음과 같습니다.

apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
   name: example-apimanager
spec:
   apicast:
      productionSpec:
         httpProxy: http://forward-proxy:80
      stagingSpec:
         httpProxy: http://forward-proxy:81
Copy to Clipboard Toggle word wrap

httpsProxy

httpsProxy 매개변수는 서비스 연결에 사용할 HTTPS 프록시를 지정합니다.

프록시를 설정한 후 httpsProxy 매개변수를 프록시 주소로 설정하여 APIcast를 구성합니다. 프록시에서 인증이 지원되지 않습니다. 즉, APIcast는 인증된 요청을 프록시에 보내지 않습니다.

httpsProxy 매개변수의 값은 문자열이며, 기본값이 없으며 매개 변수는 필요하지 않습니다. spec.apicast.productionSpec.httpsProxy 매개변수 또는 spec.apicast.stagingSpec.httpsProxy 매개변수를 설정하려면 이 형식을 사용합니다.

https://<host>:<port>

예를 들어 다음과 같습니다.

apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
   name: example-apimanager
spec:
   apicast:
      productionSpec:
         httpsProxy: https://forward-proxy:80
      stagingSpec:
         httpsProxy: https://forward-proxy:81
Copy to Clipboard Toggle word wrap

noProxy

noProxy 매개변수는 쉼표로 구분된 호스트 이름과 도메인 이름을 지정합니다. 요청에 이러한 이름 중 하나가 포함되어 있으면 APIcast에서 요청을 프록시하지 않습니다.

프록시에 대한 액세스를 중지해야 하는 경우(예: 유지 관리 작업 중) noProxy 매개변수를 별표(*)로 설정합니다. 이는 모든 요청에 지정된 모든 호스트와 일치하며 프록시를 효과적으로 비활성화합니다.

noProxy 매개변수의 값은 문자열이며, 기본값이 없으며 매개 변수는 필요하지 않습니다. spec.apicast.productionSpec.noProxy 매개변수 또는 spec.apicast.stagingSpec.noProxy 매개변수를 설정하려면 쉼표로 구분된 문자열을 지정합니다. 예를 들어 다음과 같습니다.

apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
   name: example-apimanager
spec:
   apicast:
      productionSpec:
         noProxy: theStore,company.com,big.red.com
      stagingSpec:
         noProxy: foo,bar.com,.extra.dot.com
Copy to Clipboard Toggle word wrap

2.6.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 },
    }
    Copy to Clipboard Toggle word wrap
  2. 사용자 지정 환경을 정의하는 Lua 파일에서 시크릿을 생성합니다. 예를 들어 다음과 같습니다.

    oc create secret generic custom-env-1 --from-file=./env1.lua
    Copy to Clipboard Toggle word wrap

    시크릿에는 여러 사용자 지정 환경이 포함될 수 있습니다. 사용자 지정 환경을 정의하는 각 파일에 대해 '-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
    Copy to Clipboard Toggle word wrap

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

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

    oc apply -f apimanager.yaml
    Copy to Clipboard Toggle word wrap

다음 단계

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

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

2.6.3. 3scale Operator를 사용하여 사용자 정의 정책 삽입

내장 APIcast를 사용하는 3scale 설치에서는 3scale Operator를 사용하여 사용자 지정 정책을 삽입할 수 있습니다. 임베디드 APIcast는 관리 또는 호스팅 APIcast라고도 합니다. 사용자 지정 정책을 삽입하면 정책 코드가 APIcast에 추가됩니다. 그런 다음 다음 중 하나를 사용하여 API 제품의 정책 체인에 사용자 지정 정책을 추가할 수 있습니다.

  • 3scale API
  • Product 사용자 정의 리소스

3scale 관리 포털을 사용하여 제품의 정책 체인에 사용자 지정 정책을 추가하려면 사용자 지정 정책의 스키마를 CustomPolicyDefinition 사용자 지정 리소스에 등록해야 합니다. 사용자 지정 정책 등록은 관리 포털을 사용하여 제품의 정책 체인을 구성하려는 경우에만 필요합니다.

3scale 설치 후 또는 의 일부로 사용자 지정 정책을 삽입할 수 있습니다. 사용자 지정 정책을 삽입한 후 3scale 설치 후 APIManager CR에서 사양을 제거하여 사용자 지정 정책을 제거할 수 있습니다. 3scale Operator는 변경 사항을 조정합니다.

사전 요구 사항

  • 3scale Operator를 설치하거나 이전에 설치했습니다.
  • 자체 정책 쓰기에 설명된 대로 사용자 지정 정책을 정의했습니다. 즉, 사용자 지정 정책을 정의하는 my-policy.lua, apicast-policy.json, init.lua 파일이 이미 생성되었습니다.

절차

  1. 하나의 사용자 지정 정책을 정의하는 파일에서 시크릿을 생성합니다. 예를 들어 다음과 같습니다.

    oc create secret generic my-first-custom-policy-secret \
     --from-file=./apicast-policy.json \
     --from-file=./init.lua \
     --from-file=./my-first-custom-policy.lua
    Copy to Clipboard Toggle word wrap

    사용자 지정 정책이 두 개 이상 있는 경우 각 사용자 지정 정책에 대한 보안을 생성합니다. 보안에는 하나의 사용자 지정 정책만 포함될 수 있습니다.

  2. 사용자 지정 정책이 포함된 각 보안을 참조하는 APIManager 사용자 지정 리소스를 정의합니다. APIcast 스테이징 및 APIcast 프로덕션에 대해 동일한 시크릿을 지정할 수 있습니다. 다음 예제에서는 사용자 정의 정책이 포함된 보안을 참조하는 것과 관련된 콘텐츠만 보여줍니다.

    apiVersion: apps.3scale.net/v1alpha1
    kind: APIManager
    metadata:
      name: apimanager-apicast-custom-policy
    spec:
      apicast:
        stagingSpec:
          customPolicies:
            - name: my-first-custom-policy
              version: "0.1"
              secretRef:
                name: my-first-custom-policy-secret
            - name: my-second-custom-policy
              version: "0.1"
              secretRef:
                name: my-second-custom-policy-secret
        productionSpec:
          customPolicies:
            - name: my-first-custom-policy
              version: "0.1"
              secretRef:
                name: my-first-custom-policy-secret
            - name: my-second-custom-policy
              version: "0.1"
              secretRef:
                name: my-second-custom-policy-secret
    Copy to Clipboard Toggle word wrap

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

  3. 사용자 지정 정책이 포함된 보안을 참조하는 APIManager 사용자 지정 리소스를 생성합니다. 예를 들어 다음과 같습니다.

    oc apply -f apimanager.yaml
    Copy to Clipboard Toggle word wrap

다음 단계

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

  • 권장 옵션은 다른 이름으로 시크릿을 생성하고 새 시크릿을 참조하도록 APIManager 사용자 지정 리소스 customPolicies 섹션을 업데이트하는 것입니다. Operator는 롤링 업데이트를 트리거하고 업데이트된 사용자 지정 정책을 로드합니다.
  • 또는 spec.apicast.productionSpec.replicas 또는 spec.apicast.stagingSpec.replicas 를 0으로 설정한 다음 spec.apicast.productionSpec.replicas 또는 spec.apicast.stagingSpec.replicas 를 이전 값으로 설정하여 APIcast를 다시 배포하여 기존 보안을 업데이트할 수 있습니다.

2.6.4. 3scale Operator로 OpenTracing 구성

내장 APIcast를 사용하는 3scale 설치에서는 3scale Operator를 사용하여 OpenTracing을 구성할 수 있습니다. 스테이징 또는 프로덕션 환경에서 또는 두 환경 모두에서 OpenTracing을 구성할 수 있습니다. OpenTracing을 활성화하면 APIcast 인스턴스에 대한 더 많은 통찰력과 가시성을 얻을 수 있습니다.

절차

  1. stringData.config 에 OpenTracing 구성 세부 정보가 포함된 시크릿을 정의합니다. 이는 OpenTracing 구성 세부 정보가 포함된 속성에 대해 유일하게 유효한 값입니다. 다른 사양에서는 APIcast가 OpenTracing 구성 세부 정보를 수신하지 못하도록 합니다. 다음 예제에서는 유효한 보안 정의를 보여줍니다.

    apiVersion: v1
    kind: Secret
    metadata:
      name: myjaeger
    stringData:
      config: |-
          {
          "service_name": "apicast",
          "disabled": false,
          "sampler": {
            "type": "const",
            "param": 1
          },
          "reporter": {
            "queueSize": 100,
            "bufferFlushInterval": 10,
            "logSpans": false,
            "localAgentHostPort": "jaeger-all-in-one-inmemory-agent:6831"
          },
          "headers": {
            "jaegerDebugHeader": "debug-id",
            "jaegerBaggageHeader": "baggage",
            "TraceContextHeaderName": "uber-trace-id",
            "traceBaggageHeaderPrefix": "testctx-"
          },
          "baggage_restrictions": {
              "denyBaggageOnInitializationFailure": false,
              "hostPort": "127.0.0.1:5778",
              "refreshInterval": 60
          }
          }
    type: Opaque
    Copy to Clipboard Toggle word wrap
  2. 시크릿을 생성합니다. 예를 들어 이전 시크릿 정의를 myjaeger.yaml 파일에 저장한 경우 다음 명령을 실행합니다.

    oc create secret generic myjaeger --from-file myjaeger.yaml
    Copy to Clipboard Toggle word wrap
  3. OpenTracing 특성을 지정하는 APIManager 사용자 지정 리소스를 정의합니다. CR 정의에서 openTracing.tracingConfigSecretRef.name 속성을 OpenTracing 구성 세부 정보가 포함된 시크릿 이름으로 설정합니다. 다음 예제에서는 OpenTracing 구성을 기준으로 한 콘텐츠만 보여줍니다.

    apiVersion: apps.3scale.net/v1alpha1
    kind: APIManager
    metadata:
      name: apimanager1
    spec:
      apicast:
        stagingSpec:
          ...
          openTracing:
            enabled: true
            tracingLibrary: jaeger
            tracingConfigSecretRef:
              name: myjaeger
        productionSpec:
          ...
            openTracing:
              enabled: true
              tracingLibrary: jaeger
              tracingConfigSecretRef:
                name: myjaeger
    Copy to Clipboard Toggle word wrap
  4. OpenTracing을 구성하는 APIManager 사용자 지정 리소스를 만듭니다. 예를 들어 APIManager 사용자 정의 리소스를 apimanager1.yaml 파일에 저장한 경우 다음 명령을 실행합니다.

    oc apply -f apimanager1.yaml
    Copy to Clipboard Toggle word wrap

다음 단계

OpenTracing이 설치된 방법에 따라 Jaeger 서비스 사용자 인터페이스에 추적이 표시되어야 합니다.

2.6.5. 3scale Operator를 사용하여 Pod 수준에서 TLS 활성화

3scale은 두 개의 APIcast 인스턴스를 배포합니다. 하나는 프로덕션용이고 다른 하나는 스테이징용입니다. 프로덕션 또는 스테이징만 또는 두 인스턴스에만 TLS를 활성화할 수 있습니다.

사전 요구 사항

  • TLS를 활성화하는 데 유효한 인증서입니다.

절차

  1. 유효한 인증서에서 보안을 생성합니다. 예를 들면 다음과 같습니다.

    oc create secret tls mycertsecret --cert=server.crt --key=server.key
    Copy to Clipboard Toggle word wrap

    구성에서 APIManager CRD에 보안 참조를 노출합니다. 시크릿을 생성한 다음 다음과 같이 APIManager 사용자 정의 리소스에서 시크릿 이름을 참조합니다.

    • 제품 이름: APIManager CR은 .spec.apicast.productionSpec.httpsCertificateSecretRef 필드에 인증서를 노출합니다.
    • 스테이징: APIManager CR은 .spec.apicast.stagingSpec.httpsCertificateSecretRef 필드에 인증서를 노출합니다.

      선택적으로 다음을 구성할 수 있습니다.

    • httpsPort 는 HTTPS 연결에서 수신 대기해야 하는 포트 APIcast를 나타냅니다. HTTP 포트 APIcast가 충돌하면 이 포트는 HTTPS용으로만 사용됩니다.
    • httpsVerifyDepth 는 클라이언트 인증서 체인의 최대 길이를 정의합니다.

      참고

      APImanager CR에서 유효한 인증서 및 참조를 제공합니다. 구성에서 httpsPort 에 액세스할 수 있지만 httpsCertificateSecretRef 는 액세스할 수 없는 경우 APIcast는 포함된 자체 서명된 인증서를 사용합니다. 이는 권장되지 않습니다.

  2. Operators > 설치된 Operators를 클릭합니다.
  3. 설치된 Operator 목록에서 3scale Operator를 클릭합니다.
  4. API Manager 탭을 클릭합니다.
  5. APIManager 생성을 클릭합니다.
  6. 편집기에 다음 YAML 정의를 추가합니다.

    1. 프로덕션에 대해 활성화하는 경우 다음 YAML 결함을 구성합니다.

      spec:
        apicast:
          productionSpec:
            httpsPort: 8443
            httpsVerifyDepth: 1
            httpsCertificateSecretRef:
              name: mycertsecret
      Copy to Clipboard Toggle word wrap
    2. 스테이징 을 위해 활성화하는 경우 다음 YAML 결함을 구성합니다.

      spec:
        apicast:
          stagingSpec:
            httpsPort: 8443
            httpsVerifyDepth: 1
            httpsCertificateSecretRef:
              name: mycertsecret
      Copy to Clipboard Toggle word wrap
  7. 생성을 클릭합니다.

2.6.6. 평가 배포에 대한 개념 증명

다음 섹션에서는 3scale 평가 배포에 대한 개념 증명에 적용되는 구성 옵션에 대해 설명합니다. 이 배포에서는 내부 데이터베이스를 기본값으로 사용합니다.

중요

외부 데이터베이스의 구성은 프로덕션 환경의 표준 배포 옵션입니다.

2.6.6.1. 기본 배포 구성

  • 컨테이너에 Kubernetes 리소스 제한 및 요청이 있습니다.

    • 이는 최소 성능 수준을 보장합니다.
    • 리소스를 제한하여 외부 서비스 및 솔루션 할당을 허용합니다.
  • 내부 데이터베이스를 배포합니다.
  • 파일 스토리지는 지속성 볼륨(PV)을 기반으로 합니다.

    • 하나는 읽기, 쓰기, 실행(RWX) 액세스 모드가 필요합니다.
    • OpenShift는 요청 시 이를 제공하도록 구성되어 있습니다.
  • MySQL을 내부 관계형 데이터베이스로 배포합니다.

기본 구성 옵션은 PoC(Proof of concept) 또는 고객의 평가에 적합합니다.

APIManager 사용자 정의 리소스의 특정 필드 값으로 기본 구성 옵션 중 하나 또는 모든 기본 구성 옵션을 재정의할 수 있습니다. 3scale 연산자를 사용하면 모든 사용 가능한 조합을 사용할 수 있지만 템플릿은 고정 배포 프로필을 허용합니다. 예를 들어 3scale 연산자를 사용하면 평가 모드 및 외부 데이터베이스 모드에서 3scale을 배포할 수 있습니다. 템플릿에서는 이러한 특정 배포 구성을 허용하지 않습니다. 템플릿은 가장 일반적인 구성 옵션에서만 사용할 수 있습니다.

2.6.6.2. 평가 설치

평가 설치의 경우 컨테이너에 kubernetes 리소스 제한 및 요청이 지정되지 않습니다. 예를 들어 다음과 같습니다.

  • 작은 메모리 공간
  • 빠른 시작
  • 랩탑에서 실행 가능
  • 사전 판매 / 판매 데모에 적합
apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
  name: example-apimanager
spec:
  wildcardDomain: lvh.me
  resourceRequirementsEnabled: false
Copy to Clipboard Toggle word wrap

추가 리소스

  • 자세한 내용은 APIManager 사용자 정의 리소스를 참조하십시오.

2.6.7. 외부 데이터베이스 설치

외부 데이터베이스 설치는 고가용성(HA)이 요구 사항이거나 자체 데이터베이스를 재사용할 계획인 프로덕션 용도에 적합합니다.

중요

3scale 외부 데이터베이스 설치 모드를 활성화할 때 다음 데이터베이스 중 하나 이상을 3scale 외부로 구성할 수 있습니다.

  • backend-redis
  • system-redis
  • system-database (mysql,postgresql 또는 Oracle)
  • zync-database

3scale 2.8 이상은 다음 데이터베이스 버전에서 지원됩니다.

Expand
데이터베이스버전

Redis

5.0

MySQL

8.0

PostgreSQL

13

3scale을 배포하기 위해 APIManager 사용자 지정 리소스를 생성하기 전에 OpenShift 시크릿을 사용하여 외부 데이터베이스에 대해 다음 연결 설정을 제공해야 합니다.

2.6.7.1. 백엔드 Redis 시크릿

다음 예와 같이 두 개의 외부 Redis 인스턴스를 배포하고 연결 설정을 작성합니다.

apiVersion: v1
kind: Secret
metadata:
  name: backend-redis
stringData:
  REDIS_STORAGE_URL: "redis://backend-redis-storage"
  REDIS_STORAGE_SENTINEL_HOSTS: "redis://sentinel-0.example.com:26379,redis://sentinel-1.example.com:26379, redis://sentinel-2.example.com:26379"
  REDIS_STORAGE_SENTINEL_ROLE: "master"
  REDIS_QUEUES_URL: "redis://backend-redis-queues"
  REDIS_QUEUES_SENTINEL_HOSTS: "redis://sentinel-0.example.com:26379,redis://sentinel-1.example.com:26379, redis://sentinel-2.example.com:26379"
  REDIS_QUEUES_SENTINEL_ROLE: "master"
type: Opaque
Copy to Clipboard Toggle word wrap

시크릿 이름은 backend-redis 여야 합니다.

2.6.7.2. 시스템 Redis 시크릿

다음 예와 같이 두 개의 외부 Redis 인스턴스를 배포하고 연결 설정을 작성합니다.

apiVersion: v1
kind: Secret
metadata:
  name: system-redis
stringData:
  URL: "redis://system-redis"
  SENTINEL_HOSTS: "redis://sentinel-0.example.com:26379,redis://sentinel-1.example.com:26379, redis://sentinel-2.example.com:26379"
  SENTINEL_ROLE: "master"
  NAMESPACE: ""
type: Opaque
Copy to Clipboard Toggle word wrap

시크릿이름은 system-redis 여야 합니다.

2.6.7.3. 시스템 데이터베이스 시크릿

참고
  • 시크릿이름은 system-database 여야 합니다.

3scale을 배포할 때 시스템 데이터베이스에 대한 세 가지 대안이 있습니다. 각 대체의 관련 보안에 대해 서로 다른 속성 및 값을 구성합니다.

  • MySQL
  • PostgreSQL
  • Oracle Database

MySQL, PostgreSQL 또는 Oracle Database 시스템 데이터베이스 시크릿을 배포하려면 다음 예와 같이 연결 설정을 작성합니다.

MySQL 시스템 데이터베이스 시크릿

apiVersion: v1
kind: Secret
metadata:
  name: system-database
stringData:
  URL: "mysql2://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}"
type: Opaque
Copy to Clipboard Toggle word wrap

중요

3scale 2.12와 함께 MySQL 8.0을 사용하는 경우 인증 플러그인을 mysql_native_password로 설정해야 합니다. MySQL 구성 파일에 다음을 추가합니다.

[mysqld]
default_authentication_plugin=mysql_native_password
Copy to Clipboard Toggle word wrap

PostgreSQL 시스템 데이터베이스 시크릿

apiVersion: v1
kind: Secret
metadata:
  name: system-database
stringData:
  URL: "postgresql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}"
type: Opaque
Copy to Clipboard Toggle word wrap

Oracle 시스템 데이터베이스 시크릿

apiVersion: v1
kind: Secret
metadata:
  name: system-database
stringData:
  URL: "oracle-enhanced://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}"
  ORACLE_SYSTEM_PASSWORD: "{SYSTEM_PASSWORD}"
type: Opaque
Copy to Clipboard Toggle word wrap

참고
  • {DB_USER}{DB_PASSWORD} 는 일반 비 시스템 사용자의 사용자 이름과 암호입니다.
  • {DB_NAME} 은 Oracle Database 서비스 이름입니다.

2.6.7.4. Zync 데이터베이스 시크릿

zync 데이터베이스 설정에서 spec.externalmanifests.zync.database 필드가 true로 설정된 경우 3scale을 배포하기 전에 zync라는 시크릿을 생성해야 합니다. 이 시크릿에서 DATABASE_URLDATABASE_PASSWORD 필드를 외부 zync 데이터베이스를 가리키는 값으로 설정합니다. 예를 들면 다음과 같습니다.

apiVersion: v1
kind: Secret
metadata:
  name: zync
stringData:
  DATABASE_URL: postgresql://<zync-db-user>:<zync-db-password>@<zync-db-host>:<zync-db-port>/zync_production
  ZYNC_DATABASE_PASSWORD: <zync-db-password>
type: Opaque
Copy to Clipboard Toggle word wrap

zync 데이터베이스는 고가용성 모드여야 합니다.

2.6.7.5. 3scale을 배포하기 위한 APIManager 사용자 정의 리소스

참고
  • 외부 구성 요소를 활성화하는 경우 3scale을 배포하기 전에 각 외부 구성 요소 (backend-redis system-redis,system-database,zync)에 대한 시크릿을 생성해야 합니다.
  • 외부 system-database의 경우 외부화할 하나의 데이터베이스 유형만 선택합니다.

APIManager 사용자 지정 리소스의 구성은 선택한 데이터베이스가 3scale 배포 외부에 있는지 여부에 따라 달라집니다.

backend-redis, system-redis, 또는 system-database가 3scale 외부에 있는 경우 APIManager 사용자 지정 리소스를 해당 externalComponents 오브젝트를 채워야 합니다. 예를 들어 다음과 같습니다.

apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
  name: example-apimanager
spec:
  wildcardDomain: lvh.me
  externalComponents:
    system:
      database: true
Copy to Clipboard Toggle word wrap

2.6.8. Amazon Simple Storage Service 3scale Filestorage 설치

다음 예제에서는 PVC(영구 볼륨 클레임) 대신 Amazon Simple Storage Service(Amazon S3)를 사용하여 3scale FileStorage를 보여줍니다.

3scale을 배포하기 위해 APIManager 사용자 지정 리소스를 생성하기 전에 openshift 시크릿을 사용하여 S3 서비스에 대한 연결 설정을 제공해야 합니다.

2.6.8.1. Amazon S3 시크릿

참고

AWS S3 호환 공급자는 AWS_HOSTNAME,AWS_PATH_STYLE, AWS_PROTOCOL 선택 키를 사용하여 S3 시크릿에 구성할 수 있습니다. 자세한 내용은 S3 시크릿 참조를 확인하십시오.

다음 예에서 Secret 이름은 APIManager 사용자 정의 리소스에서 참조되므로 무엇이든 될 수 있습니다.

kind: Secret
metadata:
  creationTimestamp: null
  name: aws-auth
stringData:
  AWS_ACCESS_KEY_ID: 123456
  AWS_SECRET_ACCESS_KEY: 98765544
  AWS_BUCKET: mybucket.example.com
  AWS_REGION: eu-west-1
type: Opaque
Copy to Clipboard Toggle word wrap
참고

Amazon S3 리전 및 Amazon S3 버킷 설정은 APIManager 사용자 정의 리소스에서 직접 제공됩니다. Amazon S3 시크릿 이름은 APIManager 사용자 정의 리소스에서 직접 제공됩니다.

마지막으로 APIManager 사용자 정의 리소스를 생성하여 3scale을 배포합니다.

apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
  name: example-apimanager
spec:
  wildcardDomain: lvh.me
  system:
    fileStorage:
      simpleStorageService:
        configurationSecretRef:
          name: aws-auth
Copy to Clipboard Toggle word wrap

참조를 위해 APIManager SystemS3Spec을 확인합니다.

2.6.9. PostgreSQL 설치

MySQL 내부 관계형 데이터베이스는 기본 배포입니다. 이 배포 구성은 대신 PostgreSQL을 사용하도록 재정의할 수 있습니다.

apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
  name: example-apimanager
spec:
  wildcardDomain: lvh.me
  system:
    database:
      postgresql: {}
Copy to Clipboard Toggle word wrap

추가 리소스

2.6.10. 구성 요소 수준에서 컴퓨팅 리소스 요구 사항 사용자 정의

APIManager 사용자 정의 리소스 속성을 통해 3scale 솔루션의 Kubernetes Compute 리소스 요구 사항을 사용자 정의합니다. 이 작업을 수행하여 특정 APIManager 구성 요소에 할당된 CPU 및 메모리인 컴퓨팅 리소스 요구 사항을 사용자 정의합니다.

다음 예제에서는 backend-listenerzync-database 에 대해 system-master의 system-provider 컨테이너에 대한 컴퓨팅 리소스 요구 사항을 사용자 지정하는 방법을 간략하게 설명합니다.

apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
  name: example-apimanager
spec:
  backend:
    listenerSpec:
      resources:
        requests:
          memory: "150Mi"
          cpu: "300m"
        limits:
          memory: "500Mi"
          cpu: "1000m"
  system:
    appSpec:
      providerContainerResources:
        requests:
          memory: "111Mi"
          cpu: "222m"
        limits:
          memory: "333Mi"
          cpu: "444m"
  zync:
    databaseResources:
      requests:
        memory: "111Mi"
        cpu: "222m"
      limits:
        memory: "333Mi"
        cpu: "444m"
Copy to Clipboard Toggle word wrap

추가 리소스

구성 요소 수준 사용자 정의 리소스 요구 사항을 지정하는 방법에 대한 자세한 내용은 APIManager CRD 참조를 확인하십시오.

2.6.10.1. 기본 APIManager 구성 요소 컴퓨팅 리소스

APIManager spec.resourceRequirementsEnabled 속성을 true 로 구성하면 기본 컴퓨팅 리소스가 APIManager 구성 요소에 대해 설정됩니다.

APIManager 구성 요소에 설정된 특정 컴퓨팅 리소스 기본값이 다음 표에 표시되어 있습니다.

2.6.10.1.1. CPU 및 메모리 단위

다음 목록에서는 컴퓨팅 리소스 기본값 표에 언급된 단위를 설명합니다. CPU 및 메모리 유닛에 대한 자세한 내용은 Managing Resources for Containers 를 참조하십시오.

리소스 단위 설명

  • m - milliCPU 또는 millicore
  • Mi - 메비 바이트
  • GI - 기비바이트
  • G - 기가바이트
Expand
표 2.2. 컴퓨팅 리소스 기본값
구성 요소CPU 요청CPU 제한메모리 요청메모리 제한

system-app의 system-master

50m

1000m

600Mi

800Mi

system-app의 system-provider

50m

1000m

600Mi

800Mi

system-app의 system- developer

50m

1000m

600Mi

800Mi

system-sidekiq

100m

1000m

500Mi

2Gi

system-sphinx

80m

1000m

250Mi

512Mi

system-redis

150m

500m

256Mi

32Gi

system-mysql

250m

제한 없음

512Mi

2Gi

system-postgresql

250m

제한 없음

512Mi

2Gi

backend-listener

500m

1000m

550Mi

700Mi

backend-worker

150m

1000m

50Mi

300Mi

backend-cron

50m

150m

40Mi

80Mi

backend-redis

1000m

2000m

1024Mi

32Gi

APIcast-production

500m

1000m

64Mi

128Mi

apicast-staging

50m

100m

64Mi

128Mi

zync

150m

1

250M

512Mi

zync-que

250m

1

250M

512Mi

zync-database

50m

250m

250M

2G

2.6.11. 구성 요소 수준에서 노드 유사성 및 허용 오차 사용자 정의

APIManager 사용자 정의 리소스 속성을 통해 Red Hat 3scale API Management 솔루션의 Kubernetes 유사성허용 오차를 사용자 지정하여 설치의 다양한 3scale 구성 요소가 Kubernetes 노드에 예약되는 위치와 방법을 사용자 지정합니다.

다음 예제에서는 백엔드에 대한 사용자 정의 노드 유사성을 설정합니다. 또한 system-memcached에 대한 리스너 및 사용자 정의 허용 오차를 설정합니다.

apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
  name: example-apimanager
spec:
  backend:
    listenerSpec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: "kubernetes.io/hostname"
                operator: In
                values:
                - ip-10-96-1-105
              - key: "beta.kubernetes.io/arch"
                operator: In
                values:
                - amd64
  system:
    memcachedTolerations:
    - key: key1
      value: value1
      operator: Equal
      effect: NoSchedule
    - key: key2
      value: value2
      operator: Equal
      effect: NoSchedule
Copy to Clipboard Toggle word wrap

추가 리소스

선호도 및 허용 오차와 관련된 전체 속성 목록은 APIManager CDR 참조에서 확인하십시오.

2.6.12. 조정

3scale Operator가 설치되면 3scale Operator에서 지정된 매개변수 세트를 사용자 정의 리소스에서 업데이트하여 시스템 구성 옵션을 수정할 수 있습니다. 시스템을 중지하거나 종료하지 않고 핫 스와핑을 통해 수정이 수행됩니다.

APIManager CRD(사용자 정의 리소스 정의)의 매개 변수가 모두 조정 가능한 것은 아닙니다.

다음은 조정 가능한 매개변수 목록입니다.

2.6.12.1. 리소스

모든 3scale 구성 요소에 대한 리소스 제한 및 요청

apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
  name: example-apimanager
spec:
  ResourceRequirementsEnabled: true/false
Copy to Clipboard Toggle word wrap

2.6.12.2. 백엔드 복제본

백엔드 구성 요소 pod 수입니다.

apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
  name: example-apimanager
spec:
  backend:
    listenerSpec:
      replicas: X
    workerSpec:
      replicas: Y
    cronSpec:
      replicas: Z
Copy to Clipboard Toggle word wrap

2.6.12.3. APIcast 복제본

APIcast 스테이징 및 프로덕션 구성 요소 Pod 수입니다.

apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
  name: example-apimanager
spec:
  apicast:
    productionSpec:
      replicas: X
    stagingSpec:
      replicas: Z
Copy to Clipboard Toggle word wrap

2.6.12.4. 시스템 복제본

시스템 앱 및 시스템 sidekiq 구성 요소 Pod 수

apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
  name: example-apimanager
spec:
  system:
    appSpec:
      replicas: X
    sidekiqSpec:
      replicas: Z
Copy to Clipboard Toggle word wrap

2.6.12.5. Zync 복제본

Zync 앱 및 que 구성 요소 Pod 수

apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
  name: example-apimanager
spec:
  zync:
    appSpec:
      replicas: X
    queSpec:
      replicas: Z
Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat