OpenShift에 Apicurio 레지스트리 설치 및 배포


Red Hat build of Apicurio Registry 2.6

Apicurio Registry 2.6 설치, 배포 및 구성

Red Hat build of Apicurio Registry Documentation Team

초록

이 가이드에서는 AMQ Streams 또는 PostgreSQL 데이터베이스의 데이터 스토리지 옵션을 사용하여 OpenShift에 Apicurio Registry를 설치하고 배포하는 방법을 설명합니다. 이 가이드에서는 Apicurio 레지스트리 배포를 보안, 구성 및 관리하고 Apicurio Registry 및 Apicurio Registry Operator에 대한 구성 참조를 제공합니다.

머리말

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

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.

Red Hat 문서에 대한 피드백 제공

문서 개선을 위한 의견에 감사드립니다.

개선 사항을 제안하려면 Jira 문제를 열고 제안된 변경 사항을 설명합니다. 귀하의 요청을 신속하게 처리할 수 있도록 가능한 한 자세한 정보를 제공하십시오.

사전 요구 사항

  • Red Hat 고객 포털 계정이 있어야 합니다. 이 계정을 사용하면 Red Hat Jira Software 인스턴스에 로그인할 수 있습니다.
    계정이 없는 경우 계정을 생성하라는 메시지가 표시됩니다.

프로세스

  1. 다음 링크를 클릭합니다. 문제 생성.
  2. 요약 텍스트 상자에 문제에 대한 간략한 설명을 입력합니다.
  3. 설명 텍스트 상자에 다음 정보를 입력합니다.

    • 문제를 발견한 페이지의 URL입니다.
    • 문제에 대한 자세한 설명입니다.
      다른 필드에 있는 정보는 기본값에 따라 그대로 둘 수 있습니다.
  4. 생성 을 클릭하여 Jira 문제를 문서 팀에 제출합니다.

피드백을 제공하기 위해 시간을 내어 주셔서 감사합니다.

1장. Apicurio Registry Operator 빠른 시작

CRD(Custom Resource Definitions)를 사용하여 명령줄에서 Apicurio Registry Operator를 빠르게 설치할 수 있습니다.

빠른 시작 예제에서는 SQL 데이터베이스의 스토리지가 있는 Apicurio 레지스트리 인스턴스를 배포합니다.

참고

프로덕션 환경에 권장되는 설치 옵션은 OpenShift OperatorHub입니다. 권장 스토리지 옵션은 성능, 안정성 및 데이터 관리를 위한 SQL 데이터베이스입니다.

1.1. 빠른 시작 Apicurio Registry Operator 설치

다운로드한 설치 파일 세트 및 예제 CRD를 사용하여 Operator Lifecycle Manager 없이 Apicurio Registry Operator를 명령줄에서 신속하게 설치하고 배포할 수 있습니다.

사전 요구 사항

  • 관리자 액세스 권한을 사용하여 OpenShift 클러스터에 로그인되어 있습니다.
  • OpenShift oc 명령줄 클라이언트가 설치되어 있어야 합니다. 자세한 내용은 OpenShift CLI 설명서를 참조하십시오.

프로세스

  1. Red Hat 소프트웨어 다운로드 로 이동하여 제품 버전을 선택하고 Apicurio Registry CRD .zip 파일에서 예제를 다운로드합니다.
  2. 다운로드한 CRD .zip 파일을 추출하고 apicurio-registry-install-examples 디렉터리로 변경합니다.
  3. Apicurio Registry Operator 설치에 대한 OpenShift 프로젝트를 생성합니다. 예를 들면 다음과 같습니다.

    Copy to Clipboard Toggle word wrap
    export NAMESPACE="apicurio-registry"
    oc new-project "$NAMESPACE"
  4. 다음 명령을 입력하여 install/install.yaml 파일에 예제 CRD를 적용합니다.

    Copy to Clipboard Toggle word wrap
    cat install/install.yaml | sed "s/apicurio-registry-operator-namespace/$NAMESPACE/g" | oc apply -f -
  5. oc get deployment 를 입력하여 Apicurio Registry Operator의 준비 상태를 확인합니다. 예를 들어 출력은 다음과 같아야 합니다.

    Copy to Clipboard Toggle word wrap
    NAME                     	READY   UP-TO-DATE  AVAILABLE   AGE
    apicurio-registry-operator  1/1 	1        	1       	XmYs

1.2. 빠른 시작 Apicurio 레지스트리 인스턴스 배포

Apicurio 레지스트리 인스턴스 배포를 생성하려면 SQL 데이터베이스 스토리지 옵션을 사용하여 기존 PostgreSQL 데이터베이스에 연결합니다.

사전 요구 사항

  • Apicurio Registry Operator가 설치되어 있는지 확인합니다.
  • OpenShift 클러스터에서 연결할 수 있는 PostgreSQL 데이터베이스가 있습니다.

프로세스

  1. 편집기에서 examples/apicurioregistry_sql_cr.yaml 파일을 열고 ApicurioRegistry CR(사용자 정의 리소스)을 확인합니다.

    SQL 스토리지를 위한 CR의 예

    Copy to Clipboard Toggle word wrap
    apiVersion: registry.apicur.io/v1
    kind: ApicurioRegistry
    metadata:
      name: example-apicurioregistry-sql
    spec:
      configuration:
        persistence: "sql"
        sql:
          dataSource:
            url: "jdbc:postgresql://<service name>.<namespace>.svc:5432/<database name>"
            userName: "postgres"
            password: "<password>" # Optional

  2. dataSource 섹션에서 예제 설정을 데이터베이스 연결 세부 정보로 교체합니다. 예를 들면 다음과 같습니다.

    Copy to Clipboard Toggle word wrap
    dataSource:
        url: "jdbc:postgresql://postgresql.apicurio-registry.svc:5432/registry"
        userName: "pgadmin"
        password: "pgpass"
  3. 다음 명령을 입력하여 Apicurio Registry Operator를 사용하여 네임스페이스에 업데이트된 ApicurioRegistry CR을 적용하고 Apicurio Registry 인스턴스가 배포될 때까지 기다립니다.

    Copy to Clipboard Toggle word wrap
    oc project "$NAMESPACE"
    oc apply -f ./examples/apicurioregistry_sql_cr.yaml
  4. oc get deployment 를 입력하여 Apicurio 레지스트리 인스턴스의 준비 상태를 확인합니다. 예를 들어 출력은 다음과 같아야 합니다.

    Copy to Clipboard Toggle word wrap
    NAME                     	        READY UP-TO-DATE AVAILABLE AGE
    example-apicurioregistry-sql-deployment 1/1   1          1         XmYs
  5. oc get routes 를 입력하여 브라우저에서 Apicurio Registry 웹 콘솔을 시작하려면 HOST/PORT URL을 가져옵니다. 예를 들면 다음과 같습니다.

    Copy to Clipboard Toggle word wrap
    example-apicurioregistry-sql.apicurio-registry.router-default.apps.mycluster.myorg.mycompany.com

2장. OpenShift에 Apicurio 레지스트리 설치

이 장에서는 OpenShift Container Platform에 Apicurio Registry를 설치하는 방법을 설명합니다.

2.1. OpenShift OperatorHub에서 Apicurio 레지스트리 설치

OperatorHub에서 OpenShift 클러스터에 Apicurio Registry Operator를 설치할 수 있습니다. OperatorHub는 OpenShift Container Platform 웹 콘솔에서 사용할 수 있으며 클러스터 관리자가 Operator를 검색하고 설치할 수 있는 인터페이스를 제공합니다. 자세한 내용은 OperatorHub 이해 를 참조하십시오.

참고

환경에 따라 여러 Apicurio 레지스트리 인스턴스를 설치할 수 있습니다. 인스턴스 수는 Apicurio Registry에 저장된 아티팩트 수 및 유형 및 선택한 스토리지 옵션에 따라 달라집니다.

사전 요구 사항

  • OpenShift 클러스터에 대한 클러스터 관리자 액세스 권한이 있어야 합니다.

프로세스

  1. OpenShift Container Platform 웹 콘솔에서 클러스터 관리자 권한이 있는 계정을 사용하여 로그인합니다.
  2. 새 OpenShift 프로젝트를 생성합니다.

    1. 왼쪽 탐색 메뉴에서 ,프로젝트 를 클릭한 다음 프로젝트 만들기를 클릭합니다.
    2. 프로젝트 이름(예: my-project )을 입력하고 생성 을 클릭합니다.
  3. 왼쪽 탐색 메뉴에서 Operator를 클릭한 다음 OperatorHub 를 클릭합니다.
  4. 키워드로 필터링 텍스트 상자에 레지스트리 를 입력하여 Red Hat Integration - Service Registry Operator 를 찾습니다.
  5. Operator에 대한 정보를 읽고 설치를 클릭하여 Operator 서브스크립션 페이지를 표시합니다.
  6. 서브스크립션 설정을 선택합니다. 예를 들면 다음과 같습니다.

    • Update Channel: 다음 중 하나를 선택합니다.

      • 2.x: 2.3.0 및 2.0.3과 같은 모든 마이너 및 패치 업데이트가 포함됩니다. 예를 들어 2.0.x에 설치가 2.3.x로 업그레이드됩니다.
      • 2.0.x: 2.0.1 및 2.0.2와 같은 패치 업데이트만 포함합니다. 예를 들어 2.0.x에 대한 설치는 2.3.x를 무시합니다.
    • 설치 모드: 다음 중 하나를 선택합니다.

      • 클러스터의 모든 네임스페이스(기본값)
      • 클러스터의 특정 네임스페이스my-project
    • 승인 전략: 자동 또는 수동선택
  7. 설치를 클릭하고 Operator를 사용할 준비가 될 때까지 몇 분 정도 기다립니다.

3장. AMQ Streams에 Apicurio 레지스트리 스토리지 배포

이 장에서는 AMQ Streams에서 Apicurio 레지스트리 데이터 스토리지를 설치하고 구성하는 방법을 설명합니다.

3.1. OpenShift OperatorHub에서 AMQ Streams 설치

AMQ Streams가 아직 설치되지 않은 경우 OperatorHub에서 OpenShift 클러스터에 AMQ Streams Operator를 설치할 수 있습니다. OperatorHub는 OpenShift Container Platform 웹 콘솔에서 사용할 수 있으며 클러스터 관리자가 Operator를 검색하고 설치할 수 있는 인터페이스를 제공합니다. 자세한 내용은 OperatorHub 이해 를 참조하십시오.

사전 요구 사항

  • OpenShift 클러스터에 대한 클러스터 관리자 액세스 권한이 있어야 합니다.
  • AMQ Streams 설치에 대한 자세한 내용은 OpenShift에서 AMQ Streams 배포 및 관리를 참조하십시오. 이 섹션에서는 OpenShift OperatorHub를 사용하여 설치하는 간단한 예를 보여줍니다.

프로세스

  1. OpenShift Container Platform 웹 콘솔에서 클러스터 관리자 권한이 있는 계정을 사용하여 로그인합니다.
  2. AMQ Streams를 설치할 OpenShift 프로젝트로 변경합니다. 예를 들어 프로젝트 드롭다운에서 my-project 를 선택합니다.
  3. 왼쪽 탐색 메뉴에서 Operator를 클릭한 다음 OperatorHub 를 클릭합니다.
  4. 키워드로 필터링 텍스트 상자에 AMQ Streams 를 입력하여 Red Hat Integration - AMQ Streams Operator를 찾습니다.
  5. Operator에 대한 정보를 읽고 설치를 클릭하여 Operator 서브스크립션 페이지를 표시합니다.
  6. 서브스크립션 설정을 선택합니다. 예를 들면 다음과 같습니다.

    • 채널 업데이트amq-streams-2.6.x
    • 설치 모드: 다음 중 하나를 선택합니다.

      • 클러스터의 모든 네임스페이스(기본값)
      • 클러스터의 특정 네임스페이스 > my-project
    • 승인 전략: 자동 또는 수동선택
  7. 설치를 클릭하고 Operator를 사용할 준비가 될 때까지 몇 분 정도 기다립니다.

3.2. OpenShift에서 Kafka 스토리지를 사용하여 Apicurio 레지스트리 구성

이 섹션에서는 OpenShift에서 AMQ Streams를 사용하여 Apicurio Registry에 대한 Kafka 기반 스토리지를 구성하는 방법을 설명합니다. kafkasql 스토리지 옵션은 캐싱을 위해 메모리 내 H2 데이터베이스와 함께 Kafka 스토리지를 사용합니다. 이 스토리지 옵션은 영구 스토리지가 OpenShift의 Kafka 클러스터에 대해 구성된 경우 프로덕션 환경에 적합합니다.

기존 Kafka 클러스터에 Apicurio 레지스트리를 설치하거나 환경에 따라 새 Kafka 클러스터를 생성할 수 있습니다.

사전 요구 사항

프로세스

  1. OpenShift Container Platform 웹 콘솔에서 클러스터 관리자 권한이 있는 계정을 사용하여 로그인합니다.
  2. Kafka 클러스터가 구성되지 않은 경우 AMQ Streams를 사용하여 새 Kafka 클러스터를 생성합니다. 예를 들어 OpenShift OperatorHub에서는 다음을 수행합니다.

    1. Installed Operators 를 클릭한 다음 Red Hat Integration - AMQ Streams 를 클릭합니다.
    2. 제공된 API 에서 Kafka 를 클릭한 다음 인스턴스 생성 을 클릭하여 새 Kafka 클러스터를 생성합니다.
    3. 필요에 따라 사용자 정의 리소스 정의를 편집하고 생성 을 클릭합니다.

      주의

      기본 예제에서는 3개의 Zookeeper 노드와 3개의 Kafka 노드가 있는 클러스터를 생성합니다. 이 임시 스토리지는 개발 및 테스트에만 적합하며 프로덕션에는 적합하지 않습니다. 자세한 내용은 OpenShift에서 AMQ 스트림 배포 및 관리를 참조하십시오.

  3. 클러스터가 준비되면 제공된 API > Kafka > my-cluster > YAML 을 클릭합니다.
  4. 상태 블록에서 나중에 Apicurio Registry를 배포하는 데 사용할 bootstrapServers 값의 사본을 만듭니다. 예를 들면 다음과 같습니다.

    Copy to Clipboard Toggle word wrap
    status:
      ...
      conditions:
      ...
      listeners:
        - addresses:
            - host: my-cluster-kafka-bootstrap.my-project.svc
              port: 9092
          bootstrapServers: 'my-cluster-kafka-bootstrap.my-project.svc:9092'
          type: plain
      ...
  5. 설치된 Operators > Red Hat Integration - Service Registry > ApicurioRegistry > Create ApicurioRegistry 를 클릭합니다.
  6. 다음 사용자 정의 리소스 정의에 붙여넣지만 이전에 복사한 bootstrapServers 값을 사용합니다.

    Copy to Clipboard Toggle word wrap
    apiVersion: registry.apicur.io/v1
    kind: ApicurioRegistry
    metadata:
      name: example-apicurioregistry-kafkasql
    spec:
      configuration:
        persistence: 'kafkasql'
        kafkasql:
          bootstrapServers: 'my-cluster-kafka-bootstrap.my-project.svc:9092'
  7. 생성 을 클릭하고 OpenShift에서 Apicurio 레지스트리 경로가 생성될 때까지 기다립니다.
  8. 네트워킹 > 경로를 클릭하여 Apicurio 레지스트리 웹 콘솔의 새 경로에 액세스합니다. 예를 들면 다음과 같습니다.

    Copy to Clipboard Toggle word wrap
    http://example-apicurioregistry-kafkasql.my-project.my-domain-name.com/
  9. Apicurio Registry가 데이터를 저장하는 데 사용하는 Kafka 주제를 구성하려면 Installed Operators > Red Hat Integration - AMQ Streams > Provided API > Kafka Topic > kafkasql-journal > YAML 을 클릭합니다. 예를 들면 다음과 같습니다.

    Copy to Clipboard Toggle word wrap
    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaTopic
    metadata:
      name: kafkasql-journal
      labels:
        strimzi.io/cluster: my-cluster
      namespace: ...
    spec:
      partitions: 3
      replicas: 3
      config:
        cleanup.policy: compact
    주의

    압축 정리 정책을 사용하여 Apicurio Registry(기본적으로 kafkasql-journal )에서 사용하는 Kafka 주제를 구성해야 합니다. 그렇지 않으면 데이터 손실이 발생할 수 있습니다.

추가 리소스

3.3. TLS 보안을 사용하여 Kafka 스토리지 구성

AMQ Streams Operator 및 Apicurio Registry Operator를 구성하여 암호화된 TLS(Transport Layer Security) 연결을 사용할 수 있습니다.

사전 요구 사항

  • OperatorHub 또는 명령줄을 사용하여 Apicurio Registry Operator를 설치했습니다.
  • AMQ Streams Operator를 설치하거나 OpenShift 클러스터에서 Kafka에 액세스할 수 있습니다.
참고

이 섹션에서는 AMQ Streams Operator를 사용할 수 있다고 가정하지만 Kafka 배포를 사용할 수 있습니다. 이 경우 Apicurio Registry Operator에서 예상하는 Openshift 시크릿을 수동으로 생성해야 합니다.

프로세스

  1. OpenShift 웹 콘솔에서 Installed Operators 를 클릭하고 AMQ Streams Operator 세부 정보를 선택한 다음 Kafka 탭을 선택합니다.
  2. Create Kafka 를 클릭하여 Apicurio 레지스트리 스토리지에 대한 새 Kafka 클러스터를 프로비저닝합니다.
  3. Kafka 클러스터에 TLS 인증을 사용하도록 권한 부여tls 필드를 구성합니다. 예를 들면 다음과 같습니다.

    Copy to Clipboard Toggle word wrap
    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
      namespace: registry-example-kafkasql-tls
      # Change or remove the explicit namespace
    spec:
      kafka:
        config:
          offsets.topic.replication.factor: 3
          transaction.state.log.replication.factor: 3
          transaction.state.log.min.isr: 2
          log.message.format.version: '2.7'
          inter.broker.protocol.version: '2.7'
        version: 2.7.0
        storage:
          type: ephemeral
        replicas: 3
        listeners:
          - name: tls
            port: 9093
            type: internal
            tls: true
            authentication:
              type: tls
        authorization:
          type: simple
      entityOperator:
        topicOperator: {}
        userOperator: {}
      zookeeper:
        storage:
          type: ephemeral
        replicas: 3

    데이터를 저장하기 위해 Apicurio Registry에서 자동으로 생성한 기본 Kafka 주제 이름은 kafkasql-journal 입니다. 환경 변수를 설정하여 이 동작 또는 기본 주제 이름을 재정의할 수 있습니다. 기본값은 다음과 같습니다.

    • REGISTRY_KAFKASQL_TOPIC_AUTO_CREATE=true
    • REGISTRY_KAFKASQL_TOPIC=kafkasql-journal

    Kafka 주제를 수동으로 생성하지 않으려면 다음 단계를 건너뜁니다.

  4. Kafka Topic 탭을 클릭한 다음 Kafka Topic 생성 을 클릭하여 kafkasql-journal 주제를 생성합니다.

    Copy to Clipboard Toggle word wrap
    apiVersion: kafka.strimzi.io/v1beta1
    kind: KafkaTopic
    metadata:
      name: kafkasql-journal
      labels:
        strimzi.io/cluster: my-cluster
      namespace: registry-example-kafkasql-tls
    spec:
      partitions: 2
      replicas: 1
      config:
        cleanup.policy: compact
  5. Kafka 사용자 리소스를 생성하여 Apicurio Registry 사용자에 대한 인증 및 권한 부여를 구성합니다. metadata 섹션에 사용자 이름을 지정하거나 기본 my-user 를 사용할 수 있습니다.

    Copy to Clipboard Toggle word wrap
    apiVersion: kafka.strimzi.io/v1beta1
    kind: KafkaUser
    metadata:
      name: my-user
      labels:
        strimzi.io/cluster: my-cluster
      namespace: registry-example-kafkasql-tls
    spec:
      authentication:
        type: tls
      authorization:
        acls:
          - operation: All
            resource:
              name: '*'
              patternType: literal
              type: topic
          - operation: All
            resource:
              name: '*'
              patternType: literal
              type: cluster
          - operation: All
            resource:
              name: '*'
              patternType: literal
              type: transactionalId
          - operation: All
            resource:
              name: '*'
              patternType: literal
              type: group
        type: simple
    참고

    이 간단한 예제에서는 관리자 권한을 가정하고 Kafka 주제를 자동으로 생성합니다. Apicurio Registry에 필요한 주제 및 리소스에 대해 특별히 권한 부여 섹션을 구성해야 합니다.

    다음 예제에서는 Kafka 주제를 수동으로 생성할 때 필요한 최소 구성을 보여줍니다.

    Copy to Clipboard Toggle word wrap
     ...
      authorization:
        acls:
        - operations:
            - Read
            - Write
          resource:
            name: kafkasql-journal
            patternType: literal
            type: topic
        - operations:
            - Read
            - Write
          resource:
            name: apicurio-registry-
            patternType: prefix
            type: group
        type: simple
  6. 워크로드 및 시크릿을 클릭하여 AMQ Streams가 Kafka 클러스터에 연결하기 위해 Apicurio Registry를 위해 생성하는 두 가지 시크릿을 찾습니다.

    • my-cluster-cluster-ca-cert - Kafka 클러스터의 PKCS12 신뢰 저장소 포함
    • my-user - 사용자의 키 저장소 포함

      참고

      시크릿 이름은 클러스터 또는 사용자 이름에 따라 다를 수 있습니다.

  7. 수동으로 보안을 생성하는 경우 다음 키-값 쌍을 포함해야 합니다.

    • my-cluster-ca-cert

      • ca.p12 - PKCS12 형식의 신뢰 저장소
      • ca.password - truststore 암호
    • my-user

      • user.p12 - PKCS12 형식의 키 저장소
      • user.password - 키 저장소 암호
  8. Apicurio 레지스트리를 배포하도록 다음 예제 구성을 구성합니다.

    Copy to Clipboard Toggle word wrap
    apiVersion: registry.apicur.io/v1
    kind: ApicurioRegistry
    metadata:
      name: example-apicurioregistry-kafkasql-tls
    spec:
      configuration:
        persistence: "kafkasql"
        kafkasql:
          bootstrapServers: "my-cluster-kafka-bootstrap.registry-example-kafkasql-tls.svc:9093"
          security:
            tls:
              keystoreSecretName: my-user
              truststoreSecretName: my-cluster-cluster-ca-cert
중요

일반 비보안 사용 사례와 다른 bootstrapServers 주소를 사용해야 합니다. 주소는 TLS 연결을 지원해야 하며 type: tls 필드의 지정된 Kafka 리소스에 있습니다.

3.4. SCRAM 보안을 사용하여 Kafka 스토리지 구성

Kafka 클러스터에 Salted Challenge Response Authentication Mechanism(SCRAM-SHA-512)을 사용하도록 AMQ Streams Operator 및 Apicurio Registry Operator를 구성할 수 있습니다.

사전 요구 사항

  • OperatorHub 또는 명령줄을 사용하여 Apicurio Registry Operator를 설치했습니다.
  • AMQ Streams Operator를 설치하거나 OpenShift 클러스터에서 Kafka에 액세스할 수 있습니다.
참고

이 섹션에서는 AMQ Streams Operator를 사용할 수 있다고 가정하지만 Kafka 배포를 사용할 수 있습니다. 이 경우 Apicurio Registry Operator에서 예상하는 Openshift 시크릿을 수동으로 생성해야 합니다.

프로세스

  1. OpenShift 웹 콘솔에서 Installed Operators 를 클릭하고 AMQ Streams Operator 세부 정보를 선택한 다음 Kafka 탭을 선택합니다.
  2. Create Kafka 를 클릭하여 Apicurio 레지스트리 스토리지에 대한 새 Kafka 클러스터를 프로비저닝합니다.
  3. Kafka 클러스터에 SCRAM-SHA-512 인증을 사용하도록 권한 부여tls 필드를 구성합니다. 예를 들면 다음과 같습니다.

    Copy to Clipboard Toggle word wrap
    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
      namespace: registry-example-kafkasql-scram
      # Change or remove the explicit namespace
    spec:
      kafka:
        config:
          offsets.topic.replication.factor: 3
          transaction.state.log.replication.factor: 3
          transaction.state.log.min.isr: 2
          log.message.format.version: '2.7'
          inter.broker.protocol.version: '2.7'
        version: 2.7.0
        storage:
          type: ephemeral
        replicas: 3
        listeners:
          - name: tls
            port: 9093
            type: internal
            tls: true
            authentication:
              type: scram-sha-512
        authorization:
          type: simple
      entityOperator:
        topicOperator: {}
        userOperator: {}
      zookeeper:
        storage:
          type: ephemeral
        replicas: 3

    데이터를 저장하기 위해 Apicurio Registry에서 자동으로 생성한 기본 Kafka 주제 이름은 kafkasql-journal 입니다. 환경 변수를 설정하여 이 동작 또는 기본 주제 이름을 재정의할 수 있습니다. 기본값은 다음과 같습니다.

    • REGISTRY_KAFKASQL_TOPIC_AUTO_CREATE=true
    • REGISTRY_KAFKASQL_TOPIC=kafkasql-journal

    Kafka 주제를 수동으로 생성하지 않으려면 다음 단계를 건너뜁니다.

  4. Kafka Topic 탭을 클릭한 다음 Kafka Topic 생성 을 클릭하여 kafkasql-journal 주제를 생성합니다.

    Copy to Clipboard Toggle word wrap
    apiVersion: kafka.strimzi.io/v1beta1
    kind: KafkaTopic
    metadata:
      name: kafkasql-journal
      labels:
        strimzi.io/cluster: my-cluster
      namespace: registry-example-kafkasql-scram
    spec:
      partitions: 2
      replicas: 1
      config:
        cleanup.policy: compact
  5. Kafka 사용자 리소스를 생성하여 Apicurio Registry 사용자에 대한 SCRAM 인증 및 권한 부여를 구성합니다. metadata 섹션에 사용자 이름을 지정하거나 기본 my-user 를 사용할 수 있습니다.

    Copy to Clipboard Toggle word wrap
    apiVersion: kafka.strimzi.io/v1beta1
    kind: KafkaUser
    metadata:
      name: my-user
      labels:
        strimzi.io/cluster: my-cluster
      namespace: registry-example-kafkasql-scram
    spec:
      authentication:
        type: scram-sha-512
      authorization:
        acls:
          - operation: All
            resource:
              name: '*'
              patternType: literal
              type: topic
          - operation: All
            resource:
              name: '*'
              patternType: literal
              type: cluster
          - operation: All
            resource:
              name: '*'
              patternType: literal
              type: transactionalId
          - operation: All
            resource:
              name: '*'
              patternType: literal
              type: group
        type: simple
    참고

    이 간단한 예제에서는 관리자 권한을 가정하고 Kafka 주제를 자동으로 생성합니다. Apicurio Registry에 필요한 주제 및 리소스에 대해 특별히 권한 부여 섹션을 구성해야 합니다.

    다음 예제에서는 Kafka 주제를 수동으로 생성할 때 필요한 최소 구성을 보여줍니다.

    Copy to Clipboard Toggle word wrap
     ...
      authorization:
        acls:
        - operations:
            - Read
            - Write
          resource:
            name: kafkasql-journal
            patternType: literal
            type: topic
        - operations:
            - Read
            - Write
          resource:
            name: apicurio-registry-
            patternType: prefix
            type: group
        type: simple
  6. 워크로드 및 시크릿을 클릭하여 AMQ Streams가 Kafka 클러스터에 연결하기 위해 Apicurio Registry를 위해 생성하는 두 가지 시크릿을 찾습니다.

    • my-cluster-cluster-ca-cert - Kafka 클러스터의 PKCS12 신뢰 저장소 포함
    • my-user - 사용자의 키 저장소 포함

      참고

      시크릿 이름은 클러스터 또는 사용자 이름에 따라 다를 수 있습니다.

  7. 수동으로 보안을 생성하는 경우 다음 키-값 쌍을 포함해야 합니다.

    • my-cluster-ca-cert

      • ca.p12 - PKCS12 형식의 신뢰 저장소
      • ca.password - truststore 암호
    • my-user

      • 암호 - 사용자 암호
  8. Apicurio 레지스트리를 배포하도록 다음 예제 설정을 구성합니다.

    Copy to Clipboard Toggle word wrap
    apiVersion: registry.apicur.io/v1
    kind: ApicurioRegistry
    metadata:
      name: example-apicurioregistry-kafkasql-scram
    spec:
      configuration:
        persistence: "kafkasql"
        kafkasql:
          bootstrapServers: "my-cluster-kafka-bootstrap.registry-example-kafkasql-scram.svc:9093"
          security:
            scram:
              truststoreSecretName: my-cluster-cluster-ca-cert
              user: my-user
              passwordSecretName: my-user
중요

일반 비보안 사용 사례와 다른 bootstrapServers 주소를 사용해야 합니다. 주소는 TLS 연결을 지원해야 하며 type: tls 필드의 지정된 Kafka 리소스에 있습니다.

3.5. Kafka 스토리지에 대한 OAuth 인증 구성

AMQ Streams에서 Kafka 기반 스토리지를 사용하는 경우 Apicurio Registry는 OAuth 인증이 필요한 Kafka 클러스터에 액세스할 수 있도록 지원합니다. 이 지원을 활성화하려면 Apicurio 레지스트리 배포에서 일부 환경 변수를 설정해야 합니다.

이러한 환경 변수를 설정하면 Apicurio Registry의 Kafka 생산자 및 소비자 애플리케이션은 이 구성을 사용하여 OAuth를 통해 Kafka 클러스터에 인증합니다.

사전 요구 사항

프로세스

  • Apicurio 레지스트리 배포에서 다음 환경 변수를 설정합니다.

    환경 변수설명기본값

    ENABLE_KAFKA_SASL

    Kafka에서 Apicurio 레지스트리 스토리지에 대해 SASL OAuth 인증을 활성화합니다. 다른 변수가 적용되려면 이 변수를 true 로 설정해야 합니다.

    false

    CLIENT_ID

    Kafka에 인증하는 데 사용되는 클라이언트 ID입니다.

    -

    CLIENT_SECRET

    Kafka에 인증하는 데 사용되는 클라이언트 시크릿입니다.

    -

    OAUTH_TOKEN_ENDPOINT_URI

    OAuth ID 서버의 URL입니다.

    http://localhost:8090

추가 리소스

4장. PostgreSQL 데이터베이스에 Apicurio 레지스트리 스토리지 배포

이 장에서는 PostgreSQL 데이터베이스에서 Apicurio 레지스트리 데이터 스토리지를 설치, 구성 및 관리하는 방법을 설명합니다.

4.1. OpenShift OperatorHub에서 PostgreSQL 데이터베이스 설치

PostgreSQL 데이터베이스 Operator가 아직 설치되지 않은 경우 OperatorHub에서 OpenShift 클러스터에 PostgreSQL Operator를 설치할 수 있습니다. OperatorHub는 OpenShift Container Platform 웹 콘솔에서 사용할 수 있으며 클러스터 관리자가 Operator를 검색하고 설치할 수 있는 인터페이스를 제공합니다. 자세한 내용은 OperatorHub 이해 를 참조하십시오.

사전 요구 사항

  • OpenShift 클러스터에 대한 클러스터 관리자 액세스 권한이 있어야 합니다.

프로세스

  1. OpenShift Container Platform 웹 콘솔에서 클러스터 관리자 권한이 있는 계정을 사용하여 로그인합니다.
  2. PostgreSQL Operator를 설치할 OpenShift 프로젝트로 변경합니다. 예를 들어 프로젝트 드롭다운에서 my-project 를 선택합니다.
  3. 왼쪽 탐색 메뉴에서 Operator를 클릭한 다음 OperatorHub 를 클릭합니다.
  4. 키워드로 필터링 텍스트 상자에 PostgreSQL 을 입력하여 환경에 적합한 Operator를 찾습니다(예: Crunchy PostgreSQL for OpenShift ).
  5. Operator에 대한 정보를 읽고 설치를 클릭하여 Operator 서브스크립션 페이지를 표시합니다.
  6. 서브스크립션 설정을 선택합니다. 예를 들면 다음과 같습니다.

    • 업데이트 채널:stable
    • 설치 모드:클러스터의 특정 네임스페이스my-project
    • 승인 전략: 자동 또는 수동선택
  7. 설치를 클릭하고 Operator를 사용할 준비가 될 때까지 몇 분 정도 기다립니다.

    중요

    데이터베이스를 생성하고 관리하는 방법에 대한 자세한 내용은 선택한 PostgreSQL Operator에서 문서를 읽어야 합니다.

4.2. OpenShift에서 PostgreSQL 데이터베이스 스토리지를 사용하여 Apicurio 레지스트리 구성

이 섹션에서는 PostgreSQL 데이터베이스 Operator를 사용하여 OpenShift에서 Apicurio Registry용 스토리지를 구성하는 방법을 설명합니다. 환경에 따라 Apicurio Registry를 기존 데이터베이스에 설치하거나 새 데이터베이스를 생성할 수 있습니다. 이 섹션에서는 Dev4Ddevs.com에서 PostgreSQL Operator를 사용하는 간단한 예를 보여줍니다.

사전 요구 사항

프로세스

  1. OpenShift Container Platform 웹 콘솔에서 클러스터 관리자 권한이 있는 계정을 사용하여 로그인합니다.
  2. Apicurio Registry 및 PostgreSQL Operator가 설치된 OpenShift 프로젝트로 변경합니다. 예를 들어 프로젝트 드롭다운에서 my-project 를 선택합니다.
  3. Apicurio 레지스트리 스토리지를 위한 PostgreSQL 데이터베이스를 생성합니다. 예를 들어 설치된 Operator , Dev4Ddevs.com의 PostgreSQL Operator 를 클릭한 다음 데이터베이스 만들기를 클릭합니다.
  4. YAML 을 클릭하고 다음과 같이 데이터베이스 설정을 편집합니다.

    • name: registry로 값 변경
    • image: 값을 centos/postgresql-12-centos7로 변경합니다.
  5. 환경에 따라 필요에 따라 다른 데이터베이스 설정을 편집합니다. 예를 들면 다음과 같습니다.

    Copy to Clipboard Toggle word wrap
    apiVersion: postgresql.dev4devs.com/v1alpha1
    kind: Database
    metadata:
      name: registry
      namespace: my-project
    spec:
      databaseCpu: 30m
      databaseCpuLimit: 60m
      databaseMemoryLimit: 512Mi
      databaseMemoryRequest: 128Mi
      databaseName: example
      databaseNameKeyEnvVar: POSTGRESQL_DATABASE
      databasePassword: postgres
      databasePasswordKeyEnvVar: POSTGRESQL_PASSWORD
      databaseStorageRequest: 1Gi
      databaseUser: postgres
      databaseUserKeyEnvVar: POSTGRESQL_USER
      image: centos/postgresql-12-centos7
      size: 1
  6. 생성을 클릭하고 데이터베이스가 생성될 때까지 기다립니다.
  7. 설치된 Operators > Red Hat Integration - Service Registry > ApicurioRegistry > Create ApicurioRegistry 를 클릭합니다.
  8. 다음 사용자 정의 리소스 정의에 붙여넣고 데이터베이스 URL 및 인증 정보의 값을 환경에 맞게 편집합니다.

    Copy to Clipboard Toggle word wrap
    apiVersion: registry.apicur.io/v1
    kind: ApicurioRegistry
    metadata:
      name: example-apicurioregistry-sql
    spec:
      configuration:
        persistence: 'sql'
        sql:
          dataSource:
            url: 'jdbc:postgresql://<service name>.<namespace>.svc:5432/<database name>'
            # e.g. url: 'jdbc:postgresql://acid-minimal-cluster.my-project.svc:5432/registry'
            userName: 'postgres'
            password: '<password>' # Optional
  9. 생성 을 클릭하고 OpenShift에서 Apicurio 레지스트리 경로가 생성될 때까지 기다립니다.
  10. 네트워킹 > 경로를 클릭하여 Apicurio 레지스트리 웹 콘솔의 새 경로에 액세스합니다. 예를 들면 다음과 같습니다.

    Copy to Clipboard Toggle word wrap
    http://example-apicurioregistry-sql.my-project.my-domain-name.com/

4.3. Apicurio 레지스트리 PostgreSQL 스토리지 백업

PostgreSQL 데이터베이스에서 스토리지를 사용하는 경우 Apicurio Registry에서 저장한 데이터를 정기적으로 백업해야 합니다.

SQL 덤프 는 PostgreSQL 설치와 함께 작동하는 간단한 절차입니다. pg_dump 유틸리티를 사용하여 덤프 당시와 동일한 상태로 데이터베이스를 다시 생성하는 데 사용할 수 있는 SQL 명령으로 파일을 생성합니다.

pg_dump 는 데이터베이스에 액세스할 수 있는 모든 원격 호스트에서 실행할 수 있는 일반 PostgreSQL 클라이언트 애플리케이션입니다. 다른 클라이언트와 마찬가지로 수행할 수 있는 작업은 사용자 권한으로 제한됩니다.

프로세스

  • pg_dump 명령을 사용하여 출력을 파일로 리디렉션합니다.

    Copy to Clipboard Toggle word wrap
     $ pg_dump dbname > dumpfile

    -h 호스트 및 - p 포트 옵션을 사용하여 pg_dump 가 연결되는 데이터베이스 서버를 지정할 수 있습니다.

  • gzip과 같은 압축 도구를 사용하여 대용량 덤프 파일을 줄일 수 있습니다. 예를 들면 다음과 같습니다.

    Copy to Clipboard Toggle word wrap
     $ pg_dump dbname | gzip > filename.gz

추가 리소스

4.4. Apicurio 레지스트리 PostgreSQL 스토리지 복원

psql 유틸리티를 사용하여 pg_dump 에서 생성한 SQL Dump 파일을 복원할 수 있습니다.

사전 요구 사항

프로세스

  1. 다음 명령을 입력하여 데이터베이스를 생성합니다.

    Copy to Clipboard Toggle word wrap
     $ createdb -T template0 dbname
  2. 다음 명령을 입력하여 SQL 덤프를 복원합니다.

    Copy to Clipboard Toggle word wrap
     $ psql dbname < dumpfile
  3. 쿼리 최적화에 유용한 통계가 있도록 각 데이터베이스에서 ANALYZE 를 실행합니다.

5장. Apicurio 레지스트리 배포 보안

Apicurio Registry는 OpenID Connect(OIDC) 및 HTTP 기본 설정에 따라 Red Hat Single Sign-On을 사용하여 인증 및 권한 부여를 제공합니다. Red Hat Single Sign-On Operator를 사용하여 필요한 설정을 자동으로 구성하거나 Red Hat Single Sign-On 및 Apicurio Registry에서 수동으로 설정할 수 있습니다.

또한 Apicurio Registry는 OpenID Connect(OIDC) 및 OAuth 인증 코드 흐름을 기반으로 Microsoft Azure Active Directory를 사용하여 인증 및 권한 부여를 제공합니다. Azure AD 및 Apicurio 레지스트리에서 필요한 설정을 수동으로 구성할 수 있습니다.

Red Hat Single Sign-On 또는 Azure AD의 역할 기반 권한 부여 옵션 외에도 Apicurio Registry는 아티팩트 작성자만 쓰기 권한이 있는 스키마 또는 API 수준에서 콘텐츠 기반 권한 부여를 제공합니다. OpenShift 클러스터 내부 또는 외부에서 Apicurio 레지스트리에 대한 HTTPS 연결을 구성할 수도 있습니다.

이 장에서는 OpenShift에서 Apicurio 레지스트리 배포에 대해 다음 보안 옵션을 구성하는 방법을 설명합니다.

추가 리소스

5.1. Red Hat Single Sign-On Operator를 사용하여 Apicurio Registry 보안

다음 절차에서는 Red Hat Single Sign-On으로 보호되도록 Apicurio Registry REST API 및 웹 콘솔을 구성하는 방법을 보여줍니다.

Apicurio Registry는 다음 사용자 역할을 지원합니다.

표 5.1. Apicurio 레지스트리 사용자 역할
이름capabilities

sr-admin

전체 액세스 권한, 제한 없음.

sr-developer

아티팩트를 생성하고 아티팩트 규칙을 구성합니다. 글로벌 규칙을 수정하거나 가져오기/내보냈거나 /admin REST API 엔드포인트를 사용할 수 없습니다.

SR-readonly

보기 및 검색만 합니다. 아티팩트 또는 규칙을 수정하거나 가져오기/내보냈거나 /admin REST API 엔드포인트를 사용할 수 없습니다.

참고

ApicurioRegistry CRD에는 웹 콘솔을 읽기 전용 모드로 설정하는 데 사용할 수 있는 관련 구성 옵션이 있습니다. 그러나 이 구성은 REST API에 영향을 미치지 않습니다.

사전 요구 사항

  • Apicurio Registry Operator가 이미 설치되어 있어야 합니다.
  • Red Hat Single Sign-On Operator를 설치하거나 OpenShift 클러스터에서 Red Hat Single Sign-On에 액세스할 수 있어야 합니다.
중요

이 절차의 예제 구성은 개발 및 테스트용으로만 사용됩니다. 절차를 간단하게 유지하기 위해 프로덕션 환경에 권장되는 HTTPS 및 기타 방어 기능을 사용하지 않습니다. 자세한 내용은 Red Hat Single Sign-On 설명서를 참조하십시오.

프로세스

  1. OpenShift 웹 콘솔에서 설치된 OperatorRed Hat Single Sign-On Operator 를 클릭한 다음 Keycloak 탭을 클릭합니다.
  2. Apicurio 레지스트리 배포 보안을 위해 Create Keycloak 을 클릭하여 새 Red Hat Single Sign-On 인스턴스를 프로비저닝합니다. 예를 들어 기본값을 사용할 수 있습니다.

    Copy to Clipboard Toggle word wrap
    apiVersion: keycloak.org/v1alpha1
    kind: Keycloak
    metadata:
      name: example-keycloak
      labels:
        app: sso
    spec:
      instances: 1
      externalAccess:
        enabled: True
      podDisruptionBudget:
        enabled: True
  3. 인스턴스가 생성될 때까지 기다린 다음 Networking 을 클릭한 다음 Routes 를 클릭하여 keycloak 인스턴스의 새 경로에 액세스합니다.
  4. 위치 URL을 클릭하고 Apicurio Registry를 배포할 때 나중에 사용할 수 있도록 표시된 URL 값을 복사합니다.
  5. 설치된 OperatorRed Hat Single Sign-On Operator 를 클릭하고 Keycloak 을 클릭한 다음 Keycloak 만들기를 클릭하여 레지스트리 예제 영역을 생성합니다.

    Copy to Clipboard Toggle word wrap
    apiVersion: keycloak.org/v1alpha1
    kind: KeycloakRealm
    metadata:
      name: registry-keycloakrealm
      labels:
        app: sso
    spec:
      instanceSelector:
        matchLabels:
          app: sso
      realm:
        displayName: Registry
        enabled: true
        id: registry
        realm: registry
        sslRequired: none
        roles:
          realm:
            - name: sr-admin
            - name: sr-developer
            - name: sr-readonly
        clients:
          - clientId: registry-client-ui
            implicitFlowEnabled: true
            redirectUris:
              - '*'
            standardFlowEnabled: true
            webOrigins:
              - '*'
            publicClient: true
          - clientId: registry-client-api
            implicitFlowEnabled: true
            redirectUris:
              - '*'
            standardFlowEnabled: true
            webOrigins:
              - '*'
            publicClient: true
        users:
          - credentials:
              - temporary: false
                type: password
                value: changeme
            enabled: true
            realmRoles:
              - sr-admin
            username: registry-admin
          - credentials:
              - temporary: false
                type: password
                value: changeme
            enabled: true
            realmRoles:
              - sr-developer
            username: registry-developer
          - credentials:
              - temporary: false
                type: password
                value: changeme
            enabled: true
            realmRoles:
              - sr-readonly
            username: registry-user
    중요

    프로덕션에 배포하는 경우 환경에 적합한 값으로 이 KeycloakRealm 리소스를 사용자 지정해야 합니다. Red Hat Single Sign-On 웹 콘솔을 사용하여 영역을 생성하고 관리할 수도 있습니다.

  6. 클러스터에 유효한 HTTPS 인증서가 구성되지 않은 경우 임시 해결 방법으로 다음 HTTP ServiceIngress 리소스를 생성할 수 있습니다.

    1. 네트워킹서비스를 클릭하고 다음 예제를 사용하여 서비스 생성 을 클릭합니다.

      Copy to Clipboard Toggle word wrap
      apiVersion: v1
      kind: Service
      metadata:
        name: keycloak-http
        labels:
          app: keycloak
      spec:
        ports:
          - name: keycloak-http
            protocol: TCP
            port: 8080
            targetPort: 8080
        selector:
          app: keycloak
          component: keycloak
        type: ClusterIP
        sessionAffinity: None
      status:
        loadBalancer: {}
    2. 네트워킹을 클릭한 다음 Ingress 를 클릭하고 다음 예제를 사용하여 Ingress 생성 을 클릭합니다.

      Copy to Clipboard Toggle word wrap
      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: keycloak-http
        labels:
          app: keycloak
      spec:
        rules:
          - host: KEYCLOAK_HTTP_HOST
            http:
              paths:
                - path: /
                  pathType: ImplementationSpecific
                  backend:
                    service:
                      name: keycloak-http
                      port:
                        number: 8080

      호스트 값을 수정하여 Apicurio Registry 사용자에게 액세스할 수 있는 경로를 생성하고 Red Hat Single Sign-On Operator에서 생성한 HTTPS 경로 대신 사용합니다.

  7. Apicurio Registry Operator 를 클릭하고 ApicurioRegistry 탭에서 다음 예제를 사용하여 ApicurioRegistry 만들기 를 클릭하고 keycloak 섹션의 값을 바꿉니다.

    Copy to Clipboard Toggle word wrap
    apiVersion: registry.apicur.io/v1
    kind: ApicurioRegistry
    metadata:
      name: example-apicurioregistry-kafkasql-keycloak
    spec:
      configuration:
        security:
          keycloak:
            url: "http://keycloak-http-<namespace>.apps.<cluster host>"
            # ^ Required
            # Use an HTTP URL in development.
            realm: "registry"
            # apiClientId: "registry-client-api"
            # ^ Optional (default value)
            # uiClientId: "registry-client-ui"
            # ^ Optional (default value)
        persistence: 'kafkasql'
        kafkasql:
          bootstrapServers: '<my-cluster>-kafka-bootstrap.<my-namespace>.svc:9092'

5.2. Red Hat Single Sign-On을 사용하여 Apicurio 레지스트리 인증 및 권한 부여 구성

이 섹션에서는 Apicurio Registry 및 Red Hat Single Sign-On에 대한 인증 및 권한 부여 옵션을 수동으로 구성하는 방법을 설명합니다.

참고

또는 이러한 설정을 자동으로 구성하는 방법에 대한 자세한 내용은 5.1절. “Red Hat Single Sign-On Operator를 사용하여 Apicurio Registry 보안” 을 참조하십시오.

Apicurio 레지스트리 웹 콘솔 및 코어 REST API는 OAuth 및 OpenID Connect(OIDC)를 기반으로 하는 Red Hat Single Sign-On에서 인증을 지원합니다. 동일한 Red Hat Single Sign-On 영역과 사용자는 OpenID Connect를 사용하여 Apicurio Registry 웹 콘솔과 코어 REST API 전반에 통합되므로 하나의 인증 정보만 필요합니다.

Apicurio Registry는 기본 admin, write, 읽기 전용 사용자 역할에 대한 역할 기반 권한을 제공합니다. Apicurio Registry는 레지스트리 아티팩트의 작성자만 업데이트하거나 삭제할 수 있는 스키마 또는 API 수준에서 콘텐츠 기반 권한을 제공합니다. Apicurio 레지스트리 인증 및 권한 부여 설정은 기본적으로 비활성화되어 있습니다.

사전 요구 사항

프로세스

  1. Red Hat Single Sign-On 관리 콘솔에서 Apicurio Registry를 위한 Red Hat Single Sign-On 영역을 생성합니다. 기본적으로 Apicurio Registry에는 레지스트리 의 영역 이름이 필요합니다. 영역 생성에 대한 자세한 내용은 Red Hat Single Sign-On 사용자 설명서를 참조하십시오.
  2. Apicurio 레지스트리 API에 대한 Red Hat Single Sign-On 클라이언트를 생성합니다. 기본적으로 Apicurio Registry에는 다음과 같은 설정이 필요합니다.

    • 클라이언트 ID:registry-api
    • 클라이언트 프로토콜:openid-connect
    • 액세스 유형:베어러 전용

      다른 클라이언트 설정에 기본값을 사용할 수 있습니다.

      참고

      Red Hat Single Sign-On 서비스 계정을 사용하는 경우 전달자 전용 대신 클라이언트 액세스 유형을 기밀로 유지해야 합니다.

  3. Apicurio 레지스트리 웹 콘솔용 Red Hat Single Sign-On 클라이언트를 생성합니다. 기본적으로 Apicurio Registry에는 다음과 같은 설정이 필요합니다.

    • 클라이언트 ID:apicurio-registry
    • 클라이언트 프로토콜:openid-connect
    • 액세스 유형:public
    • 유효한 리디렉션 URL:http://my-registry-url:8080/*
    • 웹 출처:+

      다른 클라이언트 설정에 기본값을 사용할 수 있습니다.

  4. OpenShift의 Apicurio Registry 배포에서 다음 Apicurio Registry 환경 변수를 설정하여 Red Hat Single Sign-On을 사용하여 인증을 구성합니다.

    표 5.2. Red Hat Single Sign-On을 사용한 Apicurio 레지스트리 인증 구성
    환경 변수설명유형기본

    AUTH_ENABLED

    Apicurio 레지스트리에 대한 인증을 활성화합니다. true 로 설정하면 Red Hat Single Sign-On을 사용한 인증에 적용되는 환경 변수가 필요합니다.

    문자열

    false

    KEYCLOAK_URL

    Red Hat Single Sign-On 인증 서버의 URL입니다. 예: http://localhost:8080.

    문자열

    -

    KEYCLOAK_REALM

    인증을 위한 Red Hat Single Sign-On 영역. 예: registry.

    문자열

    -

    KEYCLOAK_API_CLIENT_ID

    Apicurio 레지스트리 REST API의 클라이언트 ID입니다.

    문자열

    registry-api

    KEYCLOAK_UI_CLIENT_ID

    Apicurio 레지스트리 웹 콘솔의 클라이언트 ID입니다.

    문자열

    apicurio-registry

    작은 정보

    OpenShift에서 환경 변수를 설정하는 예는 6.1절. “OpenShift에서 Apicurio 레지스트리 상태 점검 구성” 을 참조하십시오.

  5. Red Hat Single Sign-On에서 Apicurio Registry 사용자 역할을 활성화하려면 다음 옵션을 true 로 설정합니다.

    표 5.3. Apicurio 레지스트리 역할 기반 권한 부여 구성
    환경 변수Java 시스템 속성유형기본값

    ROLE_BASED_AUTHZ_ENABLED

    registry.auth.role-based-authorization

    부울

    false

  6. Apicurio Registry 사용자 역할이 활성화되면 Red Hat Single Sign-On 영역에서 다음 기본 사용자 역할 중 하나 이상에 Apicurio Registry 사용자를 할당해야 합니다.

    표 5.4. 레지스트리 인증 및 권한 부여를 위한 기본 사용자 역할
    Role아티팩트 읽기아티팩트 작성글로벌 규칙요약

    sr-admin

    제공됨

    제공됨

    제공됨

    모든 생성, 읽기, 업데이트 및 삭제 작업에 대한 전체 액세스 권한

    sr-developer

    제공됨

    제공됨

    없음

    글로벌 규칙 구성을 제외하고 생성, 읽기, 업데이트 및 삭제 작업에 대한 액세스 권한이 있어야 합니다. 이 역할은 아티팩트별 규칙을 구성할 수 있습니다.

    SR-readonly

    제공됨

    없음

    없음

    읽기 및 검색 작업만 액세스할 수 있습니다. 이 역할은 규칙을 구성할 수 없습니다.

  7. Apicurio Registry의 스키마 및 API 아티팩트 업데이트에 대한 소유자 전용 권한을 활성화하려면 다음을 true 로 설정합니다.

    표 5.5. 소유자 전용 권한 부여 구성
    환경 변수Java 시스템 속성유형기본값

    REGISTRY_AUTH_OBAC_ENABLED

    registry.auth.owner-only-authorization

    부울

    false

추가 리소스

5.3. Microsoft Azure Active Directory를 사용하여 Apicurio 레지스트리 인증 및 권한 부여 구성

이 섹션에서는 Apicurio Registry 및 Microsoft Azure Active Directory (Azure AD)에 대한 인증 및 권한 부여 옵션을 수동으로 구성하는 방법을 설명합니다.

Apicurio 레지스트리 웹 콘솔 및 코어 REST API는 OpenID Connect(OIDC) 및 OAuth 인증 코드 흐름을 기반으로 Azure AD에서 인증을 지원합니다. Apicurio Registry는 기본 admin, write, 읽기 전용 사용자 역할에 대한 역할 기반 권한을 제공합니다. Apicurio 레지스트리 인증 및 권한 부여 설정은 기본적으로 비활성화되어 있습니다.

Azure AD를 사용하여 Apicurio 레지스트리를 보호하려면 특정 구성이 포함된 Azure AD의 유효한 디렉터리가 필요합니다. 여기에는 권장되는 설정으로 Azure AD 포털에서 Apicurio Registry 애플리케이션을 등록하고 Apicurio Registry에서 환경 변수를 구성해야 합니다.

사전 요구 사항

프로세스

  1. 이메일 주소 또는 GitHub 계정을 사용하여 Azure AD 포털에 로그인합니다.
  2. 탐색 메뉴에서 관리 > 앱 등록 > 새 등록 을 선택하고 다음 설정을 완료합니다.In the navigation menu, select Manage > App registrations > New registration, and complete the following settings:

    • Name: 애플리케이션 이름을 입력합니다. 예: apicurio-registry-example
    • 지원되는 계정 유형: 조직 디렉터리의 계정을 클릭합니다.
    • URI 리디렉션: 목록에서 단일 페이지 애플리케이션을 선택하고 Apicurio Registry 웹 콘솔 애플리케이션 호스트를 입력합니다. 예: https://test-registry.com/ui/

      중요

      Apicurio 레지스트리 애플리케이션 호스트를 리디렉션 URI 로 등록해야 합니다. 로그인할 때 사용자는 인증을 위해 Apicurio Registry에서 Azure AD로 리디렉션되고 나중에 애플리케이션에 다시 보내려고 합니다. Azure AD는 등록되지 않은 리디렉션 URL을 허용하지 않습니다.

  3. 등록을 클릭합니다. Manage > App registrations > apicurio-registry-example 을 선택하여 앱 등록 세부 정보를 볼 수 있습니다.
  4. 관리 > 인증을 선택하고 애플리케이션이 다음과 같이 리디렉션 URL 및 토큰으로 구성되어 있는지 확인합니다.

    • 리디렉션 URI: 예: https://test-registry.com/ui/
    • 암시적 부여 및 하이브리드 흐름: ID 토큰을 클릭합니다(Implicit및 하이브리드 흐름에 사용됨)
  5. Azure AD > Admin > App registrations > your app > Application (client) ID 를 선택합니다. 예: 123456a7-b8c9-012d-e3f4-5fg67h8i901
  6. Azure AD > Admin > App registrations > your app > Directory (tenant) ID 를 선택합니다. 예: https://login.microsoftonline.com/1a2bc34d-567e-89f1-g0hi-1j2kl3m4no56/v2.0
  7. Apicurio 레지스트리에서 Azure AD 설정을 사용하여 다음 환경 변수를 구성합니다.

    표 5.6. Apicurio 레지스트리의 Azure AD 설정 구성
    환경 변수설명설정

    KEYCLOAK_API_CLIENT_ID

    Apicurio Registry REST API의 클라이언트 애플리케이션 ID

    5단계에서 가져온 Azure AD 애플리케이션(클라이언트) ID입니다. 예: 123456a7-b8c9-012d-e3f4-5fg67h8i901

    REGISTRY_OIDC_UI_CLIENT_ID

    Apicurio 레지스트리 웹 콘솔의 클라이언트 애플리케이션 ID입니다.

    5단계에서 가져온 Azure AD 애플리케이션(클라이언트) ID입니다. 예: 123456a7-b8c9-012d-e3f4-5fg67h8i901

    REGISTRY_AUTH_URL_CONFIGURED

    Azure AD의 인증을 위한 URL입니다.

    6단계에서 가져온 Azure AD 애플리케이션(테넌트) ID입니다. 예: https://login.microsoftonline.com/1a2bc34d-567e-89f1-g0hi-1j2kl3m4no56/v2.0.

  8. Apicurio Registry에서 Apicurio 레지스트리별 설정에 대해 다음 환경 변수를 구성합니다.

    표 5.7. Apicurio 레지스트리별 설정 구성
    환경 변수설명설정

    REGISTRY_AUTH_ENABLED

    Apicurio 레지스트리에 대한 인증을 활성화합니다.

    true

    REGISTRY_UI_AUTH_TYPE

    Apicurio 레지스트리 인증 유형입니다.

    OIDC

    CORS_ALLOWED_ORIGINS

    CORS(Cross-origin resource sharing)를 위한 Apicurio 레지스트리 배포를 위한 호스트입니다.

    예: https://test-registry.com

    REGISTRY_OIDC_UI_REDIRECT_URL

    Apicurio 레지스트리 웹 콘솔의 호스트입니다.

    예: https://test-registry.com/ui

    ROLE_BASED_AUTHZ_ENABLED

    Apicurio Registry에서 역할 기반 인증을 활성화합니다.

    true

    QUARKUS_OIDC_ROLES_ROLE_CLAIM_PATH

    Azure AD가 역할을 저장하는 클레임의 이름입니다.

    역할

    참고

    Apicurio 레지스트리에서 역할을 활성화하면 Azure AD에서 애플리케이션 역할과 동일한 역할을 생성해야 합니다. Apicurio Registry에서 예상되는 기본 역할은 sr-admin,sr-developer, sr-readonly 입니다.

추가 리소스

5.4. Apicurio 레지스트리 인증 및 권한 부여 구성 옵션

Apicurio Registry는 Red Hat Single Sign-On 및 HTTP 기본 인증을 사용하여 OpenID Connect에 대한 인증 옵션을 제공합니다.

Apicurio Registry는 역할 기반 및 콘텐츠 기반 접근 방식에 대한 권한 부여 옵션을 제공합니다.

  • 기본 admin, 쓰기 및 읽기 전용 사용자 역할에 대한 역할 기반 권한 부여입니다.
  • 아티팩트 또는 아티팩트 그룹의 소유자만 업데이트하거나 삭제할 수 있는 스키마 또는 API 아티팩트에 대한 콘텐츠 기반 권한 부여입니다.
중요

Apicurio 레지스트리의 모든 인증 및 권한 부여 옵션은 기본적으로 비활성화되어 있습니다. 이러한 옵션을 활성화하기 전에 먼저 AUTH_ENABLED 옵션을 true 로 설정해야 합니다.

이 장에서는 다음 구성 옵션에 대해 자세히 설명합니다.

Red Hat Single Sign-On과 OpenID Connect를 사용하여 Apicurio 레지스트리 인증

다음 환경 변수를 설정하여 Red Hat Single Sign-On을 사용하여 Apicurio 레지스트리 웹 콘솔 및 API에 대한 인증을 구성할 수 있습니다.

표 5.8. Red Hat Single Sign-On을 사용한 Apicurio 레지스트리 인증 구성
환경 변수설명유형기본

AUTH_ENABLED

Apicurio 레지스트리에 대한 인증을 활성화합니다. true 로 설정하면 Red Hat Single Sign-On을 사용한 인증에 적용되는 환경 변수가 필요합니다.

문자열

false

KEYCLOAK_URL

Red Hat Single Sign-On 인증 서버의 URL입니다. 예: http://localhost:8080.

문자열

-

KEYCLOAK_REALM

인증을 위한 Red Hat Single Sign-On 영역. 예: registry.

문자열

-

KEYCLOAK_API_CLIENT_ID

Apicurio 레지스트리 REST API의 클라이언트 ID입니다.

문자열

registry-api

KEYCLOAK_UI_CLIENT_ID

Apicurio 레지스트리 웹 콘솔의 클라이언트 ID입니다.

문자열

apicurio-registry

HTTP 기본 설정을 사용하여 Apicurio 레지스트리 인증

기본적으로 Apicurio Registry는 OpenID Connect를 사용하여 인증을 지원합니다. 사용자 또는 API 클라이언트는 Apicurio Registry REST API에 대한 인증된 호출을 수행하기 위해 액세스 토큰을 가져와야 합니다. 그러나 일부 툴이 OpenID Connect를 지원하지 않기 때문에 다음 구성 옵션을 true 로 설정하여 HTTP 기본 인증을 지원하도록 Apicurio Registry를 구성할 수도 있습니다.

표 5.9. Apicurio 레지스트리 HTTP 기본 인증 구성
환경 변수Java 시스템 속성유형기본값

AUTH_ENABLED

registry.auth.enabled

부울

false

CLIENT_CREDENTIALS_BASIC_AUTH_ENABLED

registry.auth.basic-auth-client-credentials.enabled

부울

false

Apicurio Registry HTTP 기본 클라이언트 인증 정보 캐시 만료

HTTP 기본 클라이언트 인증 정보 캐시 만료 시간을 구성할 수도 있습니다. 기본적으로 HTTP 기본 인증을 사용할 때 Apicurio Registry는 JWT 토큰을 캐시하고 필요하지 않은 경우 새 토큰을 발행하지 않습니다. 기본적으로 10분으로 설정된 JWT 토큰의 캐시 만료 시간을 구성할 수 있습니다.

Red Hat Single Sign-On을 사용하는 경우 이 구성을 Red Hat Single Sign-On JWT 만료 시간으로 1분으로 설정하는 것이 가장 좋습니다. 예를 들어 Red Hat Single Sign-On에서 만료 시간이 5 분으로 설정된 경우 다음 설정 옵션을 4 분으로 설정해야 합니다.

표 5.10. HTTP 기본 클라이언트 인증 정보 캐시 만료 구성
환경 변수Java 시스템 속성유형기본값

CLIENT_CREDENTIALS_BASIC_CACHE_EXPIRATION

registry.auth.basic-auth-client-credentials.cache-expiration

정수

10

Apicurio 레지스트리 역할 기반 권한 부여

다음 옵션을 true 로 설정하여 Apicurio Registry에서 역할 기반 인증을 활성화할 수 있습니다.

표 5.11. Apicurio 레지스트리 역할 기반 권한 부여 구성
환경 변수Java 시스템 속성유형기본값

AUTH_ENABLED

registry.auth.enabled

부울

false

ROLE_BASED_AUTHZ_ENABLED

registry.auth.role-based-authorization

부울

false

그런 다음 사용자의 인증 토큰에 포함된 역할을 사용하거나(예: Red Hat Single Sign-On을 사용하여 인증할 때 부여됨) Apicurio Registry에서 내부적으로 관리하는 역할 매핑을 사용하도록 역할 기반 권한을 구성할 수 있습니다.

Red Hat Single Sign-On에서 할당된 역할 사용

Red Hat Single Sign-On에서 할당한 역할을 사용하여 활성화하려면 다음 환경 변수를 설정합니다.

표 5.12. Red Hat Single Sign-On을 사용하여 Apicurio Registry 역할 기반 권한 부여 구성
환경 변수설명유형기본

ROLE_BASED_AUTHZ_SOURCE

토큰으로 설정하면 사용자 역할이 인증 토큰에서 가져옵니다.

문자열

token

REGISTRY_AUTH_ROLES_ADMIN

사용자가 관리자임을 나타내는 역할의 이름입니다.

문자열

SR-admin

REGISTRY_AUTH_ROLES_DEVELOPER

사용자가 개발자임을 나타내는 역할의 이름입니다.

문자열

sr-developer

REGISTRY_AUTH_ROLES_READONLY

사용자에게 읽기 전용 액세스 권한을 나타내는 역할의 이름입니다.

문자열

sr-readonly

Red Hat Single Sign-On의 역할을 사용하도록 Apicurio Registry가 구성된 경우 Red Hat Single Sign-On에서 다음 사용자 역할 중 하나 이상에 Apicurio Registry 사용자를 할당해야 합니다. 그러나 표 5.12. “Red Hat Single Sign-On을 사용하여 Apicurio Registry 역할 기반 권한 부여 구성” 의 환경 변수를 사용하여 다른 사용자 역할 이름을 구성할 수 있습니다.

표 5.13. 인증 및 권한 부여를 위한 Apicurio 레지스트리 역할
역할 이름아티팩트 읽기아티팩트 작성글로벌 규칙설명

SR-admin

제공됨

제공됨

제공됨

모든 생성, 읽기, 업데이트 및 삭제 작업에 대한 전체 액세스 권한

sr-developer

제공됨

제공됨

없음

글로벌 규칙 및 가져오기/내보냄을 구성하는 것을 제외하고 생성, 읽기, 업데이트 및 삭제 작업에 대한 액세스 권한이 있어야 합니다. 이 역할은 아티팩트별 규칙만 구성할 수 있습니다.

sr-readonly

제공됨

없음

없음

읽기 및 검색 작업만 액세스할 수 있습니다. 이 역할은 규칙을 구성할 수 없습니다.

Apicurio 레지스트리에서 직접 역할 관리

Apicurio Registry에서 내부적으로 관리하는 역할을 사용하려면 다음 환경 변수를 설정합니다.

표 5.14. 내부 역할 매핑을 사용하여 Apicurio 레지스트리 역할 기반 권한 부여 구성
환경 변수설명유형기본

ROLE_BASED_AUTHZ_SOURCE

application 로 설정하면 사용자 역할은 Apicurio Registry에서 내부적으로 관리합니다.

문자열

token

내부적으로 관리되는 역할 매핑을 사용하는 경우 Apicurio Registry REST API에서 /admin/roleMappings 끝점을 사용하여 역할을 할당할 수 있습니다. 자세한 내용은 Apicurio Registry REST API 설명서를 참조하십시오.

사용자에게 ADMIN,DEVELOPER 또는 READ_ONLY 라는 역할이 정확히 하나만 부여될 수 있습니다. 관리자 권한이 있는 사용자만 다른 사용자에게 액세스 권한을 부여할 수 있습니다.

Apicurio 레지스트리 관리자-override 구성

Apicurio 레지스트리에 기본 관리자 사용자가 없으므로 일반적으로 사용자가 관리자로 식별할 수 있는 다른 방법을 구성하는 것이 도움이 됩니다. 다음 환경 변수를 사용하여 admin-override 기능을 구성할 수 있습니다.

표 5.15. Apicurio 레지스트리 관리자-override 구성
환경 변수설명유형기본

REGISTRY_AUTH_ADMIN_OVERRIDE_ENABLED

admin-override 기능을 활성화합니다.

문자열

false

REGISTRY_AUTH_ADMIN_OVERRIDE_FROM

관리자 덮어쓰기 정보는 어디에서 찾을 수 있습니까. 현재 토큰 만 지원됩니다.

문자열

token

REGISTRY_AUTH_ADMIN_OVERRIDE_TYPE

사용자가 관리자인지 확인하는 데 사용되는 정보 유형입니다. 값은 FROM이 토큰 인 경우 역할 또는 클레임 과 같은 FROM 변수의 값에 따라 달라집니다.

문자열

role

REGISTRY_AUTH_ADMIN_OVERRIDE_ROLE

사용자가 관리자임을 나타내는 역할의 이름입니다.

문자열

SR-admin

REGISTRY_AUTH_ADMIN_OVERRIDE_CLAIM

admin-override를 결정하는 데 사용할 JWT 토큰 클레임의 이름입니다.

문자열

org-admin

REGISTRY_AUTH_ADMIN_OVERRIDE_CLAIM_VALUE

CLAIM 변수에 표시된 JWT 토큰 클레임 값은 사용자에게 admin-override를 부여하기 위한 값이어야 합니다.

문자열

true

예를 들어 이 관리자 덮어쓰기 기능을 사용하여 Red Hat Single Sign-On의 단일 사용자에게 sr-admin 역할을 할당하여 해당 사용자에게 admin 역할을 부여할 수 있습니다. 그러면 해당 사용자는 /admin/roleMappings REST API(또는 관련 UI)를 사용하여 추가 사용자(추가 관리자 포함)에 역할을 부여할 수 있습니다.

Apicurio 레지스트리 소유자 전용 권한 부여

다음 옵션을 true 로 설정하여 Apicurio Registry의 아티팩트 또는 아티팩트 그룹에 대한 소유자 전용 권한을 활성화할 수 있습니다.

표 5.16. 소유자 전용 권한 부여 구성
환경 변수Java 시스템 속성유형기본값

AUTH_ENABLED

registry.auth.enabled

부울

false

REGISTRY_AUTH_OBAC_ENABLED

registry.auth.owner-only-authorization

부울

false

REGISTRY_AUTH_OBAC_LIMIT_GROUP_ACCESS

registry.auth.owner-only-authorization.limit-group-access

부울

false

소유자 전용 권한 부여가 활성화된 경우 아티팩트를 생성한 사용자만 해당 아티팩트를 수정하거나 삭제할 수 있습니다.

소유자 전용 권한 부여 및 그룹 소유자 전용 권한 부여가 모두 활성화된 경우 아티팩트 그룹을 생성한 사용자만 해당 아티팩트 그룹에 대한 쓰기 액세스 권한(예: 해당 그룹에서 아티팩트를 추가 또는 제거)에 액세스할 수 있습니다.

Apicurio 레지스트리 인증 읽기 액세스

인증된 읽기 액세스 옵션이 활성화되면 Apicurio Registry는 사용자 역할에 관계없이 동일한 조직의 인증된 사용자의 요청에 대해 최소한 읽기 전용 액세스 권한을 부여합니다.

인증된 읽기 액세스를 활성화하려면 먼저 역할 기반 인증을 활성화한 다음 다음 옵션이 true 로 설정되어 있는지 확인해야 합니다.

표 5.17. 인증된 읽기 액세스 구성
환경 변수Java 시스템 속성유형기본값

AUTH_ENABLED

registry.auth.enabled

부울

false

REGISTRY_AUTH_AUTHENTICATED_READS_ENABLED

registry.auth.authenticated-read-access.enabled

부울

false

자세한 내용은 “Apicurio 레지스트리 역할 기반 권한 부여” 에서 참조하십시오.

Apicurio 레지스트리 익명 읽기 전용 액세스

Apicurio Registry는 두 가지 주요 권한 부여 유형(역할 기반 및 소유자 기반 권한 부여) 외에도 익명 읽기 전용 액세스 옵션을 지원합니다.

인증 자격 증명이 없는 REST API 호출과 같은 익명 사용자를 허용하려면 REST API에 대한 읽기 전용 호출을 수행하려면 다음 옵션을 true 로 설정합니다.

표 5.18. 익명 읽기 전용 액세스에 대한 구성
환경 변수Java 시스템 속성유형기본값

AUTH_ENABLED

registry.auth.enabled

부울

false

REGISTRY_AUTH_ANONYMOUS_READ_ACCESS_ENABLED

registry.auth.anonymous-read-access.enabled

부울

false

추가 리소스

5.5. OpenShift 클러스터 내부에서 Apicurio 레지스트리에 대한 HTTPS 연결 구성

다음 절차에서는 OpenShift 클러스터 내부에서 HTTPS 연결에 대한 포트를 노출하도록 Apicurio Registry 배포를 구성하는 방법을 보여줍니다.

주의

이러한 종류의 연결은 클러스터 외부에서 직접 사용할 수 없습니다. 라우팅은 HTTPS 연결의 경우 인코딩되는 호스트 이름을 기반으로 합니다. 따라서 엣지 종료 또는 기타 구성이 필요합니다. 5.6절. “OpenShift 클러스터 외부에서 Apicurio 레지스트리에 대한 HTTPS 연결 구성”을 참조하십시오.

사전 요구 사항

  • Apicurio Registry Operator가 이미 설치되어 있어야 합니다.

프로세스

  1. 자체 서명된 인증서를 사용하여 키 저장소를 생성합니다. 자체 인증서를 사용하는 경우 이 단계를 건너뛸 수 있습니다.

    Copy to Clipboard Toggle word wrap
    openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout tls.key -out tls.crt
  2. 인증서 및 개인 키를 저장할 새 보안을 생성합니다.

    1. OpenShift 웹 콘솔의 왼쪽 탐색 메뉴에서 워크로드 > 시크릿 > Create Key/Value Secret 을 클릭합니다.
    2. 다음 값을 사용합니다.
      Name: https-cert-secret
      키 1: tls.key
      값 1: tls.key (uploaded file)
      키 2: tls.crt
      값 2: tls.crt (uploaded file)

    또는 다음 명령을 사용하여 시크릿을 생성합니다.

    Copy to Clipboard Toggle word wrap
    oc create secret generic https-cert-secret --from-file=tls.key --from-file=tls.crt
  3. Apicurio Registry 배포를 위해 ApicurioRegistry CR의 spec.configuration.security.https 섹션을 편집합니다. 예를 들면 다음과 같습니다.

    Copy to Clipboard Toggle word wrap
    apiVersion: registry.apicur.io/v1
    kind: ApicurioRegistry
    metadata:
      name: example-apicurioregistry
    spec:
      configuration:
        # ...
        security:
          https:
            secretName: https-cert-secret
  4. 연결이 작동하는지 확인합니다.

    1. SSH를 사용하여 클러스터의 Pod에 연결합니다(Apicurio 레지스트리 Pod를 사용할 수 있음).

      Copy to Clipboard Toggle word wrap
      oc rsh example-apicurioregistry-deployment-6f788db977-2wzpw
    2. 서비스 리소스에서 Apicurio 레지스트리 Pod의 클러스터 IP를 찾습니다(웹 콘솔의 위치 열 참조). 이후 테스트 요청을 실행합니다. 자체 서명된 인증서를 사용하므로 비보안 플래그가 필요합니다.

      Copy to Clipboard Toggle word wrap
      curl -k https://172.30.230.78:8443/health
참고

HTTPS 인증서 및 키가 포함된 Kubernetes 시크릿에서 제공된 값에 tls.crttls.key 이름을 사용해야 합니다. 현재 구성 불가능합니다.

HTTP 비활성화

이 섹션의 절차를 사용하여 HTTPS를 활성화한 경우 spec.security.https.disableHttptrue 로 설정하여 기본 HTTP 연결을 비활성화할 수도 있습니다. 이렇게 하면 Apicurio 레지스트리 Pod 컨테이너, 서비스NetworkPolicy (있는 경우)에서 HTTP 포트 8080이 제거됩니다.

중요한 것은 Apicurio Registry Operator가 현재 Ingress 에서 HTTPS 구성을 지원하지 않기 때문에 Ingress 도 제거됩니다. 사용자는 HTTPS 연결에 대한 Ingress 를 수동으로 생성해야 합니다.

5.6. OpenShift 클러스터 외부에서 Apicurio 레지스트리에 대한 HTTPS 연결 구성

다음 절차에서는 OpenShift 클러스터 외부의 연결에 대한 HTTPS 에지 종료 경로를 노출하도록 Apicurio Registry 배포를 구성하는 방법을 보여줍니다.

사전 요구 사항

프로세스

  1. Apicurio Registry Operator가 생성한 HTTP 경로 외에 두 번째 경로를 추가합니다. 예를 들면 다음과 같습니다.

    Copy to Clipboard Toggle word wrap
    kind: Route
    apiVersion: route.openshift.io/v1
    metadata:
      [...]
      labels:
        app: example-apicurioregistry
        [...]
    spec:
      host: example-apicurioregistry-default.apps.example.com
      to:
        kind: Service
        name: example-apicurioregistry-service-9whd7
        weight: 100
      port:
        targetPort: 8080
      tls:
        termination: edge
        insecureEdgeTerminationPolicy: Redirect
      wildcardPolicy: None
    참고

    insecureEdgeTerminationPolicy: Redirect 구성 속성이 설정되어 있는지 확인합니다.

    인증서를 지정하지 않으면 OpenShift에서 기본값을 사용합니다. 또는 다음 명령을 사용하여 사용자 정의 자체 서명 인증서를 생성할 수 있습니다.

    Copy to Clipboard Toggle word wrap
    openssl genrsa 2048 > tls.key &&
    openssl req -new -x509 -nodes -sha256 -days 365 -key tls.key -out tls.crt

    그런 다음 OpenShift CLI를 사용하여 경로를 생성합니다.

    Copy to Clipboard Toggle word wrap
    oc create route edge \
      --service=example-apicurioregistry-service-9whd7 \
      --cert=tls.crt --key=tls.key \
      --hostname=example-apicurioregistry-default.apps.example.com \
      --insecure-policy=Redirect \
      -n default

6장. Apicurio 레지스트리 배포 구성 및 관리

이 장에서는 OpenShift에서 Apicurio 레지스트리 배포의 선택적 설정을 구성하고 관리하는 방법을 설명합니다.

6.1. OpenShift에서 Apicurio 레지스트리 상태 점검 구성

OpenShift에서 Apicurio 레지스트리 서버의 상태를 모니터링하도록 활성 및 준비 상태 프로브에 대한 선택적 환경 변수를 구성할 수 있습니다.

  • 활성 프로브 는 애플리케이션을 진행할 수 있는지 테스트합니다. 애플리케이션을 진행할 수 없는 경우 OpenShift는 실패한 포드를 자동으로 다시 시작합니다.
  • 준비 상태 프로브 는 애플리케이션이 요청을 처리할 준비가 되었는지 테스트합니다. 애플리케이션이 준비되지 않은 경우 요청에 의해 압도될 수 있으며 OpenShift는 프로브가 실패하는 시간에 대한 요청 전송을 중지합니다. 다른 Pod가 확인되면 계속 요청을 수신합니다.
중요

liveness 및 readiness 환경 변수의 기본값은 대부분의 경우 설계되며 환경에 필요한 경우에만 변경해야 합니다. 기본값에 대한 모든 변경 사항은 저장된 하드웨어, 네트워크 및 용량에 따라 다릅니다. 이러한 값은 불필요한 오버헤드를 방지하기 위해 가능한 한 낮게 유지해야 합니다.

사전 요구 사항

  • 클러스터 관리자 액세스 권한이 있는 OpenShift 클러스터가 있어야 합니다.
  • OpenShift에 Apicurio Registry가 이미 설치되어 있어야 합니다.
  • AMQ Streams 또는 PostgreSQL에서 선택한 Apicurio 레지스트리 스토리지를 이미 설치하고 구성해야 합니다.

프로세스

  1. OpenShift Container Platform 웹 콘솔에서 클러스터 관리자 권한이 있는 계정을 사용하여 로그인합니다.
  2. 설치된 Operators > Red Hat Integration - Service Registry Operator 를 클릭합니다.
  3. ApicurioRegistry 탭에서 배포에 대한 Operator 사용자 정의 리소스를 클릭합니다(예: example-apicurioregistry ).
  4. 기본 개요 페이지에서 Apicurio Registry 배포의 Deployment Name 섹션 및 해당 DeploymentConfig 이름을 찾습니다(예: example-apicurioregistry ).
  5. 왼쪽 탐색 메뉴에서 워크로드 > 배포 구성을 클릭하고 DeploymentConfig 이름을 선택합니다.
  6. 환경 탭을 클릭하고 Single values env 섹션에 환경 변수를 입력합니다. 예를 들면 다음과 같습니다.

    • NAME:LIVENESS_STATUS_RESET
    • VALUE: 350
  7. 아래쪽에서 저장을 클릭합니다.

    또는 OpenShift oc 명령을 사용하여 이러한 단계를 수행할 수 있습니다. 자세한 내용은 OpenShift CLI 설명서를 참조하십시오.

6.2. Apicurio 레지스트리 상태 점검의 환경 변수

이 섹션에서는 OpenShift에서 Apicurio 레지스트리 상태 점검에 사용할 수 있는 환경 변수에 대해 설명합니다. 여기에는 OpenShift에서 Apicurio 레지스트리 서버의 상태를 모니터링하는 활성 및 준비 상태 프로브가 포함됩니다. 예제 프로시저는 6.1절. “OpenShift에서 Apicurio 레지스트리 상태 점검 구성” 을 참조하십시오.

중요

다음 환경 변수는 참조용으로만 제공됩니다. 기본값은 대부분의 경우용으로 설계되었으며 환경에 필요한 경우에만 변경해야 합니다. 기본값에 대한 모든 변경 사항은 저장된 하드웨어, 네트워크 및 용량에 따라 다릅니다. 이러한 값은 불필요한 오버헤드를 방지하기 위해 가능한 한 낮게 유지해야 합니다.

활성 환경 변수
표 6.1. Apicurio 레지스트리 활성 프로브의 환경 변수
이름설명유형기본

LIVENESS_ERROR_THRESHOLD

활성 프로브가 실패하기 전에 발생할 수 있는 활성 문제 또는 오류 수입니다.

정수

1

LIVENESS_COUNTER_RESET

임계값 오류가 발생해야 하는 기간입니다. 예를 들어 이 값이 60이고 임계값이 1이면 1분 내에 두 개의 오류가 발생하면 검사가 실패합니다.

60

LIVENESS_STATUS_RESET

활성 프로브가 OK 상태로 재설정되는 경우 더 이상 오류 없이 경과해야 하는 시간(초)입니다.

300

LIVENESS_ERRORS_IGNORED

쉼표로 구분된 비활성화된 활성 예외 목록입니다.

문자열

io.grpc.StatusRuntimeException,org.apache.kafka.streams.errors.InvalidStateStoreException

참고

OpenShift는 활성 상태 점검에 실패하는 포드를 자동으로 재시작하므로 준비 설정과 달리 활성 설정은 OpenShift의 Apicurio 레지스트리 동작에 직접적인 영향을 미치지 않습니다.

준비 환경 변수
표 6.2. Apicurio 레지스트리 준비 프로브의 환경 변수
이름설명유형기본

READINESS_ERROR_THRESHOLD

준비 상태 프로브가 실패하기 전에 발생할 수 있는 준비 상태 문제 또는 오류 수입니다.

정수

1

READINESS_COUNTER_RESET

임계값 오류가 발생해야 하는 기간입니다. 예를 들어 이 값이 60이고 임계값이 1이면 1분 내에 두 개의 오류가 발생하면 검사가 실패합니다.

60

READINESS_STATUS_RESET

활성 프로브가 OK 상태로 재설정되는 경우 더 이상 오류 없이 경과해야 하는 시간(초)입니다. 이 경우 일반 작업으로 돌아갈 때까지 Pod가 준비되지 않은 상태로 유지되는 기간이 표시됩니다.

300

READINESS_TIMEOUT

준비 상태는 다음 두 작업의 시간 초과를 추적합니다.

  • 스토리지 요청을 완료하는 데 걸리는 시간
  • HTTP REST API 요청에 대한 응답을 반환하는 데 걸리는 시간

이러한 작업이 구성된 시간 초과보다 많은 시간이 걸리는 경우 준비 상태 문제 또는 오류로 계산됩니다. 이 값은 두 작업의 시간 초과를 제어합니다.

5

6.3. Apicurio 레지스트리 환경 변수 관리

Apicurio Registry Operator는 가장 일반적인 Apicurio 레지스트리 구성을 관리하지만 아직 지원하지 않는 몇 가지 옵션이 있습니다. ApicurioRegistry CR에서 높은 수준의 설정 옵션을 사용할 수 없는 경우 환경 변수를 사용하여 조정할 수 있습니다. spec.configuration.env 필드에서 ApicurioRegistry CR에서 직접 환경 변수를 설정하여 이러한 변수를 업데이트할 수 있습니다. 그런 다음 Apicurio 레지스트리의 배포 리소스로 전달됩니다.

프로세스

OpenShift 웹 콘솔 또는 CLI를 사용하여 Apicurio 레지스트리 환경 변수를 관리할 수 있습니다.

OpenShift 웹 콘솔
  1. 설치된 Operator 탭을 선택한 다음 Red Hat Integration - Service Registry Operator 를 선택합니다.
  2. Apicurio Registry 탭에서 Apicurio Registry 배포를 위한 ApicurioRegistry CR을 클릭합니다.
  3. YAML 탭을 클릭한 다음 필요에 따라 spec.configuration.env 섹션을 편집합니다. 다음 예제에서는 기본 글로벌 콘텐츠 규칙을 설정하는 방법을 보여줍니다.

    Copy to Clipboard Toggle word wrap
    apiVersion: registry.apicur.io/v1
    kind: ApicurioRegistry
    metadata:
      name: example-apicurioregistry
    spec:
      configuration:
        # ...
        env:
          - name: REGISTRY_RULES_GLOBAL_VALIDITY
            value: FULL # One of: NONE, SYNTAX_ONLY, FULL
          - name: REGISTRY_RULES_GLOBAL_COMPATIBILITY
            value: FULL # One of: NONE, BACKWARD, BACKWARD_TRANSITIVE, FORWARD, FORWARD_TRANSITIVE, FULL, FULL_TRANSITIVE
OpenShift CLI
  1. Apicurio Registry가 설치된 프로젝트를 선택합니다.
  2. oc get apicurioregistry 를 실행하여 ApicurioRegistry CR 목록을 가져옵니다.
  3. 구성할 Apicurio Registry 인스턴스를 나타내는 CR에서 oc edit apicurioregistry 를 실행합니다.
  4. spec.configuration.env 섹션에서 환경 변수를 추가하거나 수정합니다.

    Apicurio Registry Operator는 spec.configuration.env 필드에 이미 지정된 환경 변수를 설정하려고 시도할 수 있습니다. 환경 변수 구성에 충돌하는 값이 있는 경우 Apicurio Registry Operator가 설정한 값이 우선합니다.

    기능에 대한 고급 구성을 사용하거나 명시적으로 지정된 환경 변수를 사용하여 이 충돌을 방지할 수 있습니다. 다음은 충돌하는 구성의 예입니다.

    Copy to Clipboard Toggle word wrap
    apiVersion: registry.apicur.io/v1
    kind: ApicurioRegistry
    metadata:
      name: example-apicurioregistry
    spec:
      configuration:
        # ...
        ui:
          readOnly: true
        env:
          - name: REGISTRY_UI_FEATURES_READONLY
            value: false

    이 구성으로 인해 Apicurio 레지스트리 웹 콘솔이 읽기 전용 모드가 됩니다.

6.4. PodTemplate을 사용하여 Apicurio 레지스트리 배포 구성

중요

이는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다.

이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다. Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 https://access.redhat.com/support/offerings/techpreview 을 참조하십시오.

ApicurioRegistry CRD에는 Kubernetes Deployment 리소스( PodTemplateSpec struct)의 spec.template 필드와 동일한 구조가 있는 spec.deployment.podTemplateSpecPreview 필드가 포함되어 있습니다.

몇 가지 제한 사항이 있는 경우 Apicurio Registry Operator는 이 필드의 데이터를 Apicurio 레지스트리 배포의 해당 필드로 전달합니다. 이를 통해 Apicurio Registry Operator가 각 사용 사례를 기본적으로 지원할 필요 없이 구성 유연성이 향상됩니다.

다음 표에는 Apicurio Registry Operator에서 허용하지 않는 하위 필드 목록이 포함되어 있으며 구성 오류가 발생합니다.

표 6.3. podTemplateSpecPreview 하위 필드의 제한 사항
podTemplateSpecPreview subfield상태세부 정보

metadata.annotations

대체 방법이 있습니다.

spec.deployment.metadata.annotations

metadata.labels

대체 방법이 있습니다.

spec.deployment.metadata.labels

spec.affinity

대체 방법이 있습니다.

spec.deployment.affinity

spec.containers[*]

경고

Apicurio 레지스트리 컨테이너를 구성하려면 name: registry 를 사용해야 합니다.

spec.containers[name = "registry"].env

대체 방법이 있습니다.

spec.configuration.env

spec.containers[name = "registry"].image

예약됨

-

spec.imagePullSecrets

대체 방법이 있습니다.

spec.deployment.imagePullSecrets

spec.tolerations

대체 방법이 있습니다.

spec.deployment.tolerations

주의

podTemplateSpecPreview 에서 필드를 설정하는 경우 Apicurio 레지스트리 배포에서 직접 구성한 것처럼 해당 값이 유효해야 합니다. Apicurio Registry Operator는 제공한 값을 계속 수정할 수 있지만 유효하지 않은 값을 수정하거나 기본값이 있는지 확인합니다.

6.5. Apicurio 레지스트리 웹 콘솔 구성

배포 환경에 대해 특별히 Apicurio Registry 웹 콘솔을 구성하거나 해당 동작을 사용자 지정할 수 있도록 선택적 환경 변수를 설정할 수 있습니다.

사전 요구 사항

  • 이미 Apicurio Registry를 설치했습니다.
웹 콘솔 배포 환경 구성

브라우저에서 Apicurio 레지스트리 웹 콘솔에 액세스하면 일부 초기 구성 설정이 로드됩니다. 다음 구성 설정이 중요합니다.

  • 코어 Apicurio 레지스트리 서버 REST API의 URL
  • Apicurio 레지스트리 웹 콘솔 클라이언트의 URL

일반적으로 Apicurio Registry는 이러한 설정을 자동으로 감지하고 생성하지만 이 자동 탐지가 실패할 수 있는 몇 가지 배포 환경이 있습니다. 이 경우 환경에 대해 이러한 URL을 명시적으로 설정하도록 환경 변수를 구성할 수 있습니다.

프로세스

기본 URL을 재정의하도록 다음 환경 변수를 구성합니다.

  • REGISTRY_UI_CONFIG_APIURL: 코어 Apicurio 레지스트리 서버 REST API의 URL을 지정합니다. 예: https://registry.my-domain.com/apis/registry
  • REGISTRY_UI_CONFIG_UIURL: Apicurio 레지스트리 웹 콘솔 클라이언트의 URL을 지정합니다. 예: https://registry.my-domain.com/ui
읽기 전용 모드로 웹 콘솔 구성

Apicurio 레지스트리 웹 콘솔을 읽기 전용 모드에서 선택적 기능으로 구성할 수 있습니다. 이 모드는 Apicurio 레지스트리 웹 콘솔의 모든 기능을 비활성화하여 사용자가 등록된 아티팩트를 변경할 수 있도록 합니다. 예를 들어 다음이 포함됩니다.

  • 아티팩트 생성
  • 새 아티팩트 버전 업로드
  • 아티팩트 메타데이터 업데이트
  • 아티팩트 삭제

프로세스

다음 환경 변수를 구성합니다.

  • REGISTRY_UI_FEATURES_READONLY: 읽기 전용 모드를 활성화하려면 true 로 설정합니다. 기본값은 false입니다.

6.6. Apicurio 레지스트리 로깅 구성

런타임에 Apicurio 레지스트리 로깅 구성을 설정할 수 있습니다. Apicurio Registry는 세분화된 로깅을 위해 특정 로거의 로그 수준을 설정하는 REST 끝점을 제공합니다. 이 섹션에서는 Apicurio Registry /admin REST API를 사용하여 런타임에 Apicurio 레지스트리 로그 수준을 보고 설정하는 방법을 설명합니다.

사전 요구 사항

  • Apicurio 레지스트리 인스턴스에 액세스할 수 있는 URL을 가져오거나 OpenShift에 Apicurio Registry가 배포된 경우 Apicurio 레지스트리 경로를 가져옵니다. 이 간단한 예제에서는 localhost:8080 의 URL을 사용합니다.

프로세스

  1. curl 명령을 사용하여 로거 io.apicurio.registry.storage 에 대한 현재 로그 수준을 가져옵니다.

    Copy to Clipboard Toggle word wrap
    $ curl -i localhost:8080/apis/registry/v2/admin/loggers/io.apicurio.registry.storage
    HTTP/1.1 200 OK
    [...]
    Content-Type: application/json
    {"name":"io.apicurio.registry.storage","level":"INFO"}
  2. curl 명령을 사용하여 로거 io.apicurio.registry.storage 의 로그 수준을 DEBUG:로 변경합니다.

    Copy to Clipboard Toggle word wrap
    $ curl -X PUT -i -H "Content-Type: application/json" --data '{"level":"DEBUG"}' localhost:8080/apis/registry/v2/admin/loggers/io.apicurio.registry.storage
    HTTP/1.1 200 OK
    [...]
    Content-Type: application/json
    {"name":"io.apicurio.registry.storage","level":"DEBUG"}
  3. curl 명령을 사용하여 로거 io.apicurio.registry.storage 의 로그 수준을 기본값으로 되돌립니다.

    Copy to Clipboard Toggle word wrap
    $ curl -X DELETE -i localhost:8080/apis/registry/v2/admin/loggers/io.apicurio.registry.storage
    HTTP/1.1 200 OK
    [...]
    Content-Type: application/json
    {"name":"io.apicurio.registry.storage","level":"INFO"}

6.7. Apicurio 레지스트리 이벤트 소싱 구성

중요

이는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다.

이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다. Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 https://access.redhat.com/support/offerings/techpreview 을 참조하십시오.

레지스트리 콘텐츠를 변경할 때 이벤트를 전송하도록 Apicurio Registry를 구성할 수 있습니다. 예를 들어 Apicurio Registry는 스키마 또는 API 아티팩트, 그룹 또는 콘텐츠 규칙이 생성, 업데이트, 삭제 등의 경우 이벤트를 트리거할 수 있습니다. Apicurio Registry를 구성하여 애플리케이션에 이벤트를 전송하고 이러한 종류의 변경 사항에 대한 타사 통합으로 구성할 수 있습니다.

이벤트 전송에 사용할 수 있는 다양한 프로토콜이 있습니다. 현재 구현된 프로토콜은 HTTP 및 Apache Kafka입니다. 그러나 프로토콜에 관계없이 CNCF CloudEvents 사양을 사용하여 이벤트가 전송됩니다. Java 시스템 속성 또는 동등한 환경 변수를 사용하여 Apicurio Registry 이벤트 소싱을 구성할 수 있습니다.

Apicurio 레지스트리 이벤트 유형

모든 이벤트 유형은 io.apicurio.registry.events.dto.RegistryEventType 에 정의되어 있습니다. 예를 들어 다음과 같은 이벤트 유형이 포함됩니다.

  • io.apicurio.registry.artifact-created
  • io.apicurio.registry.artifact-updated
  • io.apicurio.registry.artifact-state-changed
  • io.apicurio.registry.artifact-rule-created
  • io.apicurio.registry.global-rule-created
  • io.apicurio.registry.group-created

사전 요구 사항

  • Apicurio 레지스트리 클라우드 이벤트를 보낼 애플리케이션이 있어야 합니다. 예를 들어 사용자 지정 애플리케이션 또는 타사 애플리케이션일 수 있습니다.
HTTP를 사용하여 Apicurio 레지스트리 이벤트 소싱 구성

이 섹션의 예제에서는 http://my-app-host:8888/events 에서 실행되는 사용자 정의 애플리케이션을 보여줍니다.

프로세스

  1. HTTP 프로토콜을 사용할 때 다음과 같이 애플리케이션에 이벤트를 보내도록 Apicurio 레지스트리 구성을 설정합니다.

    • registry.events.sink.my-custom-consumer=http://my-app-host:8888/events
  2. 필요한 경우 다음과 같이 여러 이벤트 소비자를 구성할 수 있습니다.

    • registry.events.sink.my-custom-consumer=http://my-app-host:8888/events
    • registry.events.sink.other-consumer=http://my-consumer.com/events
Apache Kafka를 사용하여 Apicurio Registry 이벤트 소싱 구성

이 섹션의 예제에서는 my-kafka-host:9092 에서 실행 중인 my-registry-events 라는 Kafka 주제를 보여줍니다.

프로세스

  1. Kafka 프로토콜을 사용할 때 다음과 같이 Kafka 주제를 설정합니다.

    • registry.events.kafka.topic=my-registry-events
  2. KAFKA_BOOTSTRAP_SERVERS 환경 변수를 사용하여 Kafka 생산자에 대한 구성을 설정할 수 있습니다.

    • KAFKA_BOOTSTRAP_SERVERS=my-kafka-host:9092

      또는 registry.events.kafka.config 접두사를 사용하여 kafka 생산자의 속성을 설정할 수 있습니다(예: registry.events.kafka.config.bootstrap.servers=my-kafka-host:9092).

  3. 필요한 경우 Kafka 주제 파티션을 설정하여 이벤트를 생성할 수도 있습니다.

    • registry.events.kafka.topic-partition=1

추가 리소스

7장. Apicurio Registry Operator 구성 참조

이 장에서는 Apicurio Registry Operator를 배포하도록 Apicurio Registry Operator를 구성하는 데 사용되는 사용자 정의 리소스에 대한 자세한 정보를 제공합니다.

7.1. Apicurio 레지스트리 사용자 정의 리소스

Apicurio Registry Operator는 OpenShift에 Apicurio Registry 의 단일 배포를 나타내는 ApicurioRegistry CR(사용자 정의 리소스) 을 정의합니다.

이러한 리소스 오브젝트는 Apicurio Registry Operator에 Apicurio 레지스트리를 배포하고 구성하는 방법을 지시하기 위해 생성 및 유지 관리됩니다.

ApicurioRegistry CR의 예

다음 명령은 ApicurioRegistry 리소스를 표시합니다.

Copy to Clipboard Toggle word wrap
oc get apicurioregistry
oc edit apicurioregistry example-apicurioregistry
Copy to Clipboard Toggle word wrap
apiVersion: registry.apicur.io/v1
kind: ApicurioRegistry
metadata:
  name: example-apicurioregistry
  namespace: demo-kafka
  # ...
spec:
  configuration:
    persistence: kafkasql
    kafkasql:
      bootstrapServers: 'my-cluster-kafka-bootstrap.demo-kafka.svc:9092'
  deployment:
    host: >-
      example-apicurioregistry.demo-kafka.example.com
status:
  conditions:
  - lastTransitionTime: "2021-05-03T10:47:11Z"
    message: ""
    reason: Reconciled
    status: "True"
    type: Ready
  info:
    host: example-apicurioregistry.demo-kafka.example.com
  managedResources:
  - kind: Deployment
    name: example-apicurioregistry-deployment
    namespace: demo-kafka
  - kind: Service
    name: example-apicurioregistry-service
    namespace: demo-kafka
  - kind: Ingress
    name: example-apicurioregistry-ingress
    namespace: demo-kafka
중요

기본적으로 Apicurio Registry Operator는 자체 프로젝트 네임스페이스만 감시합니다. 따라서 Operator를 수동으로 배포하는 경우 동일한 네임스페이스에 ApicurioRegistry CR을 생성해야 합니다. Operator 배포 리소스에서 WATCH_NAMESPACE 환경 변수를 업데이트하여 이 동작을 수정할 수 있습니다.

7.2. Apicurio Registry CR 사양

사양 은 Operator가 달성하는 데 필요한 상태 또는 구성을 제공하는 데 사용되는 ApicurioRegistry CR의 일부입니다.

ApicurioRegistry CR 사양 콘텐츠

다음 예제 블록에는 가능한 사양 구성 옵션의 전체 트리가 포함되어 있습니다. 일부 필드는 필수가 아니거나 동시에 정의해서는 안 됩니다.

Copy to Clipboard Toggle word wrap
spec:
  configuration:
    persistence: <string>
    sql:
      dataSource:
        url: <string>
        userName: <string>
        password: <string>
    kafkasql:
      bootstrapServers: <string>
      security:
        tls:
          truststoreSecretName: <string>
          keystoreSecretName: <string>
        scram:
          mechanism: <string>
          truststoreSecretName: <string>
          user: <string>
          passwordSecretName: <string>
    ui:
      readOnly: <string>
    logLevel: <string>
    registryLogLevel: <string>
    security:
      keycloak:
        url: <string>
        realm: <string>
        apiClientId: <string>
        uiClientId: <string>
      https:
        disableHttp: <bool>
        secretName: <string>
    env: <k8s.io/api/core/v1 []EnvVar>
  deployment:
    replicas: <int32>
    host: <string>
    affinity: <k8s.io/api/core/v1 Affinity>
    tolerations: <k8s.io/api/core/v1 []Toleration>
    imagePullSecrets: <k8s.io/api/core/v1 []LocalObjectReference>
    metadata:
      annotations: <map[string]string>
      labels: <map[string]string>
    managedResources:
      disableIngress: <bool>
      disableNetworkPolicy: <bool>
	  disablePodDisruptionBudget: <bool>
    podTemplateSpecPreview: <k8s.io/api/core/v1 PodTemplateSpec>

다음 표에서는 각 구성 옵션에 대해 설명합니다.

표 7.1. ApicurioRegistry CR 사양 설정 옵션
구성 옵션type기본값설명

configuration

-

-

Apicurio 레지스트리 애플리케이션 구성 섹션

configuration/persistence

string

필수 항목

스토리지 백엔드. sql 중 하나kafkasql

configuration/sql

-

-

SQL 스토리지 백엔드 구성

configuration/sql/dataSource

-

-

SQL 스토리지 백엔드에 대한 데이터베이스 연결 구성

configuration/sql/dataSource/url

string

필수 항목

데이터베이스 연결 URL 문자열

configuration/sql/dataSource/userName

string

필수 항목

데이터베이스 연결 사용자

configuration/sql/dataSource/password

string

데이터베이스 연결 암호

configuration/kafkasql

-

-

Kafka 스토리지 백엔드 구성

configuration/kafkasql/bootstrapServers

string

필수 항목

Kafka 부트스트랩 서버 URL, 스트림 스토리지 백엔드용

configuration/kafkasql/security/tls

-

-

Kafka 스토리지 백엔드에 대한 TLS 인증을 구성하는 섹션

configuration/kafkasql/security/tls/truststoreSecretName

string

필수 항목

Kafka의 TLS 신뢰 저장소를 포함하는 시크릿 이름

configuration/kafkasql/security/tls/keystoreSecretName

string

필수 항목

사용자 TLS 키 저장소를 포함하는 시크릿의 이름

configuration/kafkasql/security/scram/truststoreSecretName

string

필수 항목

Kafka의 TLS 신뢰 저장소를 포함하는 시크릿 이름

configuration/kafkasql/security/scram/user

string

필수 항목

SCRAM 사용자 이름

configuration/kafkasql/security/scram/passwordSecretName

string

필수 항목

SCRAM 사용자 암호가 포함된 시크릿의 이름

configuration/kafkasql/security/scram/mechanism

string

SCRAM-SHA-512

SASL 메커니즘

configuration/ui

-

-

Apicurio 레지스트리 웹 콘솔 설정

configuration/ui/readOnly

string

false

Apicurio 레지스트리 웹 콘솔을 읽기 전용 모드로 설정

configuration/logLevel

string

INFO

비Apicurio 구성 요소 및 라이브러리에 대한 Apicurio 레지스트리 로그 수준입니다. 한 정보,DEBUG

configuration/registryLogLevel

string

INFO

Apicurio 애플리케이션 구성 요소에 대한 Apicurio 레지스트리 로그 수준(비Apicurio 구성 요소 및 라이브러리 제외). 한 정보,DEBUG

구성/보안

-

-

Apicurio 레지스트리 웹 콘솔 및 REST API 보안 설정

configuration/security/keycloak

-

-

Red Hat Single Sign-On을 사용한 웹 콘솔 및 REST API 보안 구성

configuration/security/keycloak/url

string

필수 항목

Red Hat Single Sign-On URL

configuration/security/keycloak/realm

string

필수 항목

Red Hat Single Sign-On 영역

configuration/security/keycloak/apiClientId

string

registry-client-api

Red Hat Single Sign-On 클라이언트 for REST API

configuration/security/keycloak/uiClientId

string

registry-client-ui

웹 콘솔용 Red Hat Single Sign-On 클라이언트

configuration/security/https

-

-

HTTPS 구성. 자세한 내용은 OpenShift 클러스터 내부에서 Apicurio 레지스트리에 대한 HTTPS 연결 구성을 참조하십시오.

configuration/security/https/sercretName

string

HTTPS 인증서 및 키가 포함된 Kubernetes 보안의 이름입니다. 각각 tls.crttls.key 여야 합니다. 이 필드를 설정하면 HTTPS가 활성화되고 그 반대도 마찬가지입니다.

configuration/security/https/disableHttp

bool

false

HTTP 포트 및 Ingress를 비활성화합니다. 사전 요구 사항으로 HTTPS를 활성화해야 합니다.

configuration/env

k8s.io/api/core/v1 []EnvVar

Apicurio 레지스트리 Pod에 제공할 환경 변수 목록을 구성합니다. 자세한 내용은 Apicurio 레지스트리 환경 변수 관리를 참조하십시오.

배포

-

-

Apicurio 레지스트리 배포 설정 섹션

deployment/replicas

양의 정수

1

배포할 Apicurio 레지스트리 Pod 수

deployment/host

string

자동 생성

Apicurio 레지스트리 콘솔 및 API를 사용할 수 있는 호스트/URL입니다. 가능한 경우 Apicurio Registry Operator는 클러스터 라우터의 설정에 따라 올바른 값을 결정하려고 합니다. 값은 한 번만 자동 생성되므로 사용자는 나중에 재정의할 수 있습니다.

배포/유사성

k8s.io/api/core/v1 유사성

Apicurio 레지스트리 배포 유사성 구성

Deployment/tolerations

k8s.io/api/core/v1 []Toleration

Apicurio 레지스트리 배포 허용 오차 구성

deployment/imagePullSecrets

k8s.io/api/core/v1 []LocalObjectReference

Apicurio 레지스트리 배포를 위한 이미지 풀 시크릿 구성

deployment/metadata

-

-

Apicurio 레지스트리 Pod에 대한 레이블 또는 주석 세트를 구성합니다.

deployment/metadata/labels

map[string]string

Apicurio Registry Pod에 대한 레이블 세트 구성

deployment/metadata/annotations

map[string]string

Apicurio 레지스트리 Pod에 대한 주석 세트 구성

deployment/managedResources

-

-

Apicurio Registry Operator가 Kubernetes 리소스를 관리하는 방법을 구성하는 섹션입니다. 자세한 내용은 Apicurio 레지스트리 관리 리소스를 참조하십시오.

deployment/managedResources/disableIngress

bool

false

설정된 경우 Operator는 Apicurio 레지스트리 배포를 위한 Ingress 리소스를 생성하고 관리하지 않습니다.

deployment/managedResources/disableNetworkPolicy

bool

false

설정된 경우 Operator는 Apicurio 레지스트리 배포에 대한 NetworkPolicy 리소스를 생성하고 관리하지 않습니다.

deployment/managedResources/disablePodDisruptionBudget

bool

false

설정된 경우 Operator는 Apicurio Registry 배포를 위한 PodDisruptionBudget 리소스를 생성하고 관리하지 않습니다.

deployment/podTemplateSpecPreview

k8s.io/api/core/v1 PodTemplateSpec

Apicurio 레지스트리 배포 리소스의 일부를 구성합니다. 자세한 내용은 PodTemplate을 사용하여 Apicurio 레지스트리 배포 구성 을 참조하십시오.

참고

옵션이 필수 로 표시되면 다른 구성 옵션에서 사용할 수 있습니다. 빈 값이 허용될 수 있지만 Operator는 지정된 작업을 수행하지 않습니다.

7.3. Apicurio 레지스트리 CR 상태

상태는 현재 배포 및 애플리케이션 상태에 대한 설명이 포함된 Apicurio Registry Operator에서 관리하는 CR의 섹션입니다.

ApicurioRegistry CR 상태 콘텐츠

status 섹션에는 다음 필드가 포함되어 있습니다.

Copy to Clipboard Toggle word wrap
status:
  info:
    host: <string>
  conditions: <list of:>
  - type: <string>
    status: <string, one of: True, False, Unknown>
    reason: <string>
    message: <string>
    lastTransitionTime: <string, RFC-3339 timestamp>
  managedResources: <list of:>
  - kind: <string>
    namespace: <string>
    name: <string>
표 7.2. ApicurioRegistry CR 상태 필드
상태 필드유형설명

info

-

배포된 Apicurio 레지스트리에 대한 정보가 포함된 섹션입니다.

info/host

string

Apicurio 레지스트리 UI 및 REST API에 액세스할 수 있는 URL입니다.

conditions

-

Apicurio 레지스트리의 상태 또는 해당 배포와 관련된 Operator를 보고하는 조건 목록입니다.

conditions/type

string

조건의 유형입니다.

conditions/status

string

조건의 상태, True,False,알 수 없음.

conditions/reason

string

조건의 마지막 전환 이유를 나타내는 프로그래밍 방식의 식별자입니다.

conditions/message

string

전환에 대한 세부 정보를 나타내는 사람이 읽을 수 있는 메시지입니다.

conditions/lastTransitionTime

string

조건이 다른 상태에서 다른 상태로 전환된 마지막 시간입니다.

managedResources

-

Apicurio Registry Operator에서 관리하는 OpenShift 리소스 목록

managedResources/kind

string

리소스 종류.

managedResources/namespace

string

리소스 네임스페이스.

managedResources/name

string

리소스 이름입니다.

7.4. Apicurio 레지스트리 관리 리소스

Apicurio Registry를 배포할 때 Apicurio Registry Operator가 관리하는 리소스는 다음과 같습니다.

  • Deployment
  • Ingress (및 경로)
  • NetworkPolicy
  • PodDisruptionBudget
  • 서비스

Apicurio Registry Operator가 일부 리소스를 생성 및 관리하지 않도록 비활성화하여 수동으로 구성할 수 있습니다. 이렇게 하면 Apicurio Registry Operator가 현재 지원하지 않는 기능을 사용할 때 유연성이 향상됩니다.

리소스 유형을 비활성화하면 기존 인스턴스가 삭제됩니다. 리소스를 활성화하면 Apicurio Registry Operator에서 app 레이블(예: app=example-apicurioregistry )을 사용하여 리소스를 찾고 관리를 시작합니다. 그러지 않으면 Operator에서 새 인스턴스를 생성합니다.

이러한 방식으로 다음 리소스 유형을 비활성화할 수 있습니다.

  • Ingress (및 경로)
  • NetworkPolicy
  • PodDisruptionBudget

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

Copy to Clipboard Toggle word wrap
apiVersion: registry.apicur.io/v1
kind: ApicurioRegistry
metadata:
  name: example-apicurioregistry
spec:
  deployment:
    managedResources:
      disableIngress: true
      disableNetworkPolicy: true
      disablePodDisruptionBudget: false # Can be omitted

7.5. Apicurio Registry Operator 라벨

Apicurio Registry Operator가 관리하는 리소스는 일반적으로 다음과 같이 레이블이 지정됩니다.

표 7.3. 관리 리소스에 대한 Apicurio Registry Operator 레이블
레이블설명

app

지정된 ApicurioRegistry CR의 이름을 기반으로 리소스가 속한 Apicurio Registry 배포의 이름입니다.

apicur.io/type

배포 유형: apicurio-registry 또는 operator

apicur.io/name

배포 이름: app 또는 apicurio-registry-operator와 동일한 값

apicur.io/version

Apicurio 레지스트리 또는 Apicurio Registry Operator의 버전

app.kubernetes.io/*

애플리케이션 배포에 권장되는 Kubernetes 레이블 세트입니다.

com.companyrht.*'

Red Hat 제품의 미터링 레이블입니다.

사용자 정의 라벨 및 주석

spec.deployment.metadata.labelsspec.deployment.metadata.annotations 필드를 사용하여 Apicurio 레지스트리 Pod에 대한 사용자 정의 레이블 및 주석을 제공할 수 있습니다. 예를 들면 다음과 같습니다.

Copy to Clipboard Toggle word wrap
apiVersion: registry.apicur.io/v1
kind: ApicurioRegistry
metadata:
  name: example-apicurioregistry
spec:
  configuration:
    # ...
  deployment:
    metadata:
      labels:
        example.com/environment: staging
      annotations:
        example.com/owner: my-team

8장. Apicurio 레지스트리 구성 참조

이 장에서는 Apicurio Registry에서 사용할 수 있는 구성 옵션에 대한 참조 정보를 제공합니다.

추가 리소스

8.1. Apicurio 레지스트리 구성 옵션

다음 Apicurio 레지스트리 구성 옵션은 각 구성 요소 범주에 사용할 수 있습니다.

8.1.1. api

표 8.1. API 구성 옵션
이름유형기본에서 사용 가능설명

registry.api.errors.include-stack-in-response

boolean

false

2.1.4.Final

오류 응답에 스택 추적 포함

registry.disable.apis

선택 사항<list<string>>

 

2.0.0.Final

API 비활성화

8.1.2. auth

표 8.2. 인증 구성 옵션
이름유형기본에서 사용 가능설명

registry.auth.admin-override.claim

string

org-admin

2.1.0.Final

인증 관리자 덮어쓰기 클레임

registry.auth.admin-override.claim-value

string

true

2.1.0.Final

인증 관리자 덮어쓰기 클레임 값

registry.auth.admin-override.enabled

boolean

false

2.1.0.Final

인증 관리자 덮어쓰기 활성화

registry.auth.admin-override.from

string

token

2.1.0.Final

의 인증 관리자 덮어쓰기

registry.auth.admin-override.role

string

SR-admin

2.1.0.Final

인증 관리자 덮어쓰기 역할

registry.auth.admin-override.type

string

role

2.1.0.Final

인증 관리자 덮어쓰기 유형

registry.auth.anonymous-read-access.enabled

부울 [dynamic]

false

2.1.0.Final

익명 읽기 액세스

registry.auth.audit.log.prefix

string

audit

2.2.6

애플리케이션 감사 로깅에 사용되는 접두사입니다.

registry.auth.authenticated-read-access.enabled

부울 [dynamic]

false

2.1.4.Final

인증된 읽기 액세스

registry.auth.basic-auth-client-credentials.cache-expiration

integer

10

2.2.6.Final

기본 클라이언트 인증 정보 토큰 만료 시간입니다.

registry.auth.basic-auth-client-credentials.cache-expiration-offset

integer

10

2.5.9.Final

JWT 만료 사이의 클라이언트 인증 정보 토큰 만료 오프셋입니다.

registry.auth.basic-auth-client-credentials.enabled

부울 [dynamic]

false

2.1.0.Final

기본 인증 클라이언트 인증 정보 활성화

registry.auth.basic-auth.scope

선택 사항<string>

 

2.5.0.Final

클라이언트 인증 정보 범위.

registry.auth.client-id

string

 

2.0.0.Final

인증을 위해 서버에서 사용하는 클라이언트 식별자입니다.

registry.auth.client-secret

선택 사항<string>

 

2.1.0.Final

인증에 서버에서 사용하는 클라이언트 시크릿입니다.

registry.auth.enabled

boolean

false

2.0.0.Final

인증 활성화

registry.auth.owner-only-authorization

부울 [dynamic]

false

2.0.0.Final

아티팩트 소유자 전용 권한 부여

registry.auth.owner-only-authorization.limit-group-access

부울 [dynamic]

false

2.1.0.Final

아티팩트 그룹 소유자 전용 권한 부여

registry.auth.role-based-authorization

boolean

false

2.1.0.Final

역할 기반 권한 부여 활성화

registry.auth.role-source

string

token

2.1.0.Final

인증 역할 소스

registry.auth.role-source.header.name

string

 

2.4.3.Final

헤더 권한 부여 이름

registry.auth.roles.admin

string

SR-admin

2.0.0.Final

인증 역할 관리자

registry.auth.roles.developer

string

sr-developer

2.1.0.Final

인증 역할 개발자

registry.auth.roles.readonly

string

sr-readonly

2.1.0.Final

인증 역할 읽기 전용

registry.auth.tenant-owner-is-admin.enabled

boolean

true

2.1.0.Final

인증 테넌트 소유자 관리자 활성화

registry.auth.token.endpoint

string

 

2.1.0.Final

인증 서버 URL.

8.1.3. 캐시

표 8.3. 캐시 구성 옵션
이름유형기본에서 사용 가능설명

registry.config.cache.enabled

boolean

true

2.2.2.Final

레지스트리 캐시 활성화

8.1.4. ccompat

표 8.4. ccompat 구성 옵션
이름유형기본에서 사용 가능설명

registry.ccompat.group-concat.enabled

boolean

false

2.6.2.Final

적용 대상(호환 API)에서 연결을 통해 그룹 지원 활성화

registry.ccompat.group-concat.separator

string

:

2.6.2.Final

그룹 연결을 활성화할 때 사용할 구분 기호(호환성 API)

registry.ccompat.legacy-id-mode.enabled

부울 [dynamic]

false

2.0.2.Final

레거시 ID 모드(호환성 API)

registry.ccompat.max-subjects

정수 [dynamic]

1000

2.4.2.Final

반환되는 최대 주체 수(호환성 API)

registry.ccompat.use-canonical-hash

부울 [dynamic]

false

2.3.0.Final

표준 해시 모드 (호환성 API)

8.1.5. 다운로드

표 8.5. 구성 옵션 다운로드
이름유형기본에서 사용 가능설명

registry.download.href.ttl

롱 [dynamic]

30

2.1.2.Final

링크 만료 다운로드

8.1.6. 이벤트

표 8.6. 이벤트 구성 옵션
이름유형기본에서 사용 가능설명

registry.events.ksink

선택 사항<string>

 

2.0.0.Final

이벤트 Kafka 싱크 활성화

8.1.7. health

표 8.7. 상태 구성 옵션
이름유형기본에서 사용 가능설명

registry.liveness.errors.ignored

선택 사항<list<string>>

 

1.2.3.Final

무시된 활성 오류

registry.metrics.PersistenceExceptionLivenessCheck.counterResetWindowDurationSec

integer

60

1.0.2.Final

지속성 활성 검사의 카운터 재설정 창 기간

registry.metrics.PersistenceExceptionLivenessCheck.disableLogging

boolean

false

2.0.0.Final

지속성 활성 점검 로깅 비활성화

registry.metrics.PersistenceExceptionLivenessCheck.errorThreshold

integer

1

1.0.2.Final

지속성 활성 점검 오류 임계값

registry.metrics.PersistenceExceptionLivenessCheck.statusResetWindowDurationSec

integer

300

1.0.2.Final

지속성 활성 검사 상태 재설정 창 기간

registry.metrics.PersistenceTimeoutReadinessCheck.counterResetWindowDurationSec

integer

60

1.0.2.Final

지속성 준비 상태 점검의 카운터 재설정 창 기간

registry.metrics.PersistenceTimeoutReadinessCheck.errorThreshold

integer

5

1.0.2.Final

지속성 준비 상태 점검 오류 임계값

registry.metrics.PersistenceTimeoutReadinessCheck.statusResetWindowDurationSec

integer

300

1.0.2.Final

지속성 준비 상태 점검의 상태 재설정 창 기간

registry.metrics.PersistenceTimeoutReadinessCheck.timeoutSec

integer

15

1.0.2.Final

지속성 준비 상태 점검 시간 제한

registry.metrics.ResponseErrorLivenessCheck.counterResetWindowDurationSec

integer

60

1.0.2.Final

응답 활성 검사의 카운터 재설정 창 기간

registry.metrics.ResponseErrorLivenessCheck.disableLogging

boolean

false

2.0.0.Final

응답 활성 점검의 로깅 비활성화

registry.metrics.ResponseErrorLivenessCheck.errorThreshold

integer

1

1.0.2.Final

응답 활성 검사의 오류 임계값

registry.metrics.ResponseErrorLivenessCheck.statusResetWindowDurationSec

integer

300

1.0.2.Final

응답 활성 검사의 상태 재설정 창 기간

registry.metrics.ResponseTimeoutReadinessCheck.counterResetWindowDurationSec

instance<integer>

60

1.0.2.Final

응답 준비 상태 점검의 카운터 재설정 창 기간

registry.metrics.ResponseTimeoutReadinessCheck.errorThreshold

instance<integer>

1

1.0.2.Final

응답 준비 상태 점검의 오류 임계값

registry.metrics.ResponseTimeoutReadinessCheck.statusResetWindowDurationSec

instance<integer>

300

1.0.2.Final

응답 준비 상태 점검의 상태 재설정 창 기간

registry.metrics.ResponseTimeoutReadinessCheck.timeoutSec

instance<integer>

10

1.0.2.Final

응답 준비 상태 점검 시간 초과

registry.storage.metrics.cache.check-period

long

30000

2.1.0.Final

스토리지 메트릭 캐시 검사 기간

8.1.8. 가져오기

표 8.8. 구성 옵션 가져오기
이름유형기본에서 사용 가능설명

registry.import.url

선택 사항<url>

 

2.1.0.Final

가져오기 URL

8.1.9. kafka

표 8.9. Kafka 구성 옵션
이름유형기본에서 사용 가능설명

registry.events.kafka.topic

선택 사항<string>

 

2.0.0.Final

이벤트 Kafka 주제

registry.events.kafka.topic-partition

선택 사항<integer>

 

2.0.0.Final

이벤트 Kafka 주제 파티션

8.1.10. limits

표 8.10. 제한 구성 옵션
이름유형기본에서 사용 가능설명

registry.limits.config.max-artifact-labels

long

-1

2.2.3.Final

최대 아티팩트 레이블

registry.limits.config.max-artifact-properties

long

-1

2.1.0.Final

최대 아티팩트 속성

registry.limits.config.max-artifacts

long

-1

2.1.0.Final

최대 아티팩트 수

registry.limits.config.max-description-length

long

-1

2.1.0.Final

최대 아티팩트 설명 길이

registry.limits.config.max-label-size

long

-1

2.1.0.Final

최대 아티팩트 레이블 크기

registry.limits.config.max-name-length

long

-1

2.1.0.Final

최대 아티팩트 이름 길이

registry.limits.config.max-property-key-size

long

-1

2.1.0.Final

최대 아티팩트 속성 키 크기

registry.limits.config.max-property-value-size

long

-1

2.1.0.Final

최대 아티팩트 속성 값 크기

registry.limits.config.max-requests-per-second

long

-1

2.2.3.Final

초당 최대 아티팩트 요청 수

registry.limits.config.max-schema-size-bytes

long

-1

2.2.3.Final

최대 스키마 크기(바이트)

registry.limits.config.max-total-schemas

long

-1

2.1.0.Final

최대 총 스키마 수

registry.limits.config.max-versions-per-artifact

long

-1

2.1.0.Final

아티팩트당 최대 버전

registry.storage.metrics.cache.max-size

long

1000

2.4.1.Final

스토리지 지표 캐시 최대 크기입니다.

8.1.11. log

표 8.11. 로그 구성 옵션
이름유형기본에서 사용 가능설명

quarkus.log.level

string

 

2.0.0.Final

로그 수준

8.1.12. mt

표 8.12. MT 구성 옵션
이름유형기본에서 사용 가능설명

registry.enable.multitenancy

boolean

false

2.0.0.Final

멀티 테넌시 활성화

registry.enable.multitenancy.standalone

boolean

false

2.5.0.Final

독립 실행형 멀티 테넌시 모드를 활성화합니다. 이 모드에서 레지스트리는 테넌트와 해당 메타데이터를 관리하기 위한 추가 구성 요소에 대한 종속성 없이 기본 멀티 테넌시 기능을 제공합니다. 처음 요청에서 테넌트 ID를 추출하는 즉시 새 테넌트가 생성됩니다. 테넌트 ID는 외부에서 관리해야 하며 데이터를 삭제하여 테넌트를 효과적으로 삭제할 수 있습니다.

registry.multitenancy.authorization.enabled

boolean

true

2.1.0.Final

멀티 테넌시 권한 부여 활성화

registry.multitenancy.reaper.every

선택 사항<string>

 

2.1.0.Final

멀티 테넌시(Multitenancy Reaper)

registry.multitenancy.reaper.max-tenants-reaped

int

100

2.1.0.Final

멀티 테넌시 reaper max tenants reaped

registry.multitenancy.reaper.period-seconds

long

10800

2.1.0.Final

멀티 테넌시 reaper 기간 초

registry.multitenancy.tenant.token-claim.names

list<string>

 

2.1.0.Final

테넌트 ID를 확인하는 데 사용되는 토큰 클레임

registry.multitenancy.types.context-path.base-path

string

t

2.1.0.Final

멀티 테넌시 컨텍스트 경로 유형 기본 경로

registry.multitenancy.types.context-path.enabled

boolean

true

2.1.0.Final

멀티 테넌시 컨텍스트 경로 유형 활성화

registry.multitenancy.types.request-header.enabled

boolean

true

2.1.0.Final

멀티 테넌시 요청 헤더 유형 활성화

registry.multitenancy.types.request-header.name

string

X-Tenant-Id

2.1.0.Final

멀티 테넌시 요청 헤더 유형 이름

registry.multitenancy.types.subdomain.enabled

boolean

false

2.1.0.Final

멀티 테넌시 하위 도메인 유형 활성화

registry.multitenancy.types.subdomain.header-name

string

호스트

2.1.0.Final

다중 테넌시 하위 도메인 유형 헤더 이름

registry.multitenancy.types.subdomain.location

string

header

2.1.0.Final

멀티 테넌시 하위 도메인 유형 위치

registry.multitenancy.types.subdomain.pattern

string

(\w[\w\d\-]*)\.localhost\.local

2.1.0.Final

멀티 테넌시 하위 도메인 유형 패턴

registry.multitenancy.types.token-claims.enabled

boolean

false

2.1.0.Final

멀티 테넌시 요청 헤더 유형 활성화

registry.organization-id.claim-name

list<string>

 

2.1.0.Final

조직 ID 클레임 이름

registry.tenant.manager.auth.client-id

선택 사항<string>

 

2.1.0.Final

테넌트 관리자 인증 클라이언트 ID

registry.tenant.manager.auth.client-secret

선택 사항<string>

 

2.1.0.Final

테넌트 관리자 인증 클라이언트 시크릿

registry.tenant.manager.auth.enabled

선택 사항<boolean>

 

2.1.0.Final

테넌트 관리자 인증 활성화

registry.tenant.manager.auth.token.expiration.reduction.ms

선택 사항<long>

 

2.2.0.Final

테넌트 관리자 인증 토큰 만료 ms

registry.tenant.manager.auth.url.configured

선택 사항<string>

 

2.1.0.Final

테넌트 관리자 인증 URL 구성

registry.tenant.manager.ssl.ca.path

선택 사항<string>

 

2.2.0.Final

테넌트 관리자 SSL ca 경로

registry.tenant.manager.url

선택 사항<string>

 

2.0.0.Final

테넌트 관리자 URL

registry.tenants.context.cache.check-period

long

60000

2.1.0.Final

테넌트 컨텍스트 캐시 확인 기간

registry.tenants.context.cache.max-size

long

1000

2.4.1.Final

테넌트 컨텍스트 캐시 최대 크기

8.1.13. 리디렉션

표 8.13. 구성 옵션 리디렉션
이름유형기본에서 사용 가능설명

registry.enable-redirects

boolean

 

2.1.2.Final

리디렉션 활성화

registry.redirects

map<string, string>

 

2.1.2.Final

레지스트리 리디렉션

registry.url.override.host

선택 사항<string>

 

2.5.0.Final

외부에서 액세스할 수 있는 URL을 생성하는 데 사용되는 호스트 이름을 재정의합니다. 호스트 및 포트 덮어쓰기는 HTTPS 패스스루 Ingress 또는 경로를 사용하여 레지스트리를 배포할 때 유용합니다. 이러한 경우 리디렉션에 다시 사용되는 요청 URL(및 포트)은 요청이 프록시되므로 클라이언트에서 사용하는 실제 외부 URL에 속하지 않습니다. 대상 URL에 연결할 수 없기 때문에 리디렉션이 실패합니다.

registry.url.override.port

선택 사항<integer>

 

2.5.0.Final

외부 액세스 가능한 URL을 생성하는 데 사용되는 포트를 재정의합니다.

8.1.14. rest

표 8.14. 나머지 구성 옵션
이름유형기본에서 사용 가능설명

registry.rest.artifact.deletion.enabled

부울 [dynamic]

false

2.4.2-SNAPSHOT

아티팩트 버전 삭제 활성화

registry.rest.artifact.download.maxSize

int

1000000

2.2.6-SNAPSHOT

URL에서 다운로드할 수 있는 아티팩트의 최대 크기

registry.rest.artifact.download.skipSSLValidation

boolean

false

2.2.6-SNAPSHOT

URL에서 아티팩트를 다운로드할 때 SSL 검증 건너뛰기

8.1.15. Store

표 8.15. 저장소 구성 옵션
이름유형기본에서 사용 가능설명

artifacts.skip.disabled.latest

boolean

true

2.4.2-SNAPSHOT

최신 아티팩트 버전을 검색할 때 DISABLED 상태로 아티팩트 버전 건너뛰기

quarkus.datasource.db-kind

string

postgresql

2.0.0.Final

데이터 소스 Db 종류

quarkus.datasource.jdbc.url

string

 

2.1.0.Final

데이터 소스 jdbc URL

registry.sql.init

boolean

true

2.0.0.Final

SQL init

8.1.16. ui

표 8.16. UI 구성 옵션
이름유형기본에서 사용 가능설명

quarkus.oidc.tenant-enabled

boolean

false

2.0.0.Final

UI OIDC 테넌트 활성화

registry.ui.config.apiUrl

string

 

1.3.0.Final

UI API URL

registry.ui.config.auth.oidc.client-id

string

none

2.2.6.Final

UI 인증 OIDC 클라이언트 ID

registry.ui.config.auth.oidc.redirect-url

string

none

2.2.6.Final

UI 인증 OIDC 리디렉션 URL

registry.ui.config.auth.oidc.url

string

none

2.2.6.Final

UI 인증 OIDC URL

registry.ui.config.auth.type

string

none

2.2.6.Final

UI 인증 유형

registry.ui.config.uiCodegenEnabled

boolean

true

2.4.2.Final

UI 코드 생성 활성화

registry.ui.config.uiContextPath

string

/ui/

2.1.0.Final

UI 컨텍스트 경로

registry.ui.features.readOnly

부울 [dynamic]

false

1.2.0.Final

UI 읽기 전용 모드

registry.ui.features.settings

boolean

false

2.2.2.Final

UI 기능 설정

registry.ui.root

string

 

2.3.0.Final

UI 루트 컨텍스트를 재정의합니다(바인 프록시를 사용하여 UI 컨텍스트를 재배치할 때 사용됨)

부록 A. 서브스크립션 사용

Apicurio 레지스트리는 소프트웨어 서브스크립션을 통해 제공됩니다. 서브스크립션을 관리하려면 Red Hat 고객 포털에서 계정에 액세스하십시오.

계정 액세스

  1. access.redhat.com 으로 이동합니다.
  2. 계정이 없는 경우 계정을 생성합니다.
  3. 계정에 로그인합니다.

서브스크립션 활성화

  1. access.redhat.com 으로 이동합니다.
  2. 내 서브스크립션 으로 이동합니다.
  3. 서브스크립션 활성화로 이동하여 16자리 활성화 번호를 입력합니다.

ZIP 및 TAR 파일 다운로드

ZIP 또는 TAR 파일에 액세스하려면 고객 포털을 사용하여 다운로드할 관련 파일을 찾습니다. RPM 패키지를 사용하는 경우 이 단계는 필요하지 않습니다.

  1. 브라우저를 열고 Red Hat Customer Portal 제품 다운로드 페이지에 access.redhat.com/downloads.
  2. 통합 및 자동화 카테고리에서 Red Hat Integration 항목을 찾습니다.
  3. 원하는 Apicurio 레지스트리 제품을 선택합니다. 소프트웨어 다운로드 페이지가 열립니다.
  4. 구성 요소에 대한 다운로드 링크를 클릭합니다.

2025-03-20에 최종 업데이트된 문서

법적 공지

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat, Inc.