OpenShift에 Apicurio 레지스트리 설치 및 배포
Apicurio 레지스트리 2.5 설치, 배포 및 구성
초록
머리말
보다 포괄적 수용을 위한 오픈 소스 용어 교체
Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.
Red Hat 문서에 대한 피드백 제공
문서 개선을 위한 의견에 감사드립니다.
개선 사항을 제안하려면 Jira 문제를 열고 제안된 변경 사항을 설명합니다. 귀하의 요청을 신속하게 처리할 수 있도록 가능한 한 자세한 정보를 제공하십시오.
사전 요구 사항
-
Red Hat 고객 포털 계정이 있어야 합니다. 이 계정을 사용하면 Red Hat Jira Software 인스턴스에 로그인할 수 있습니다.
계정이 없는 경우 계정을 생성하라는 메시지가 표시됩니다.
프로세스
- 다음 링크를 클릭합니다. 문제 생성.
- 요약 텍스트 상자에 문제에 대한 간략한 설명을 입력합니다.
설명 텍스트 상자에 다음 정보를 입력합니다.
- 문제를 발견한 페이지의 URL입니다.
-
문제에 대한 자세한 설명입니다.
다른 필드에 있는 정보는 기본값에 따라 그대로 둘 수 있습니다.
- 생성 을 클릭하여 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 설명서를 참조하십시오.
프로세스
-
Red Hat 소프트웨어 다운로드 로 이동하여 제품 버전을 선택하고 Apicurio Registry CRD
.zip
파일에서 예제를 다운로드합니다. -
다운로드한 CRD
.zip
파일을 추출하고apicurio-registry-install-examples
디렉터리로 변경합니다. Apicurio Registry Operator 설치에 대한 OpenShift 프로젝트를 생성합니다. 예를 들면 다음과 같습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow export NAMESPACE="apicurio-registry" oc new-project "$NAMESPACE"
export NAMESPACE="apicurio-registry" oc new-project "$NAMESPACE"
다음 명령을 입력하여
install/install.yaml
파일에 예제 CRD를 적용합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat install/install.yaml | sed "s/apicurio-registry-operator-namespace/$NAMESPACE/g" | oc apply -f -
cat install/install.yaml | sed "s/apicurio-registry-operator-namespace/$NAMESPACE/g" | oc apply -f -
oc get deployment
를 입력하여 Apicurio Registry Operator의 준비 상태를 확인합니다. 예를 들어 출력은 다음과 같아야 합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow NAME READY UP-TO-DATE AVAILABLE AGE apicurio-registry-operator 1/1 1 1 XmYs
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 데이터베이스가 있습니다.
프로세스
편집기에서
examples/apicurioregistry_sql_cr.yaml
파일을 열고ApicurioRegistry
CR(사용자 정의 리소스)을 확인합니다.SQL 스토리지를 위한 CR의 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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
dataSource
섹션에서 예제 설정을 데이터베이스 연결 세부 정보로 교체합니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow dataSource: url: "jdbc:postgresql://postgresql.apicurio-registry.svc:5432/registry" userName: "pgadmin" password: "pgpass"
dataSource: url: "jdbc:postgresql://postgresql.apicurio-registry.svc:5432/registry" userName: "pgadmin" password: "pgpass"
다음 명령을 입력하여
Apicurio Registry
Operator를 사용하여 네임스페이스에 업데이트된 ApicurioRegistry CR을 적용하고 Apicurio Registry 인스턴스가 배포될 때까지 기다립니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc project "$NAMESPACE" oc apply -f ./examples/apicurioregistry_sql_cr.yaml
oc project "$NAMESPACE" oc apply -f ./examples/apicurioregistry_sql_cr.yaml
oc get deployment
를 입력하여 Apicurio 레지스트리 인스턴스의 준비 상태를 확인합니다. 예를 들어 출력은 다음과 같아야 합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow NAME READY UP-TO-DATE AVAILABLE AGE example-apicurioregistry-sql-deployment 1/1 1 1 XmYs
NAME READY UP-TO-DATE AVAILABLE AGE example-apicurioregistry-sql-deployment 1/1 1 1 XmYs
oc get routes
를 입력하여 브라우저에서 Apicurio Registry 웹 콘솔을 시작하려면HOST/PORT
URL을 가져옵니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow example-apicurioregistry-sql.apicurio-registry.router-default.apps.mycluster.myorg.mycompany.com
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 클러스터에 대한 클러스터 관리자 액세스 권한이 있어야 합니다.
프로세스
- OpenShift Container Platform 웹 콘솔에서 클러스터 관리자 권한이 있는 계정을 사용하여 로그인합니다.
새 OpenShift 프로젝트를 생성합니다.
- 왼쪽 탐색 메뉴에서 홈,프로젝트 를 클릭한 다음 프로젝트 만들기를 클릭합니다.
-
프로젝트 이름(예:
my-project
)을 입력하고 생성 을 클릭합니다.
- 왼쪽 탐색 메뉴에서 Operator를 클릭한 다음 OperatorHub 를 클릭합니다.
-
키워드로 필터링 텍스트 상자에
레지스트리
를 입력하여 Red Hat Integration - Service Registry Operator 를 찾습니다. - Operator에 대한 정보를 읽고 설치를 클릭하여 Operator 서브스크립션 페이지를 표시합니다.
서브스크립션 설정을 선택합니다. 예를 들면 다음과 같습니다.
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
- 승인 전략: 자동 또는 수동선택
- 설치를 클릭하고 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를 사용하여 설치하는 간단한 예를 보여줍니다.
프로세스
- OpenShift Container Platform 웹 콘솔에서 클러스터 관리자 권한이 있는 계정을 사용하여 로그인합니다.
-
AMQ Streams를 설치할 OpenShift 프로젝트로 변경합니다. 예를 들어 프로젝트 드롭다운에서
my-project
를 선택합니다. - 왼쪽 탐색 메뉴에서 Operator를 클릭한 다음 OperatorHub 를 클릭합니다.
-
키워드로 필터링 텍스트 상자에
AMQ Streams
를 입력하여 Red Hat Integration - AMQ Streams Operator를 찾습니다. - Operator에 대한 정보를 읽고 설치를 클릭하여 Operator 서브스크립션 페이지를 표시합니다.
서브스크립션 설정을 선택합니다. 예를 들면 다음과 같습니다.
- 채널 업데이트 및 amq-streams-2.6.x
설치 모드: 다음 중 하나를 선택합니다.
- 클러스터의 모든 네임스페이스(기본값)
- 클러스터의 특정 네임스페이스 > my-project
- 승인 전략: 자동 또는 수동선택
- 설치를 클릭하고 Operator를 사용할 준비가 될 때까지 몇 분 정도 기다립니다.
3.2. OpenShift에서 Kafka 스토리지를 사용하여 Apicurio 레지스트리 구성
이 섹션에서는 OpenShift에서 AMQ Streams를 사용하여 Apicurio Registry에 대한 Kafka 기반 스토리지를 구성하는 방법을 설명합니다. kafkasql
스토리지 옵션은 캐싱을 위해 메모리 내 H2 데이터베이스와 함께 Kafka 스토리지를 사용합니다. 이 스토리지 옵션은 영구
스토리지가 OpenShift의 Kafka 클러스터에 대해 구성된 경우 프로덕션 환경에 적합합니다.
기존 Kafka 클러스터에 Apicurio 레지스트리를 설치하거나 환경에 따라 새 Kafka 클러스터를 생성할 수 있습니다.
사전 요구 사항
- 클러스터 관리자 액세스 권한이 있는 OpenShift 클러스터가 있어야 합니다.
- 이미 Apicurio 레지스트리가 설치되어 있어야 합니다. 2장. OpenShift에 Apicurio 레지스트리 설치을 참조하십시오.
- AMQ Streams가 이미 설치되어 있어야 합니다. 3.1절. “OpenShift OperatorHub에서 AMQ Streams 설치”을 참조하십시오.
프로세스
- OpenShift Container Platform 웹 콘솔에서 클러스터 관리자 권한이 있는 계정을 사용하여 로그인합니다.
Kafka 클러스터가 구성되지 않은 경우 AMQ Streams를 사용하여 새 Kafka 클러스터를 생성합니다. 예를 들어 OpenShift OperatorHub에서는 다음을 수행합니다.
- Installed Operators 를 클릭한 다음 Red Hat Integration - AMQ Streams 를 클릭합니다.
- 제공된 API 에서 Kafka 를 클릭한 다음 인스턴스 생성 을 클릭하여 새 Kafka 클러스터를 생성합니다.
필요에 따라 사용자 정의 리소스 정의를 편집하고 생성 을 클릭합니다.
주의기본 예제에서는 3개의 Zookeeper 노드와 3개의 Kafka 노드가 있는
클러스터를
생성합니다. 이 임시 스토리지는 개발 및 테스트에만 적합하며 프로덕션에는 적합하지 않습니다. 자세한 내용은 OpenShift에서 AMQ 스트림 배포 및 관리를 참조하십시오.
- 클러스터가 준비되면 제공된 API > Kafka > my-cluster > YAML 을 클릭합니다.
상태
블록에서 나중에 Apicurio Registry를 배포하는 데 사용할bootstrapServers
값의 사본을 만듭니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 ...
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 ...
- 설치된 Operators > Red Hat Integration - Service Registry > ApicurioRegistry > Create ApicurioRegistry 를 클릭합니다.
다음 사용자 정의 리소스 정의에 붙여넣지만 이전에 복사한
bootstrapServers
값을 사용합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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'
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'
- 생성 을 클릭하고 OpenShift에서 Apicurio 레지스트리 경로가 생성될 때까지 기다립니다.
네트워킹 > 경로를 클릭하여 Apicurio 레지스트리 웹 콘솔의 새 경로에 액세스합니다. 예를 들면 다음과 같습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow http://example-apicurioregistry-kafkasql.my-project.my-domain-name.com/
http://example-apicurioregistry-kafkasql.my-project.my-domain-name.com/
Apicurio Registry가 데이터를 저장하는 데 사용하는 Kafka 주제를 구성하려면 Installed Operators > Red Hat Integration - AMQ Streams > Provided API > Kafka Topic > kafkasql-journal > YAML 을 클릭합니다. 예를 들면 다음과 같습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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 주제를 구성해야 합니다. 그렇지 않으면 데이터 손실이 발생할 수 있습니다.
추가 리소스
- AMQ Streams를 사용하여 Kafka 클러스터 및 항목을 생성하는 방법에 대한 자세한 내용은 OpenShift에서 AMQ Streams 배포 및 관리를 참조하십시오.
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 시크릿을 수동으로 생성해야 합니다.
프로세스
- OpenShift 웹 콘솔에서 Installed Operators 를 클릭하고 AMQ Streams Operator 세부 정보를 선택한 다음 Kafka 탭을 선택합니다.
- Create Kafka 를 클릭하여 Apicurio 레지스트리 스토리지에 대한 새 Kafka 클러스터를 프로비저닝합니다.
Kafka 클러스터에 TLS 인증을 사용하도록
권한 부여
및tls
필드를 구성합니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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 주제를 수동으로 생성하지 않으려면 다음 단계를 건너뜁니다.
-
Kafka Topic 탭을 클릭한 다음 Kafka Topic 생성 을 클릭하여
kafkasql-journal
주제를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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
Kafka 사용자 리소스를 생성하여 Apicurio Registry 사용자에 대한 인증 및 권한 부여를 구성합니다.
metadata
섹션에 사용자 이름을 지정하거나 기본my-user
를 사용할 수 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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 Copied! Toggle word wrap Toggle overflow ... 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
... 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
워크로드 및 시크릿을 클릭하여 AMQ Streams가 Kafka 클러스터에 연결하기 위해 Apicurio Registry를 위해 생성하는 두 가지 시크릿을 찾습니다.
-
my-cluster-cluster-ca-cert
- Kafka 클러스터의 PKCS12 신뢰 저장소 포함 my-user
- 사용자의 키 저장소 포함참고시크릿 이름은 클러스터 또는 사용자 이름에 따라 다를 수 있습니다.
-
수동으로 보안을 생성하는 경우 다음 키-값 쌍을 포함해야 합니다.
my-cluster-ca-cert
-
ca.p12
- PKCS12 형식의 신뢰 저장소 -
ca.password
- truststore 암호
-
my-user
-
user.p12
- PKCS12 형식의 키 저장소 -
user.password
- 키 저장소 암호
-
Apicurio 레지스트리를 배포하도록 다음 예제 구성을 구성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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 시크릿을 수동으로 생성해야 합니다.
프로세스
- OpenShift 웹 콘솔에서 Installed Operators 를 클릭하고 AMQ Streams Operator 세부 정보를 선택한 다음 Kafka 탭을 선택합니다.
- Create Kafka 를 클릭하여 Apicurio 레지스트리 스토리지에 대한 새 Kafka 클러스터를 프로비저닝합니다.
Kafka 클러스터에 SCRAM-SHA-512 인증을 사용하도록
권한 부여
및tls
필드를 구성합니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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 주제를 수동으로 생성하지 않으려면 다음 단계를 건너뜁니다.
-
Kafka Topic 탭을 클릭한 다음 Kafka Topic 생성 을 클릭하여
kafkasql-journal
주제를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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
Kafka 사용자 리소스를 생성하여 Apicurio Registry 사용자에 대한 SCRAM 인증 및 권한 부여를 구성합니다.
metadata
섹션에 사용자 이름을 지정하거나 기본my-user
를 사용할 수 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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 Copied! Toggle word wrap Toggle overflow ... 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
... 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
워크로드 및 시크릿을 클릭하여 AMQ Streams가 Kafka 클러스터에 연결하기 위해 Apicurio Registry를 위해 생성하는 두 가지 시크릿을 찾습니다.
-
my-cluster-cluster-ca-cert
- Kafka 클러스터의 PKCS12 신뢰 저장소 포함 my-user
- 사용자의 키 저장소 포함참고시크릿 이름은 클러스터 또는 사용자 이름에 따라 다를 수 있습니다.
-
수동으로 보안을 생성하는 경우 다음 키-값 쌍을 포함해야 합니다.
my-cluster-ca-cert
-
ca.p12
- PKCS12 형식의 신뢰 저장소 -
ca.password
- truststore 암호
-
my-user
-
암호
- 사용자 암호
-
Apicurio 레지스트리를 배포하도록 다음 예제 설정을 구성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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 클러스터에 인증합니다.
사전 요구 사항
- AMQ Streams에서 Apicurio Registry 데이터의 Kafka 기반 스토리지를 이미 구성해야 합니다. 3.2절. “OpenShift에서 Kafka 스토리지를 사용하여 Apicurio 레지스트리 구성”을 참조하십시오.
프로세스
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
추가 리소스
- OpenShift에서 Apicurio 레지스트리 환경 변수를 설정하는 방법의 예는 다음을 참조하십시오. 6.1절. “OpenShift에서 Apicurio 레지스트리 상태 점검 구성”
4장. PostgreSQL 데이터베이스에 Apicurio 레지스트리 스토리지 배포
이 장에서는 PostgreSQL 데이터베이스에서 Apicurio 레지스트리 데이터 스토리지를 설치, 구성 및 관리하는 방법을 설명합니다.
사전 요구 사항
4.1. OpenShift OperatorHub에서 PostgreSQL 데이터베이스 설치
PostgreSQL 데이터베이스 Operator가 아직 설치되지 않은 경우 OperatorHub에서 OpenShift 클러스터에 PostgreSQL Operator를 설치할 수 있습니다. OperatorHub는 OpenShift Container Platform 웹 콘솔에서 사용할 수 있으며 클러스터 관리자가 Operator를 검색하고 설치할 수 있는 인터페이스를 제공합니다. 자세한 내용은 OperatorHub 이해 를 참조하십시오.
사전 요구 사항
- OpenShift 클러스터에 대한 클러스터 관리자 액세스 권한이 있어야 합니다.
프로세스
- OpenShift Container Platform 웹 콘솔에서 클러스터 관리자 권한이 있는 계정을 사용하여 로그인합니다.
-
PostgreSQL Operator를 설치할 OpenShift 프로젝트로 변경합니다. 예를 들어 프로젝트 드롭다운에서
my-project
를 선택합니다. - 왼쪽 탐색 메뉴에서 Operator를 클릭한 다음 OperatorHub 를 클릭합니다.
-
키워드로 필터링 텍스트 상자에
PostgreSQL
을 입력하여 환경에 적합한 Operator를 찾습니다(예: Crunchy PostgreSQL for OpenShift ). - Operator에 대한 정보를 읽고 설치를 클릭하여 Operator 서브스크립션 페이지를 표시합니다.
서브스크립션 설정을 선택합니다. 예를 들면 다음과 같습니다.
- 업데이트 채널:stable
- 설치 모드:클러스터의 특정 네임스페이스 및 my-project
- 승인 전략: 자동 또는 수동선택
설치를 클릭하고 Operator를 사용할 준비가 될 때까지 몇 분 정도 기다립니다.
중요데이터베이스를 생성하고 관리하는 방법에 대한 자세한 내용은 선택한 PostgreSQL Operator에서 문서를 읽어야 합니다.
4.2. OpenShift에서 PostgreSQL 데이터베이스 스토리지를 사용하여 Apicurio 레지스트리 구성
이 섹션에서는 PostgreSQL 데이터베이스 Operator를 사용하여 OpenShift에서 Apicurio Registry용 스토리지를 구성하는 방법을 설명합니다. 환경에 따라 Apicurio Registry를 기존 데이터베이스에 설치하거나 새 데이터베이스를 생성할 수 있습니다. 이 섹션에서는 Dev4Ddevs.com에서 PostgreSQL Operator를 사용하는 간단한 예를 보여줍니다.
사전 요구 사항
- 클러스터 관리자 액세스 권한이 있는 OpenShift 클러스터가 있어야 합니다.
- 이미 Apicurio 레지스트리가 설치되어 있어야 합니다. 2장. OpenShift에 Apicurio 레지스트리 설치을 참조하십시오.
- OpenShift에 PostgreSQL Operator가 이미 설치되어 있어야 합니다. 예를 들면 4.1절. “OpenShift OperatorHub에서 PostgreSQL 데이터베이스 설치” 을 참조하십시오.
프로세스
- OpenShift Container Platform 웹 콘솔에서 클러스터 관리자 권한이 있는 계정을 사용하여 로그인합니다.
-
Apicurio Registry 및 PostgreSQL Operator가 설치된 OpenShift 프로젝트로 변경합니다. 예를 들어 프로젝트 드롭다운에서
my-project
를 선택합니다. - Apicurio 레지스트리 스토리지를 위한 PostgreSQL 데이터베이스를 생성합니다. 예를 들어 설치된 Operator , Dev4Ddevs.com의 PostgreSQL Operator 를 클릭한 다음 데이터베이스 만들기를 클릭합니다.
YAML 을 클릭하고 다음과 같이 데이터베이스 설정을 편집합니다.
-
name
:registry
로 값 변경 -
image
: 값을centos/postgresql-12-centos7
로 변경합니다.
-
환경에 따라 필요에 따라 다른 데이터베이스 설정을 편집합니다. 예를 들면 다음과 같습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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
- 생성을 클릭하고 데이터베이스가 생성될 때까지 기다립니다.
- 설치된 Operators > Red Hat Integration - Service Registry > ApicurioRegistry > Create ApicurioRegistry 를 클릭합니다.
다음 사용자 정의 리소스 정의에 붙여넣고 데이터베이스
URL
및 인증 정보의 값을 환경에 맞게 편집합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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
- 생성 을 클릭하고 OpenShift에서 Apicurio 레지스트리 경로가 생성될 때까지 기다립니다.
네트워킹 > 경로를 클릭하여 Apicurio 레지스트리 웹 콘솔의 새 경로에 액세스합니다. 예를 들면 다음과 같습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow http://example-apicurioregistry-sql.my-project.my-domain-name.com/
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 Copied! Toggle word wrap Toggle overflow pg_dump dbname > dumpfile
$ pg_dump dbname > dumpfile
-h 호스트 및
옵션을 사용하여-
p 포트pg_dump
가 연결되는 데이터베이스 서버를 지정할 수 있습니다.gzip과 같은 압축 도구를 사용하여 대용량 덤프 파일을 줄일 수 있습니다. 예를 들면 다음과 같습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pg_dump dbname | gzip > filename.gz
$ pg_dump dbname | gzip > filename.gz
추가 리소스
- 클라이언트 인증에 대한 자세한 내용은 PostgreSQL 설명서 를 참조하십시오.
- 레지스트리 콘텐츠 가져오기 및 내보내기에 대한 자세한 내용은 REST API를 사용하여 Apicurio 레지스트리 콘텐츠 관리를 참조하십시오.
4.4. Apicurio 레지스트리 PostgreSQL 스토리지 복원
psql
유틸리티를 사용하여 pg_dump
에서 생성한 SQL Dump 파일을 복원할 수 있습니다.
사전 요구 사항
-
pg_dump
를 사용하여 PostgreSQL datbase를 백업해야 합니다. 4.3절. “Apicurio 레지스트리 PostgreSQL 스토리지 백업”을 참조하십시오. - 개체를 소유하거나 덤프된 데이터베이스의 개체에 대한 권한이 있는 모든 사용자는 이미 있어야 합니다.
프로세스
다음 명령을 입력하여 데이터베이스를 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow createdb -T template0 dbname
$ createdb -T template0 dbname
다음 명령을 입력하여 SQL 덤프를 복원합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow psql dbname < dumpfile
$ psql dbname < dumpfile
- 쿼리 최적화에 유용한 통계가 있도록 각 데이터베이스에서 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 보안”
- 5.2절. “Red Hat Single Sign-On을 사용하여 Apicurio 레지스트리 인증 및 권한 부여 구성”
- 5.3절. “Microsoft Azure Active Directory를 사용하여 Apicurio 레지스트리 인증 및 권한 부여 구성”
- 5.4절. “Apicurio 레지스트리 인증 및 권한 부여 구성 옵션”
- 5.5절. “OpenShift 클러스터 내부에서 Apicurio 레지스트리에 대한 HTTPS 연결 구성”
- 5.6절. “OpenShift 클러스터 외부에서 Apicurio 레지스트리에 대한 HTTPS 연결 구성”
추가 리소스
Java 클라이언트 애플리케이션의 보안 구성에 대한 자세한 내용은 다음을 참조하십시오.
5.1. Red Hat Single Sign-On Operator를 사용하여 Apicurio Registry 보안
다음 절차에서는 Red Hat Single Sign-On으로 보호되도록 Apicurio Registry REST API 및 웹 콘솔을 구성하는 방법을 보여줍니다.
Apicurio Registry는 다음 사용자 역할을 지원합니다.
이름 | capabilities |
---|---|
| 전체 액세스 권한, 제한 없음. |
|
아티팩트를 생성하고 아티팩트 규칙을 구성합니다. 글로벌 규칙을 수정하거나 가져오기/내보냈거나 |
|
보기 및 검색만 합니다. 아티팩트 또는 규칙을 수정하거나 가져오기/내보냈거나 |
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 설명서를 참조하십시오.
프로세스
- OpenShift 웹 콘솔에서 설치된 Operator 및 Red Hat Single Sign-On Operator 를 클릭한 다음 Keycloak 탭을 클릭합니다.
Apicurio 레지스트리 배포 보안을 위해 Create Keycloak 을 클릭하여 새 Red Hat Single Sign-On 인스턴스를 프로비저닝합니다. 예를 들어 기본값을 사용할 수 있습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: keycloak.org/v1alpha1 kind: Keycloak metadata: name: example-keycloak labels: app: sso spec: instances: 1 externalAccess: enabled: True podDisruptionBudget: enabled: True
apiVersion: keycloak.org/v1alpha1 kind: Keycloak metadata: name: example-keycloak labels: app: sso spec: instances: 1 externalAccess: enabled: True podDisruptionBudget: enabled: True
- 인스턴스가 생성될 때까지 기다린 다음 Networking 을 클릭한 다음 Routes 를 클릭하여 keycloak 인스턴스의 새 경로에 액세스합니다.
- 위치 URL을 클릭하고 Apicurio Registry를 배포할 때 나중에 사용할 수 있도록 표시된 URL 값을 복사합니다.
설치된 Operator 및 Red Hat Single Sign-On Operator 를 클릭하고 Keycloak 을 클릭한 다음 Keycloak 만들기를 클릭하여
레지스트리
예제 영역을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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 웹 콘솔을 사용하여 영역을 생성하고 관리할 수도 있습니다.클러스터에 유효한 HTTPS 인증서가 구성되지 않은 경우 임시 해결 방법으로 다음 HTTP
Service
및Ingress
리소스를 생성할 수 있습니다.네트워킹 및 서비스를 클릭하고 다음 예제를 사용하여 서비스 생성 을 클릭합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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: {}
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: {}
네트워킹을 클릭한 다음 Ingress 를 클릭하고 다음 예제를 사용하여 Ingress 생성 을 클릭합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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 경로 대신 사용합니다.
Apicurio Registry Operator 를 클릭하고 ApicurioRegistry 탭에서 다음 예제를 사용하여 ApicurioRegistry 만들기 를 클릭하고
keycloak
섹션의 값을 바꿉니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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'
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 레지스트리 인증 및 권한 부여 설정은 기본적으로 비활성화되어 있습니다.
사전 요구 사항
- Red Hat Single Sign-On이 설치되어 실행 중입니다. 자세한 내용은 Red Hat Single Sign-On 사용자 설명서를 참조하십시오.
- Apicurio 레지스트리가 설치되어 실행 중입니다.
프로세스
-
Red Hat Single Sign-On 관리 콘솔에서 Apicurio Registry를 위한 Red Hat Single Sign-On 영역을 생성합니다. 기본적으로 Apicurio Registry에는
레지스트리
의 영역 이름이 필요합니다. 영역 생성에 대한 자세한 내용은 Red Hat Single Sign-On 사용자 설명서를 참조하십시오. Apicurio 레지스트리 API에 대한 Red Hat Single Sign-On 클라이언트를 생성합니다. 기본적으로 Apicurio Registry에는 다음과 같은 설정이 필요합니다.
-
Client ID:
registry-api
-
클라이언트 프로토콜:
openid-connect
액세스 유형:
베어러 전용
다른 클라이언트 설정에 기본값을 사용할 수 있습니다.
참고Red Hat Single Sign-On 서비스 계정을 사용하는 경우
전달자 전용
대신 클라이언트 액세스 유형을기밀로
유지해야 합니다.
-
Client ID:
Apicurio 레지스트리 웹 콘솔용 Red Hat Single Sign-On 클라이언트를 생성합니다. 기본적으로 Apicurio Registry에는 다음과 같은 설정이 필요합니다.
-
클라이언트 ID:
apicurio-registry
-
클라이언트 프로토콜:
openid-connect
-
액세스 유형:
public
-
Valid Redirect URLs:
http://my-registry-url:8080/*
웹 출처:
+
다른 클라이언트 설정에 기본값을 사용할 수 있습니다.
-
클라이언트 ID:
OpenShift의 Apicurio Registry 배포에서 다음 Apicurio Registry 환경 변수를 설정하여 Red Hat Single Sign-On을 사용하여 인증을 구성합니다.
표 5.2. Red Hat Single Sign-On을 사용한 Apicurio 레지스트리 인증 구성 환경 변수 설명 유형 Default 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 레지스트리 상태 점검 구성” 을 참조하십시오.
Red Hat Single Sign-On에서 Apicurio Registry 사용자 역할을 활성화하려면 다음 옵션을
true
로 설정합니다.표 5.3. Apicurio 레지스트리 역할 기반 권한 부여 구성 환경 변수 Java 시스템 속성 유형 기본값 ROLE_BASED_AUTHZ_ENABLED
registry.auth.role-based-authorization
부울
false
Apicurio Registry 사용자 역할이 활성화되면 Red Hat Single Sign-On 영역에서 다음 기본 사용자 역할 중 하나 이상에 Apicurio Registry 사용자를 할당해야 합니다.
표 5.4. 레지스트리 인증 및 권한 부여를 위한 기본 사용자 역할 Role 아티팩트 읽기 아티팩트 작성 글로벌 규칙 요약 sr-admin
제공됨
제공됨
제공됨
모든 생성, 읽기, 업데이트 및 삭제 작업에 대한 전체 액세스 권한
sr-developer
제공됨
제공됨
없음
글로벌 규칙 구성을 제외하고 생성, 읽기, 업데이트 및 삭제 작업에 대한 액세스 권한이 있어야 합니다. 이 역할은 아티팩트별 규칙을 구성할 수 있습니다.
sr-readonly
제공됨
없음
없음
읽기 및 검색 작업만 액세스할 수 있습니다. 이 역할은 규칙을 구성할 수 없습니다.
Apicurio Registry의 스키마 및 API 아티팩트 업데이트에 대한 소유자 전용 권한을 활성화하려면 다음을
true
로 설정합니다.표 5.5. 소유자 전용 권한 부여 구성 환경 변수 Java 시스템 속성 유형 기본값 REGISTRY_AUTH_OBAC_ENABLED
registry.auth.owner-only-authorization
부울
false
추가 리소스
- 기본이 아닌 사용자 역할 이름 구성에 대한 자세한 내용은 5.4절. “Apicurio 레지스트리 인증 및 권한 부여 구성 옵션” 을 참조하십시오.
- 오픈 소스 예제 애플리케이션 및 Keycloak 영역은 Keycloak이 있는 Apicurio Registry의 Docker Compose 예제를 참조하십시오.
- 프로덕션 환경에서 Red Hat Single Sign-On을 사용하는 방법에 대한 자세한 내용은 Red Hat Single Sign-On 설명서를 참조하십시오.
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에서 환경 변수를 구성해야 합니다.
사전 요구 사항
- Azure AD가 설치되어 실행 중입니다. 자세한 내용은 Microsoft Azure AD 사용자 설명서를 참조하십시오.
- Apicurio 레지스트리가 설치되어 실행 중입니다.
프로세스
- 이메일 주소 또는 GitHub 계정을 사용하여 Azure AD 포털에 로그인합니다.
탐색 메뉴에서 관리 > 앱 등록 > 새 등록 을 선택하고 다음 설정을 완료합니다.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을 허용하지 않습니다.
-
Name: 애플리케이션 이름을 입력합니다. 예:
- 등록을 클릭합니다. Manage > App registrations > apicurio-registry-example 을 선택하여 앱 등록 세부 정보를 볼 수 있습니다.
관리 > 인증을 선택하고 애플리케이션이 다음과 같이 리디렉션 URL 및 토큰으로 구성되어 있는지 확인합니다.
-
리디렉션 URI: 예:
https://test-registry.com/ui/
- 암시적 부여 및 하이브리드 흐름: ID 토큰을 클릭합니다(Implicit및 하이브리드 흐름에 사용됨)
-
리디렉션 URI: 예:
-
Azure AD > Admin > App registrations > your app > Application (client) ID 를 선택합니다. 예:
123456a7-b8c9-012d-e3f4-5fg67h8i901
-
Azure AD > Admin > App registrations > your app > Directory (tenant) ID 를 선택합니다. 예:
https://login.microsoftonline.com/1a2bc34d-567e-89f1-g0hi-1j2kl3m4no56/v2.0
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
.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 레지스트리 인증 및 권한 부여 구성 옵션” 을 참조하십시오.
- Azure AD 사용에 대한 자세한 내용은 Microsoft Azure AD 사용자 설명서를 참조하십시오.
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에 대한 인증을 구성할 수 있습니다.
환경 변수 | 설명 | 유형 | Default |
---|---|---|---|
|
Apicurio 레지스트리에 대한 인증을 활성화합니다. | 문자열 |
|
|
Red Hat Single Sign-On 인증 서버의 URL입니다. 예: | 문자열 | - |
|
인증을 위한 Red Hat Single Sign-On 영역. 예: | 문자열 | - |
| Apicurio 레지스트리 REST API의 클라이언트 ID입니다. | 문자열 |
|
| Apicurio 레지스트리 웹 콘솔의 클라이언트 ID입니다. | 문자열 |
|
HTTP 기본 설정을 사용하여 Apicurio 레지스트리 인증
기본적으로 Apicurio Registry는 OpenID Connect를 사용하여 인증을 지원합니다. 사용자 또는 API 클라이언트는 Apicurio Registry REST API에 대한 인증된 호출을 수행하기 위해 액세스 토큰을 가져와야 합니다. 그러나 일부 툴이 OpenID Connect를 지원하지 않기 때문에 다음 구성 옵션을 true
로 설정하여 HTTP 기본 인증을 지원하도록 Apicurio Registry를 구성할 수도 있습니다.
환경 변수 | Java 시스템 속성 | 유형 | 기본값 |
---|---|---|---|
|
| 부울 |
|
|
| 부울 |
|
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
분으로 설정해야 합니다.
환경 변수 | Java 시스템 속성 | 유형 | 기본값 |
---|---|---|---|
|
| 정수 |
|
Apicurio 레지스트리 역할 기반 권한 부여
다음 옵션을 true
로 설정하여 Apicurio Registry에서 역할 기반 인증을 활성화할 수 있습니다.
환경 변수 | Java 시스템 속성 | 유형 | 기본값 |
---|---|---|---|
|
| 부울 |
|
|
| 부울 |
|
그런 다음 사용자의 인증 토큰에 포함된 역할을 사용하거나(예: Red Hat Single Sign-On을 사용하여 인증할 때 부여됨) Apicurio Registry에서 내부적으로 관리하는 역할 매핑을 사용하도록 역할 기반 권한을 구성할 수 있습니다.
Red Hat Single Sign-On에서 할당된 역할 사용
Red Hat Single Sign-On에서 할당한 역할을 사용하여 활성화하려면 다음 환경 변수를 설정합니다.
환경 변수 | 설명 | 유형 | Default |
---|---|---|---|
|
| 문자열 |
|
| 사용자가 관리자임을 나타내는 역할의 이름입니다. | 문자열 |
|
| 사용자가 개발자임을 나타내는 역할의 이름입니다. | 문자열 |
|
| 사용자에게 읽기 전용 액세스 권한을 나타내는 역할의 이름입니다. | 문자열 |
|
Red Hat Single Sign-On의 역할을 사용하도록 Apicurio Registry가 구성된 경우 Red Hat Single Sign-On에서 다음 사용자 역할 중 하나 이상에 Apicurio Registry 사용자를 할당해야 합니다. 그러나 표 5.12. “Red Hat Single Sign-On을 사용하여 Apicurio Registry 역할 기반 권한 부여 구성” 의 환경 변수를 사용하여 다른 사용자 역할 이름을 구성할 수 있습니다.
역할 이름 | 아티팩트 읽기 | 아티팩트 작성 | 글로벌 규칙 | 설명 |
---|---|---|---|---|
| 제공됨 | 제공됨 | 제공됨 | 모든 생성, 읽기, 업데이트 및 삭제 작업에 대한 전체 액세스 권한 |
| 제공됨 | 제공됨 | 없음 | 글로벌 규칙 및 가져오기/내보냄을 구성하는 것을 제외하고 생성, 읽기, 업데이트 및 삭제 작업에 대한 액세스 권한이 있어야 합니다. 이 역할은 아티팩트별 규칙만 구성할 수 있습니다. |
| 제공됨 | 없음 | 없음 | 읽기 및 검색 작업만 액세스할 수 있습니다. 이 역할은 규칙을 구성할 수 없습니다. |
Apicurio 레지스트리에서 직접 역할 관리
Apicurio Registry에서 내부적으로 관리하는 역할을 사용하려면 다음 환경 변수를 설정합니다.
환경 변수 | 설명 | 유형 | Default |
---|---|---|---|
|
| 문자열 |
|
내부적으로 관리되는 역할 매핑을 사용하는 경우 Apicurio Registry REST API에서 /admin/roleMappings
끝점을 사용하여 역할을 할당할 수 있습니다. 자세한 내용은 Apicurio Registry REST API 설명서를 참조하십시오.
사용자에게 ADMIN
,DEVELOPER
또는 READ_ONLY
라는 역할이 정확히 하나만 부여될 수 있습니다. 관리자 권한이 있는 사용자만 다른 사용자에게 액세스 권한을 부여할 수 있습니다.
Apicurio 레지스트리 관리자-override 구성
Apicurio 레지스트리에 기본 관리자 사용자가 없으므로 일반적으로 사용자가 관리자로 식별할 수 있는 다른 방법을 구성하는 것이 도움이 됩니다. 다음 환경 변수를 사용하여 admin-override 기능을 구성할 수 있습니다.
환경 변수 | 설명 | 유형 | Default |
---|---|---|---|
| admin-override 기능을 활성화합니다. | 문자열 |
|
|
관리자 덮어쓰기 정보는 어디에서 찾을 수 있습니까. 현재 | 문자열 |
|
|
사용자가 관리자인지 확인하는 데 사용되는 정보 유형입니다. 값은 FROM이 | 문자열 |
|
| 사용자가 관리자임을 나타내는 역할의 이름입니다. | 문자열 |
|
| admin-override를 결정하는 데 사용할 JWT 토큰 클레임의 이름입니다. | 문자열 |
|
| CLAIM 변수에 표시된 JWT 토큰 클레임 값은 사용자에게 admin-override를 부여하기 위한 값이어야 합니다. | 문자열 |
|
예를 들어 이 관리자 덮어쓰기 기능을 사용하여 Red Hat Single Sign-On의 단일 사용자에게 sr-admin
역할을 할당하여 해당 사용자에게 admin 역할을 부여할 수 있습니다. 그러면 해당 사용자는 /admin/roleMappings
REST API(또는 관련 UI)를 사용하여 추가 사용자(추가 관리자 포함)에 역할을 부여할 수 있습니다.
Apicurio 레지스트리 소유자 전용 권한 부여
다음 옵션을 true
로 설정하여 Apicurio Registry의 아티팩트 또는 아티팩트 그룹에 대한 소유자 전용 권한을 활성화할 수 있습니다.
환경 변수 | Java 시스템 속성 | 유형 | 기본값 |
---|---|---|---|
|
| 부울 |
|
|
| 부울 |
|
|
| 부울 |
|
소유자 전용 권한 부여가 활성화된 경우 아티팩트를 생성한 사용자만 해당 아티팩트를 수정하거나 삭제할 수 있습니다.
소유자 전용 권한 부여 및 그룹 소유자 전용 권한 부여가 모두 활성화된 경우 아티팩트 그룹을 생성한 사용자만 해당 아티팩트 그룹에 대한 쓰기 액세스 권한(예: 해당 그룹에서 아티팩트를 추가 또는 제거)에 액세스할 수 있습니다.
Apicurio 레지스트리 인증 읽기 액세스
인증된 읽기 액세스 옵션이 활성화되면 Apicurio Registry는 사용자 역할에 관계없이 동일한 조직의 인증된 사용자의 요청에 대해 최소한 읽기 전용 액세스 권한을 부여합니다.
인증된 읽기 액세스를 활성화하려면 먼저 역할 기반 인증을 활성화한 다음 다음 옵션이 true
로 설정되어 있는지 확인해야 합니다.
환경 변수 | Java 시스템 속성 | 유형 | 기본값 |
---|---|---|---|
|
| 부울 |
|
|
| 부울 |
|
자세한 내용은 “Apicurio 레지스트리 역할 기반 권한 부여” 에서 참조하십시오.
Apicurio 레지스트리 익명 읽기 전용 액세스
Apicurio Registry는 두 가지 주요 권한 부여 유형(역할 기반 및 소유자 기반 권한 부여) 외에도 익명 읽기 전용 액세스 옵션을 지원합니다.
인증 자격 증명이 없는 REST API 호출과 같은 익명 사용자를 허용하려면 REST API에 대한 읽기 전용 호출을 수행하려면 다음 옵션을 true
로 설정합니다.
환경 변수 | Java 시스템 속성 | 유형 | 기본값 |
---|---|---|---|
|
| 부울 |
|
|
| 부울 |
|
추가 리소스
- OpenShift에서 Apicurio 레지스트리 배포에서 환경 변수를 설정하는 방법의 예는 다음을 참조하십시오. 6.3절. “Apicurio 레지스트리 환경 변수 관리”
- Apicurio Registry에 대한 사용자 지정 인증 구성에 대한 자세한 내용은 Quarkus Open ID Connect 설명서를 참조하십시오.
5.5. OpenShift 클러스터 내부에서 Apicurio 레지스트리에 대한 HTTPS 연결 구성
다음 절차에서는 OpenShift 클러스터 내부에서 HTTPS 연결에 대한 포트를 노출하도록 Apicurio Registry 배포를 구성하는 방법을 보여줍니다.
이러한 종류의 연결은 클러스터 외부에서 직접 사용할 수 없습니다. 라우팅은 HTTPS 연결의 경우 인코딩되는 호스트 이름을 기반으로 합니다. 따라서 엣지 종료 또는 기타 구성이 필요합니다. 5.6절. “OpenShift 클러스터 외부에서 Apicurio 레지스트리에 대한 HTTPS 연결 구성”을 참조하십시오.
사전 요구 사항
- Apicurio Registry Operator가 이미 설치되어 있어야 합니다.
프로세스
자체 서명된 인증서를 사용하여
키 저장소를
생성합니다. 자체 인증서를 사용하는 경우 이 단계를 건너뛸 수 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout tls.key -out tls.crt
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout tls.key -out tls.crt
인증서 및 개인 키를 저장할 새 보안을 생성합니다.
- OpenShift 웹 콘솔의 왼쪽 탐색 메뉴에서 워크로드 > 시크릿 > Create Key/Value Secret 을 클릭합니다.
-
다음 값을 사용합니다.
Name:https-cert-secret
키 1:tls.key
값 1: tls.key (uploaded file)
키 2:tls.crt
값 2: tls.crt (uploaded file)
또는 다음 명령을 사용하여 시크릿을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create secret generic https-cert-secret --from-file=tls.key --from-file=tls.crt
oc create secret generic https-cert-secret --from-file=tls.key --from-file=tls.crt
Apicurio Registry 배포를 위해
ApicurioRegistry
CR의spec.configuration.security.https
섹션을 편집합니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: registry.apicur.io/v1 kind: ApicurioRegistry metadata: name: example-apicurioregistry spec: configuration: # ... security: https: secretName: https-cert-secret
apiVersion: registry.apicur.io/v1 kind: ApicurioRegistry metadata: name: example-apicurioregistry spec: configuration: # ... security: https: secretName: https-cert-secret
연결이 작동하는지 확인합니다.
SSH를 사용하여 클러스터의 Pod에 연결합니다(Apicurio 레지스트리 Pod를 사용할 수 있음).
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc rsh example-apicurioregistry-deployment-6f788db977-2wzpw
oc rsh example-apicurioregistry-deployment-6f788db977-2wzpw
서비스 리소스에서 Apicurio 레지스트리 Pod의 클러스터 IP를 찾습니다(웹 콘솔의 위치 열 참조). 이후 테스트 요청을 실행합니다. 자체 서명된 인증서를 사용하므로 비보안 플래그가 필요합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl -k https://172.30.230.78:8443/health
curl -k https://172.30.230.78:8443/health
HTTPS 인증서 및 키가 포함된 Kubernetes 시크릿에서 제공된 값에 tls.crt
및 tls.key
이름을 사용해야 합니다. 현재 구성 불가능합니다.
HTTP 비활성화
이 섹션의 절차를 사용하여 HTTPS를 활성화한 경우 spec.security.https.disableHttp
를 true
로 설정하여 기본 HTTP 연결을 비활성화할 수도 있습니다. 이렇게 하면 Apicurio 레지스트리 Pod 컨테이너, 서비스
및 NetworkPolicy
(있는 경우)에서 HTTP 포트 8080이 제거됩니다.
중요한 것은 Apicurio Registry Operator가 현재 Ingress
에서 HTTPS 구성을 지원하지 않기 때문에 Ingress
도 제거됩니다. 사용자는 HTTPS 연결에 대한 Ingress
를 수동으로 생성해야 합니다.
5.6. OpenShift 클러스터 외부에서 Apicurio 레지스트리에 대한 HTTPS 연결 구성
다음 절차에서는 OpenShift 클러스터 외부의 연결에 대한 HTTPS 에지 종료 경로를 노출하도록 Apicurio Registry 배포를 구성하는 방법을 보여줍니다.
사전 요구 사항
- Apicurio Registry Operator가 이미 설치되어 있어야 합니다.
- 보안 경로를 생성하기 위한 OpenShift 문서를 참조하십시오.
프로세스
Apicurio Registry Operator가 생성한 HTTP 경로 외에 두 번째 경로를 추가합니다. 예를 들면 다음과 같습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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 Copied! Toggle word wrap Toggle overflow openssl genrsa 2048 > tls.key && openssl req -new -x509 -nodes -sha256 -days 365 -key tls.key -out tls.crt
openssl genrsa 2048 > tls.key && openssl req -new -x509 -nodes -sha256 -days 365 -key tls.key -out tls.crt
그런 다음 OpenShift CLI를 사용하여 경로를 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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 레지스트리 스토리지를 이미 설치하고 구성해야 합니다.
프로세스
- OpenShift Container Platform 웹 콘솔에서 클러스터 관리자 권한이 있는 계정을 사용하여 로그인합니다.
- 설치된 Operators > Red Hat Integration - Service Registry Operator 를 클릭합니다.
- ApicurioRegistry 탭에서 배포에 대한 Operator 사용자 정의 리소스를 클릭합니다(예: example-apicurioregistry ).
-
기본 개요 페이지에서 Apicurio Registry 배포의 Deployment Name 섹션 및 해당
DeploymentConfig
이름을 찾습니다(예: example-apicurioregistry ). -
왼쪽 탐색 메뉴에서 워크로드 > 배포 구성을 클릭하고
DeploymentConfig
이름을 선택합니다. 환경 탭을 클릭하고 Single values env 섹션에 환경 변수를 입력합니다. 예를 들면 다음과 같습니다.
-
NAME:
LIVENESS_STATUS_RESET
-
VALUE:
350
-
NAME:
아래쪽에서 저장을 클릭합니다.
또는 OpenShift
oc
명령을 사용하여 이러한 단계를 수행할 수 있습니다. 자세한 내용은 OpenShift CLI 설명서를 참조하십시오.
6.2. Apicurio 레지스트리 상태 점검의 환경 변수
이 섹션에서는 OpenShift에서 Apicurio 레지스트리 상태 점검에 사용할 수 있는 환경 변수에 대해 설명합니다. 여기에는 OpenShift에서 Apicurio 레지스트리 서버의 상태를 모니터링하는 활성 및 준비 상태 프로브가 포함됩니다. 예제 프로시저는 6.1절. “OpenShift에서 Apicurio 레지스트리 상태 점검 구성” 을 참조하십시오.
다음 환경 변수는 참조용으로만 제공됩니다. 기본값은 대부분의 경우용으로 설계되었으며 환경에 필요한 경우에만 변경해야 합니다. 기본값에 대한 모든 변경 사항은 저장된 하드웨어, 네트워크 및 용량에 따라 다릅니다. 이러한 값은 불필요한 오버헤드를 방지하기 위해 가능한 한 낮게 유지해야 합니다.
활성 환경 변수
이름 | 설명 | 유형 | Default |
---|---|---|---|
| 활성 프로브가 실패하기 전에 발생할 수 있는 활성 문제 또는 오류 수입니다. | 정수 |
|
| 임계값 오류가 발생해야 하는 기간입니다. 예를 들어 이 값이 60이고 임계값이 1이면 1분 내에 두 개의 오류가 발생하면 검사가 실패합니다. | 초 |
|
| 활성 프로브가 OK 상태로 재설정되는 경우 더 이상 오류 없이 경과해야 하는 시간(초)입니다. | 초 |
|
| 쉼표로 구분된 비활성화된 활성 예외 목록입니다. | 문자열 |
|
OpenShift는 활성 상태 점검에 실패하는 포드를 자동으로 재시작하므로 준비 설정과 달리 활성 설정은 OpenShift의 Apicurio 레지스트리 동작에 직접적인 영향을 미치지 않습니다.
준비 환경 변수
이름 | 설명 | 유형 | Default |
---|---|---|---|
| 준비 상태 프로브가 실패하기 전에 발생할 수 있는 준비 상태 문제 또는 오류 수입니다. | 정수 |
|
| 임계값 오류가 발생해야 하는 기간입니다. 예를 들어 이 값이 60이고 임계값이 1이면 1분 내에 두 개의 오류가 발생하면 검사가 실패합니다. | 초 |
|
| 활성 프로브가 OK 상태로 재설정되는 경우 더 이상 오류 없이 경과해야 하는 시간(초)입니다. 이 경우 일반 작업으로 돌아갈 때까지 Pod가 준비되지 않은 상태로 유지되는 기간이 표시됩니다. | 초 |
|
| 준비 상태는 다음 두 작업의 시간 초과를 추적합니다.
이러한 작업이 구성된 시간 초과보다 많은 시간이 걸리는 경우 준비 상태 문제 또는 오류로 계산됩니다. 이 값은 두 작업의 시간 초과를 제어합니다. | 초 |
|
6.3. Apicurio 레지스트리 환경 변수 관리
Apicurio Registry Operator는 가장 일반적인 Apicurio 레지스트리 구성을 관리하지만 아직 지원하지 않는 몇 가지 옵션이 있습니다. ApicurioRegistry
CR에서 높은 수준의 설정 옵션을 사용할 수 없는 경우 환경 변수를 사용하여 조정할 수 있습니다. spec.configuration.env
필드에서 ApicurioRegistry
CR에서 직접 환경 변수를 설정하여 이러한 변수를 업데이트할 수 있습니다. 그런 다음 Apicurio 레지스트리의 배포
리소스로 전달됩니다.
프로세스
OpenShift 웹 콘솔 또는 CLI를 사용하여 Apicurio 레지스트리 환경 변수를 관리할 수 있습니다.
- OpenShift 웹 콘솔
- 설치된 Operator 탭을 선택한 다음 Red Hat Integration - Service Registry Operator 를 선택합니다.
-
Apicurio Registry 탭에서
Apicurio Registry
배포를 위한 ApicurioRegistry CR을 클릭합니다. YAML 탭을 클릭한 다음 필요에 따라
spec.configuration.env
섹션을 편집합니다. 다음 예제에서는 기본 글로벌 콘텐츠 규칙을 설정하는 방법을 보여줍니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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
- Apicurio Registry가 설치된 프로젝트를 선택합니다.
-
oc get apicurioregistry
를 실행하여ApicurioRegistry
CR 목록을 가져옵니다. -
구성할 Apicurio Registry 인스턴스를 나타내는 CR에서
oc edit apicurioregistry
를 실행합니다. spec.configuration.env
섹션에서 환경 변수를 추가하거나 수정합니다.Apicurio Registry Operator는
spec.configuration.env
필드에 이미 지정된 환경 변수를 설정하려고 시도할 수 있습니다. 환경 변수 구성에 충돌하는 값이 있는 경우 Apicurio Registry Operator가 설정한 값이 우선합니다.기능에 대한 고급 구성을 사용하거나 명시적으로 지정된 환경 변수를 사용하여 이 충돌을 방지할 수 있습니다. 다음은 충돌하는 구성의 예입니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: registry.apicur.io/v1 kind: ApicurioRegistry metadata: name: example-apicurioregistry spec: configuration: # ... ui: readOnly: true env: - name: REGISTRY_UI_FEATURES_READONLY value: false
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에서 허용하지 않는 하위 필드 목록이 포함되어 있으며 구성 오류가 발생합니다.
podTemplateSpecPreview subfield | 상태 | 세부 정보 |
---|---|---|
| 대체 방법이 있습니다. |
|
| 대체 방법이 있습니다. |
|
| 대체 방법이 있습니다. |
|
| 경고 |
Apicurio 레지스트리 컨테이너를 구성하려면 |
| 대체 방법이 있습니다. |
|
| 예약됨 | - |
| 대체 방법이 있습니다. |
|
| 대체 방법이 있습니다. |
|
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을 사용합니다.
프로세스
이
curl
명령을 사용하여 로거io.apicurio.registry.storage
에 대한 현재 로그 수준을 가져옵니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl -i localhost:8080/apis/registry/v2/admin/loggers/io.apicurio.registry.storage
$ 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"}
이
curl
명령을 사용하여 로거io.apicurio.registry.storage
의 로그 수준을DEBUG
:로 변경합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl -X PUT -i -H "Content-Type: application/json" --data '{"level":"DEBUG"}' localhost:8080/apis/registry/v2/admin/loggers/io.apicurio.registry.storage
$ 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"}
이
curl
명령을 사용하여 로거io.apicurio.registry.storage
의 로그 수준을 기본값으로 되돌립니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl -X DELETE -i localhost:8080/apis/registry/v2/admin/loggers/io.apicurio.registry.storage
$ 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
에서 실행되는 사용자 정의 애플리케이션을 보여줍니다.
프로세스
HTTP 프로토콜을 사용할 때 다음과 같이 애플리케이션에 이벤트를 보내도록 Apicurio 레지스트리 구성을 설정합니다.
-
registry.events.sink.my-custom-consumer=http://my-app-host:8888/events
-
필요한 경우 다음과 같이 여러 이벤트 소비자를 구성할 수 있습니다.
-
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 주제를 보여줍니다.
프로세스
Kafka 프로토콜을 사용할 때 다음과 같이 Kafka 주제를 설정합니다.
-
registry.events.kafka.topic=my-registry-events
-
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).
필요한 경우 Kafka 주제 파티션을 설정하여 이벤트를 생성할 수도 있습니다.
-
registry.events.kafka.topic-partition=1
-
추가 리소스
- 자세한 내용은 CNCF CloudEvents 사양 을 참조하십시오.
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
리소스를 표시합니다.
oc get apicurioregistry oc edit apicurioregistry example-apicurioregistry
oc get apicurioregistry
oc edit apicurioregistry example-apicurioregistry
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
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 사양 콘텐츠
다음 예제 블록에는 가능한 사양
구성 옵션의 전체 트리가 포함되어 있습니다. 일부 필드는 필수가 아니거나 동시에 정의해서는 안 됩니다.
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>
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>
다음 표에서는 각 구성 옵션에 대해 설명합니다.
구성 옵션 | type | 기본값 | 설명 |
---|---|---|---|
| - | - | Apicurio 레지스트리 애플리케이션 구성 섹션 |
| string | 필수 항목 |
스토리지 백엔드. |
| - | - | SQL 스토리지 백엔드 구성 |
| - | - | SQL 스토리지 백엔드에 대한 데이터베이스 연결 구성 |
| string | 필수 항목 | 데이터베이스 연결 URL 문자열 |
| string | 필수 항목 | 데이터베이스 연결 사용자 |
| string | 빈 | 데이터베이스 연결 암호 |
| - | - | Kafka 스토리지 백엔드 구성 |
| string | 필수 항목 | Kafka 부트스트랩 서버 URL, 스트림 스토리지 백엔드용 |
| - | - | Kafka 스토리지 백엔드에 대한 TLS 인증을 구성하는 섹션 |
| string | 필수 항목 | Kafka의 TLS 신뢰 저장소를 포함하는 시크릿 이름 |
| string | 필수 항목 | 사용자 TLS 키 저장소를 포함하는 시크릿의 이름 |
| string | 필수 항목 | Kafka의 TLS 신뢰 저장소를 포함하는 시크릿 이름 |
| string | 필수 항목 | SCRAM 사용자 이름 |
| string | 필수 항목 | SCRAM 사용자 암호가 포함된 시크릿의 이름 |
| string |
| SASL 메커니즘 |
| - | - | Apicurio 레지스트리 웹 콘솔 설정 |
| string |
| Apicurio 레지스트리 웹 콘솔을 읽기 전용 모드로 설정 |
| string |
|
비Apicurio 구성 요소 및 라이브러리에 대한 Apicurio 레지스트리 로그 수준입니다. 한 |
| string |
|
Apicurio 애플리케이션 구성 요소에 대한 Apicurio 레지스트리 로그 수준(비Apicurio 구성 요소 및 라이브러리 제외). 한 |
| - | - | Apicurio 레지스트리 웹 콘솔 및 REST API 보안 설정 |
| - | - | Red Hat Single Sign-On을 사용한 웹 콘솔 및 REST API 보안 구성 |
| string | 필수 항목 | Red Hat Single Sign-On URL |
| string | 필수 항목 | Red Hat Single Sign-On 영역 |
| string |
| Red Hat Single Sign-On 클라이언트 for REST API |
| string |
| 웹 콘솔용 Red Hat Single Sign-On 클라이언트 |
| - | - | HTTPS 구성. 자세한 내용은 OpenShift 클러스터 내부에서 Apicurio 레지스트리에 대한 HTTPS 연결 구성을 참조하십시오. |
| string | 빈 |
HTTPS 인증서 및 키가 포함된 Kubernetes 보안의 이름입니다. 각각 |
| bool |
| HTTP 포트 및 Ingress를 비활성화합니다. 사전 요구 사항으로 HTTPS를 활성화해야 합니다. |
| k8s.io/api/core/v1 []EnvVar | 빈 | Apicurio 레지스트리 Pod에 제공할 환경 변수 목록을 구성합니다. 자세한 내용은 Apicurio 레지스트리 환경 변수 관리를 참조하십시오. |
| - | - | Apicurio 레지스트리 배포 설정 섹션 |
| 양의 정수 |
| 배포할 Apicurio 레지스트리 Pod 수 |
| string | 자동 생성 | Apicurio 레지스트리 콘솔 및 API를 사용할 수 있는 호스트/URL입니다. 가능한 경우 Apicurio Registry Operator는 클러스터 라우터의 설정에 따라 올바른 값을 결정하려고 합니다. 값은 한 번만 자동 생성되므로 사용자는 나중에 재정의할 수 있습니다. |
| k8s.io/api/core/v1 유사성 | 빈 | Apicurio 레지스트리 배포 유사성 구성 |
| k8s.io/api/core/v1 []Toleration | 빈 | Apicurio 레지스트리 배포 허용 오차 구성 |
| k8s.io/api/core/v1 []LocalObjectReference | 빈 | Apicurio 레지스트리 배포를 위한 이미지 풀 시크릿 구성 |
| - | - | Apicurio 레지스트리 Pod에 대한 레이블 또는 주석 세트를 구성합니다. |
| map[string]string | 빈 | Apicurio Registry Pod에 대한 레이블 세트 구성 |
| map[string]string | 빈 | Apicurio 레지스트리 Pod에 대한 주석 세트 구성 |
| - | - | Apicurio Registry Operator가 Kubernetes 리소스를 관리하는 방법을 구성하는 섹션입니다. 자세한 내용은 Apicurio 레지스트리 관리 리소스를 참조하십시오. |
| bool |
|
설정된 경우 Operator는 Apicurio 레지스트리 배포를 위한 |
| bool |
|
설정된 경우 Operator는 Apicurio 레지스트리 배포에 대한 |
| bool |
|
설정된 경우 Operator는 Apicurio Registry 배포를 위한 |
| k8s.io/api/core/v1 PodTemplateSpec | 빈 | Apicurio 레지스트리 배포 리소스의 일부를 구성합니다. 자세한 내용은 PodTemplate을 사용하여 Apicurio 레지스트리 배포 구성 을 참조하십시오. |
옵션이 필수 로 표시되면 다른 구성 옵션에서 사용할 수 있습니다. 빈 값이 허용될 수 있지만 Operator는 지정된 작업을 수행하지 않습니다.
7.3. Apicurio 레지스트리 CR 상태
상태는
현재 배포 및 애플리케이션 상태에 대한 설명이 포함된 Apicurio Registry Operator에서 관리하는 CR의 섹션입니다.
ApicurioRegistry CR 상태 콘텐츠
status
섹션에는 다음 필드가 포함되어 있습니다.
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>
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>
상태 필드 | 유형 | 설명 |
---|---|---|
| - | 배포된 Apicurio 레지스트리에 대한 정보가 포함된 섹션입니다. |
| string | Apicurio 레지스트리 UI 및 REST API에 액세스할 수 있는 URL입니다. |
| - | Apicurio 레지스트리의 상태 또는 해당 배포와 관련된 Operator를 보고하는 조건 목록입니다. |
| string | 조건의 유형입니다. |
| string |
조건의 상태, |
| string | 조건의 마지막 전환 이유를 나타내는 프로그래밍 방식의 식별자입니다. |
| string | 전환에 대한 세부 정보를 나타내는 사람이 읽을 수 있는 메시지입니다. |
| string | 조건이 다른 상태에서 다른 상태로 전환된 마지막 시간입니다. |
| - | Apicurio Registry Operator에서 관리하는 OpenShift 리소스 목록 |
| string | 리소스 종류. |
| string | 리소스 네임스페이스. |
| string | 리소스 이름입니다. |
7.4. Apicurio 레지스트리 관리 리소스
Apicurio Registry를 배포할 때 Apicurio Registry Operator가 관리하는 리소스는 다음과 같습니다.
-
Deployment
-
Ingress
(및경로
) -
NetworkPolicy
-
PodDisruptionBudget
-
Service
Apicurio Registry Operator가 일부 리소스를 생성 및 관리하지 않도록 비활성화하여 수동으로 구성할 수 있습니다. 이렇게 하면 Apicurio Registry Operator가 현재 지원하지 않는 기능을 사용할 때 유연성이 향상됩니다.
리소스 유형을 비활성화하면 기존 인스턴스가 삭제됩니다. 리소스를 활성화하면 Apicurio Registry Operator에서 app
레이블(예: app=example-apicurioregistry
)을 사용하여 리소스를 찾고 관리를 시작합니다. 그러지 않으면 Operator에서 새 인스턴스를 생성합니다.
이러한 방식으로 다음 리소스 유형을 비활성화할 수 있습니다.
-
Ingress
(및경로
) -
NetworkPolicy
-
PodDisruptionBudget
예를 들면 다음과 같습니다.
apiVersion: registry.apicur.io/v1 kind: ApicurioRegistry metadata: name: example-apicurioregistry spec: deployment: managedResources: disableIngress: true disableNetworkPolicy: true disablePodDisruptionBudget: false # Can be omitted
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가 관리하는 리소스는 일반적으로 다음과 같이 레이블이 지정됩니다.
레이블 | 설명 |
---|---|
|
지정된 ApicurioRegistry CR의 이름을 기반으로 리소스가 속한 |
|
배포 유형: |
|
배포 이름: |
| Apicurio 레지스트리 또는 Apicurio Registry Operator의 버전 |
| 애플리케이션 배포에 권장되는 Kubernetes 레이블 세트입니다. |
| Red Hat 제품의 미터링 레이블입니다. |
사용자 정의 라벨 및 주석
spec.deployment.metadata.labels
및 spec.deployment.metadata.annotations
필드를 사용하여 Apicurio 레지스트리 Pod에 대한 사용자 정의 레이블 및 주석을 제공할 수 있습니다. 예를 들면 다음과 같습니다.
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
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에서 사용할 수 있는 구성 옵션에 대한 참조 정보를 제공합니다.
추가 리소스
-
Core Registry API를 사용하여 구성 옵션 설정에 대한 자세한 내용은 Apicurio Registry REST API 설명서의
/admin/config/properties
끝점을 참조하십시오. - Kafka 직렬화기 및 역직렬화기의 클라이언트 구성 옵션에 대한 자세한 내용은 Red Hat build of Apicurio Registry User Guide 를 참조하십시오.
8.1. Apicurio 레지스트리 구성 옵션
다음 Apicurio 레지스트리 구성 옵션은 각 구성 요소 범주에 사용할 수 있습니다.
8.1.1. api
이름 | 유형 | Default | 에서 사용 가능 | 설명 |
---|---|---|---|---|
|
|
|
| 오류 응답에 스택 추적 포함 |
|
|
| API 비활성화 |
8.1.2. auth
이름 | 유형 | Default | 에서 사용 가능 | 설명 |
---|---|---|---|---|
|
|
|
| 인증 관리자 덮어쓰기 클레임 |
|
|
|
| 인증 관리자 덮어쓰기 클레임 값 |
|
|
|
| 인증 관리자 덮어쓰기 활성화 |
|
|
|
| 의 인증 관리자 덮어쓰기 |
|
|
|
| 인증 관리자 덮어쓰기 역할 |
|
|
|
| 인증 관리자 덮어쓰기 유형 |
|
|
|
| 익명 읽기 액세스 |
|
|
|
| 애플리케이션 감사 로깅에 사용되는 접두사입니다. |
|
|
|
| 인증된 읽기 액세스 |
|
|
|
| 기본 클라이언트 인증 정보 토큰 만료 시간입니다. |
|
|
|
| JWT 만료 사이의 클라이언트 인증 정보 토큰 만료 오프셋입니다. |
|
|
|
| 기본 인증 클라이언트 인증 정보 활성화 |
|
|
| 클라이언트 인증 정보 범위. | |
|
|
| 인증을 위해 서버에서 사용하는 클라이언트 식별자입니다. | |
|
|
| 인증에 서버에서 사용하는 클라이언트 시크릿입니다. | |
|
|
|
| 인증 활성화 |
|
|
|
| 아티팩트 소유자 전용 권한 부여 |
|
|
|
| 아티팩트 그룹 소유자 전용 권한 부여 |
|
|
|
| 역할 기반 권한 부여 활성화 |
|
|
|
| 인증 역할 소스 |
|
|
| 헤더 권한 부여 이름 | |
|
|
|
| 인증 역할 관리자 |
|
|
|
| 인증 역할 개발자 |
|
|
|
| 인증 역할 읽기 전용 |
|
|
|
| 인증 테넌트 소유자 관리자 활성화 |
|
|
| 인증 서버 URL. |
8.1.3. 캐시
이름 | 유형 | Default | 에서 사용 가능 | 설명 |
---|---|---|---|---|
|
|
|
| 레지스트리 캐시 활성화 |
8.1.4. ccompat
이름 | 유형 | Default | 에서 사용 가능 | 설명 |
---|---|---|---|---|
|
|
|
| 레거시 ID 모드(호환성 API) |
|
|
|
| 반환되는 최대 주체 수(호환성 API) |
|
|
|
| 표준 해시 모드 (호환성 API) |
8.1.5. 다운로드
이름 | 유형 | Default | 에서 사용 가능 | 설명 |
---|---|---|---|---|
|
|
|
| 링크 만료 다운로드 |
8.1.6. 이벤트
이름 | 유형 | Default | 에서 사용 가능 | 설명 |
---|---|---|---|---|
|
|
| 이벤트 Kafka 싱크 활성화 |
8.1.7. 상태
이름 | 유형 | Default | 에서 사용 가능 | 설명 |
---|---|---|---|---|
|
|
| 무시된 활성 오류 | |
|
|
|
| 지속성 활성 검사의 카운터 재설정 창 기간 |
|
|
|
| 지속성 활성 점검 로깅 비활성화 |
|
|
|
| 지속성 활성 점검 오류 임계값 |
|
|
|
| 지속성 활성 검사 상태 재설정 창 기간 |
|
|
|
| 지속성 준비 상태 점검의 카운터 재설정 창 기간 |
|
|
|
| 지속성 준비 상태 점검 오류 임계값 |
|
|
|
| 지속성 준비 상태 점검의 상태 재설정 창 기간 |
|
|
|
| 지속성 준비 상태 점검 시간 제한 |
|
|
|
| 응답 활성 검사의 카운터 재설정 창 기간 |
|
|
|
| 응답 활성 점검의 로깅 비활성화 |
|
|
|
| 응답 활성 검사의 오류 임계값 |
|
|
|
| 응답 활성 검사의 상태 재설정 창 기간 |
|
|
|
| 응답 준비 상태 점검의 카운터 재설정 창 기간 |
|
|
|
| 응답 준비 상태 점검의 오류 임계값 |
|
|
|
| 응답 준비 상태 점검의 상태 재설정 창 기간 |
|
|
|
| 응답 준비 상태 점검 시간 초과 |
|
|
|
| 스토리지 메트릭 캐시 검사 기간 |
8.1.8. 가져오기
이름 | 유형 | Default | 에서 사용 가능 | 설명 |
---|---|---|---|---|
|
|
| 가져오기 URL |
8.1.9. kafka
이름 | 유형 | Default | 에서 사용 가능 | 설명 |
---|---|---|---|---|
|
|
| 이벤트 Kafka 주제 | |
|
|
| 이벤트 Kafka 주제 파티션 |
8.1.10. limits
이름 | 유형 | Default | 에서 사용 가능 | 설명 |
---|---|---|---|---|
|
|
|
| 최대 아티팩트 레이블 |
|
|
|
| 최대 아티팩트 속성 |
|
|
|
| 최대 아티팩트 수 |
|
|
|
| 최대 아티팩트 설명 길이 |
|
|
|
| 최대 아티팩트 레이블 크기 |
|
|
|
| 최대 아티팩트 이름 길이 |
|
|
|
| 최대 아티팩트 속성 키 크기 |
|
|
|
| 최대 아티팩트 속성 값 크기 |
|
|
|
| 초당 최대 아티팩트 요청 수 |
|
|
|
| 최대 스키마 크기(바이트) |
|
|
|
| 최대 총 스키마 수 |
|
|
|
| 아티팩트당 최대 버전 |
|
|
|
| 스토리지 지표 캐시 최대 크기입니다. |
8.1.11. log
이름 | 유형 | Default | 에서 사용 가능 | 설명 |
---|---|---|---|---|
|
|
| 로그 수준 |
8.1.12. mt
이름 | 유형 | Default | 에서 사용 가능 | 설명 |
---|---|---|---|---|
|
|
|
| 멀티 테넌시 활성화 |
|
|
|
| 독립 실행형 멀티 테넌시 모드를 활성화합니다. 이 모드에서 레지스트리는 테넌트와 해당 메타데이터를 관리하기 위한 추가 구성 요소에 대한 종속성 없이 기본 멀티 테넌시 기능을 제공합니다. 처음 요청에서 테넌트 ID를 추출하는 즉시 새 테넌트가 생성됩니다. 테넌트 ID는 외부에서 관리해야 하며 데이터를 삭제하여 테넌트를 효과적으로 삭제할 수 있습니다. |
|
|
|
| 멀티 테넌시 권한 부여 활성화 |
|
|
| 멀티 테넌시(Multitenancy Reaper) | |
|
|
|
| 멀티 테넌시 reaper max tenants reaped |
|
|
|
| 멀티 테넌시 reaper 기간 초 |
|
|
| 테넌트 ID를 확인하는 데 사용되는 토큰 클레임 | |
|
|
|
| 멀티 테넌시 컨텍스트 경로 유형 기본 경로 |
|
|
|
| 멀티 테넌시 컨텍스트 경로 유형 활성화 |
|
|
|
| 멀티 테넌시 요청 헤더 유형 활성화 |
|
|
|
| 멀티 테넌시 요청 헤더 유형 이름 |
|
|
|
| 멀티 테넌시 하위 도메인 유형 활성화 |
|
|
|
| 다중 테넌시 하위 도메인 유형 헤더 이름 |
|
|
|
| 멀티 테넌시 하위 도메인 유형 위치 |
|
|
|
| 멀티 테넌시 하위 도메인 유형 패턴 |
|
|
|
| 멀티 테넌시 요청 헤더 유형 활성화 |
|
|
| 조직 ID 클레임 이름 | |
|
|
| 테넌트 관리자 인증 클라이언트 ID | |
|
|
| 테넌트 관리자 인증 클라이언트 시크릿 | |
|
|
| 테넌트 관리자 인증 활성화 | |
|
|
| 테넌트 관리자 인증 토큰 만료 ms | |
|
|
| 테넌트 관리자 인증 URL 구성 | |
|
|
| 테넌트 관리자 SSL ca 경로 | |
|
|
| 테넌트 관리자 URL | |
|
|
|
| 테넌트 컨텍스트 캐시 확인 기간 |
|
|
|
| 테넌트 컨텍스트 캐시 최대 크기 |
8.1.13. 리디렉션
이름 | 유형 | Default | 에서 사용 가능 | 설명 |
---|---|---|---|---|
|
|
| 리디렉션 활성화 | |
|
|
| 레지스트리 리디렉션 | |
|
|
| 외부에서 액세스할 수 있는 URL을 생성하는 데 사용되는 호스트 이름을 재정의합니다. 호스트 및 포트 덮어쓰기는 HTTPS 패스스루 Ingress 또는 경로를 사용하여 레지스트리를 배포할 때 유용합니다. 이러한 경우 리디렉션에 다시 사용되는 요청 URL(및 포트)은 요청이 프록시되므로 클라이언트에서 사용하는 실제 외부 URL에 속하지 않습니다. 대상 URL에 연결할 수 없기 때문에 리디렉션이 실패합니다. | |
|
|
| 외부 액세스 가능한 URL을 생성하는 데 사용되는 포트를 재정의합니다. |
8.1.14. rest
이름 | 유형 | Default | 에서 사용 가능 | 설명 |
---|---|---|---|---|
|
|
|
| 아티팩트 버전 삭제 활성화 |
|
|
|
| URL에서 다운로드할 수 있는 아티팩트의 최대 크기 |
|
|
|
| URL에서 아티팩트를 다운로드할 때 SSL 검증 건너뛰기 |
8.1.15. Store
이름 | 유형 | Default | 에서 사용 가능 | 설명 |
---|---|---|---|---|
|
|
|
| 최신 아티팩트 버전을 검색할 때 DISABLED 상태로 아티팩트 버전 건너뛰기 |
|
|
|
| 데이터 소스 Db 종류 |
|
|
| 데이터 소스 jdbc URL | |
|
|
|
| SQL init |
8.1.16. ui
이름 | 유형 | Default | 에서 사용 가능 | 설명 |
---|---|---|---|---|
|
|
|
| UI OIDC 테넌트 활성화 |
|
|
| UI API URL | |
|
|
|
| UI 인증 OIDC 클라이언트 ID |
|
|
|
| UI 인증 OIDC 리디렉션 URL |
|
|
|
| UI 인증 OIDC URL |
|
|
|
| UI 인증 유형 |
|
|
|
| UI 코드 생성 활성화 |
|
|
|
| UI 컨텍스트 경로 |
|
|
|
| UI 읽기 전용 모드 |
|
|
|
| UI 기능 설정 |
|
|
| UI 루트 컨텍스트를 재정의합니다(바인 프록시를 사용하여 UI 컨텍스트를 재배치할 때 사용됨) |
부록 A. 서브스크립션 사용
Apicurio 레지스트리는 소프트웨어 서브스크립션을 통해 제공됩니다. 서브스크립션을 관리하려면 Red Hat 고객 포털에서 계정에 액세스하십시오.
계정 액세스
- access.redhat.com 으로 이동합니다.
- 계정이 없는 경우 계정을 생성합니다.
- 계정에 로그인합니다.
서브스크립션 활성화
- access.redhat.com 으로 이동합니다.
- 내 서브스크립션 으로 이동합니다.
- 서브스크립션 활성화로 이동하여 16자리 활성화 번호를 입력합니다.
ZIP 및 TAR 파일 다운로드
ZIP 또는 TAR 파일에 액세스하려면 고객 포털을 사용하여 다운로드할 관련 파일을 찾습니다. RPM 패키지를 사용하는 경우 이 단계는 필요하지 않습니다.
- 브라우저를 열고 Red Hat Customer Portal 제품 다운로드 페이지에 access.redhat.com/downloads.
- 통합 및 자동화 카테고리에서 Red Hat Integration 항목을 찾습니다.
- 원하는 Apicurio 레지스트리 제품을 선택합니다. 소프트웨어 다운로드 페이지가 열립니다.
- 구성 요소에 대한 다운로드 링크를 클릭합니다.
2024-05-15에 최종 업데이트된 문서