OpenShift에 Apicurio 레지스트리 설치 및 배포
Apicurio Registry 설치 및 배포 2.3
초록
머리말
보다 포괄적 수용을 위한 오픈 소스 용어 교체
Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.
1장. Service Registry Operator 빠른 시작
CRD(Custom Resource Definitions)를 사용하여 명령줄에서 Service Registry Operator를 빠르게 설치할 수 있습니다.
빠른 시작 예제에서는 SQL 데이터베이스에 스토리지와 함께 Apicurio Registry 인스턴스를 배포합니다.
프로덕션 환경에 권장되는 설치 옵션은 OpenShift OperatorHub입니다. 권장되는 스토리지 옵션은 성능, 안정성 및 데이터 관리를 위한 SQL 데이터베이스입니다.
1.1. 빠른 시작 Service Registry Operator 설치
다운로드한 설치 파일 및 예제 CRD 세트를 사용하여 Operator Lifecycle Manager 없이 명령줄에 Service Registry Operator를 신속하게 설치하고 배포할 수 있습니다.
사전 요구 사항
- 관리자 액세스 권한이 있는 OpenShift 클러스터에 로그인되어 있습니다.
-
OpenShift
oc명령줄 클라이언트가 설치되어 있어야 합니다. 자세한 내용은 OpenShift CLI 설명서를 참조하십시오.
절차
-
Red Hat Software Downloads 로 이동하여 제품 버전을 선택한 후 Apicurio Registry CRDs
.zip파일에서 예제를 다운로드합니다. -
다운로드한 CRD
.zip파일을 추출하고apicurio-registry-install-examples디렉터리로 변경합니다. Service Registry Operator 설치에 사용할 OpenShift 프로젝트를 생성합니다. 예를 들면 다음과 같습니다.
export NAMESPACE="apicurio-registry" oc new-project "$NAMESPACE"
install/install.yaml파일에서 예제 CRD를 적용하려면 다음 명령을 입력합니다.cat install/install.yaml | sed "s/apicurio-registry-operator-namespace/$NAMESPACE/g" | oc apply -f -
oc get deployment를 입력하여 Service Registry Operator의 준비 상태를 확인합니다. 예를 들어 출력은 다음과 같아야 합니다.NAME READY UP-TO-DATE AVAILABLE AGE apicurio-registry-operator 1/1 1 1 XmYs
1.2. 빠른 시작 Apicurio Registry 인스턴스 배포
Apicurio Registry 인스턴스 배포를 생성하려면 SQL 데이터베이스 스토리지 옵션을 사용하여 기존 PostgreSQL 데이터베이스에 연결합니다.
사전 요구 사항
- Service Registry Operator가 설치되었는지 확인합니다.
- OpenShift 클러스터에서 연결할 수 있는 PostgreSQL 데이터베이스가 있습니다.
절차
편집기에서
examples/apicurioregistry_sql_cr.yaml파일을 열고ApicurioRegistry사용자 정의 리소스 (CR)를 확인합니다.SQL 스토리지용 CR의 예
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>" # OptionaldataSource섹션에서 예제 설정을 데이터베이스 연결 세부 정보로 교체합니다. 예를 들면 다음과 같습니다.dataSource: url: "jdbc:postgresql://postgresql.apicurio-registry.svc:5432/registry" userName: "pgadmin" password: "pgpass"다음 명령을 입력하여
Apicurio RegistryOperator를 사용하여 네임스페이스에서 업데이트된 ApicurioRegistry CR을 적용하고 Apicurio Registry 인스턴스가 배포할 때까지 기다립니다.oc project "$NAMESPACE" oc apply -f ./examples/apicurioregistry_sql_cr.yaml
oc get deployment를 입력하여 Apicurio Registry 인스턴스의 준비 상태를 확인합니다. 예를 들어 출력은 다음과 같아야 합니다.NAME READY UP-TO-DATE AVAILABLE AGE example-apicurioregistry-sql-deployment 1/1 1 1 XmYs
oc get routes를 입력하여HOST/PORTURL을 가져와서 브라우저에서 Apicurio Registry 웹 콘솔을 시작합니다. 예를 들면 다음과 같습니다.example-apicurioregistry-sql.apicurio-registry.router-default.apps.mycluster.myorg.mycompany.com
2장. OpenShift에 Apicurio Registry 설치
이 장에서는 OpenShift Container Platform에 Apicurio Registry를 설치하는 방법을 설명합니다.
사전 요구 사항
2.1. OpenShift OperatorHub에서 Apicurio Registry 설치
OperatorHub에서 OpenShift 클러스터에 Apicurio Registry Operator를 설치할 수 있습니다. OperatorHub는 OpenShift Container Platform 웹 콘솔에서 사용할 수 있으며 클러스터 관리자가 Operator를 검색하고 설치할 수 있는 인터페이스를 제공합니다. 자세한 내용은 OperatorHub 이해를 참조하십시오.
환경에 따라 Apicurio Registry의 두 개 이상의 인스턴스를 설치할 수 있습니다. 인스턴스 수는 Apicurio Registry 및 선택한 스토리지 옵션에 저장된 아티팩트 수 및 유형에 따라 다릅니다.
사전 요구 사항
- OpenShift 클러스터에 대한 클러스터 관리자 액세스 권한이 있어야 합니다.
절차
- OpenShift Container Platform 웹 콘솔에서 클러스터 관리자 권한이 있는 계정을 사용하여 로그인합니다.
새 OpenShift 프로젝트를 생성합니다.
- 왼쪽 탐색 메뉴에서 홈,프로젝트 및 프로젝트 만들기 를 클릭합니다.
-
프로젝트 이름(예:
my-project)을 입력하고 생성을 클릭합니다.
- 왼쪽 탐색 메뉴에서 Operators 를 클릭한 다음 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 Registry 스토리지 배포
이 장에서는 AMQ Streams에서 Apicurio Registry 데이터 스토리지를 설치 및 구성하는 방법을 설명합니다.
사전 요구 사항
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를 선택합니다. - 왼쪽 탐색 메뉴에서 Operators 를 클릭한 다음 OperatorHub 를 클릭합니다.
-
키워드로 필터링 텍스트 상자에
AMQ Streams를 입력하여 Red Hat Integration - AMQ Streams Operator를 찾습니다. - Operator에 대한 정보를 읽고 설치를 클릭하여 Operator 서브스크립션 페이지를 표시합니다.
서브스크립션 설정을 선택합니다. 예를 들면 다음과 같습니다.
- 채널을 업데이트한 다음 amq-streams-2.3.x
설치 모드: 다음 중 하나를 선택합니다.
- 클러스터의 모든 네임스페이스(기본값)
- 클러스터의 특정 네임스페이스 > my-project
- 승인 전략: 자동 또는 수동을 선택합니다.
- 설치를 클릭하고 Operator를 사용할 준비가 될 때까지 잠시 기다립니다.
3.2. OpenShift에서 Kafka 스토리지를 사용하여 Apicurio 레지스트리 구성
이 섹션에서는 OpenShift에서 AMQ Streams를 사용하여 Apicurio Registry의 Kafka 기반 스토리지를 구성하는 방법을 설명합니다. kafkasql 스토리지 옵션은 메모리 내 H2 데이터베이스의 Kafka 스토리지를 사용합니다. 이 스토리지 옵션은 OpenShift의 Kafka 클러스터에 대해 영구 스토리지가 구성된 경우 프로덕션 환경에 적합합니다.
기존 Kafka 클러스터에 Apicurio Registry를 설치하거나 환경에 따라 새 Kafka 클러스터를 생성할 수 있습니다.
사전 요구 사항
- 클러스터 관리자 액세스 권한이 있는 OpenShift 클러스터가 있어야 합니다.
- Apicurio Registry가 이미 설치되어 있어야 합니다. 2장. OpenShift에 Apicurio Registry 설치을 참조하십시오.
- AMQ Streams가 설치되어 있어야 합니다. 3.1절. “OpenShift OperatorHub에서 AMQ Streams 설치”을 참조하십시오.
절차
- OpenShift Container Platform 웹 콘솔에서 클러스터 관리자 권한이 있는 계정을 사용하여 로그인합니다.
Kafka 클러스터가 구성되어 있지 않은 경우 AMQ Streams를 사용하여 새 Kafka 클러스터를 생성합니다. 예를 들어 OpenShift OperatorHub에서 다음을 수행합니다.
- 설치된 Operators 를 클릭한 다음 Red Hat Integration - AMQ Streams 를 클릭합니다.
- 제공된 API 에서 Kafka 를 클릭한 다음 인스턴스 생성을 클릭하여 새 Kafka 클러스터를 생성합니다.
사용자 정의 리소스 정의를 적절하게 편집하고 생성을 클릭합니다.
주의기본 예제에서는 3개의 Zookeeper 노드와
임시스토리지가 있는 Kafka 노드 3개가 있는 클러스터를 생성합니다. 이 임시 스토리지는 개발 및 테스트에만 적합하며 프로덕션에는 적합하지 않습니다. 자세한 내용은 OpenShift에서 AMQ Streams 배포 및 업그레이드를 참조하십시오.
- 클러스터가 준비되면 제공된 API > Kafka > my-cluster > YAML 을 클릭합니다.
상태블록에서 나중에 Apicurio Registry를 배포하는 데 사용할bootstrapServers값의 사본을 만듭니다. 예를 들면 다음과 같습니다.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값을 사용합니다.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 Registry 웹 콘솔의 새 경로에 액세스합니다. 예를 들면 다음과 같습니다.
http://example-apicurioregistry-kafkasql.my-project.my-domain-name.com/
Apicurio Registry가 데이터를 저장하는 데 사용하는 Kafka 주제를 구성하려면 설치된 Operator > Red Hat Integration - AMQ Streams > Provided APIs > Kafka Topic > kafkasql-journal > YAML 을 클릭합니다. 예를 들면 다음과 같습니다.
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에서 사용하는 Kafka 주제(기본적으로
kafkasql-journal)를 압축 정리 정책을 사용하여 구성해야 합니다. 그렇지 않으면 데이터 손실이 발생할 수 있습니다.
추가 리소스
- AMQ Streams를 사용하여 Kafka 클러스터 및 주제 생성에 대한 자세한 내용은 OpenShift에서 AMQ Streams 배포 및 업그레이드를 참조하십시오.
3.3. TLS 보안을 사용하여 Kafka 스토리지 구성
암호화된 TLS(Transport Layer Security) 연결을 사용하도록 AMQ Streams Operator 및 Service Registry Operator를 구성할 수 있습니다.
사전 요구 사항
- OperatorHub 또는 명령줄을 사용하여 Service Registry Operator를 설치했습니다.
- AMQ Streams Operator를 설치하거나 OpenShift 클러스터에서 Kafka에 액세스할 수 있습니다.
이 섹션에서는 AMQ Streams Operator를 사용할 수 있다고 가정하지만 Kafka 배포를 사용할 수 있습니다. 이 경우 Service Registry Operator에서 예상하는 Openshift 시크릿을 수동으로 생성해야 합니다.
절차
- OpenShift 웹 콘솔에서 설치된 Operator를 클릭하고 AMQ Streams Operator 세부 정보를 선택한 다음 Kafka 탭을 선택합니다.
- Kafka 생성을 클릭하여 Apicurio 레지스트리 스토리지에 대한 새 Kafka 클러스터를 프로비저닝합니다.
Kafka 클러스터에 TLS 인증을 사용하도록
권한 부여및tls필드를 구성합니다. 예를 들면 다음과 같습니다.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 주제 탭을 클릭한 다음 Kafka 주제 만들기 를 클릭하여
kafkasql-journal주제를 생성합니다.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: compactKafka 사용자 리소스를 생성하여 Apicurio Registry 사용자에 대한 인증 및 권한 부여를 구성합니다.
metadata섹션에 사용자 이름을 지정하거나 기본my-user를 사용할 수 있습니다.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참고이 간단한 예제에서는 admin 권한을 가정하고 Kafka 주제를 자동으로 생성합니다. Apicurio 레지스트리에 필요한 주제 및 리소스에 대해 특별히
권한 부여섹션을 구성해야 합니다.다음 예제에서는 Kafka 주제를 수동으로 생성할 때 필요한 최소 구성을 보여줍니다.
... 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워크로드 를 클릭한 다음 시크릿을 클릭하여 Apicurio Registry에서 Kafka 클러스터에 연결할 수 있도록 AMQ Streams에서 생성하는 두 가지 시크릿을 찾습니다.
-
my-cluster-cluster-ca-cert- Kafka 클러스터의 PKCS12 신뢰 저장소 포함 my-user- 사용자의 키 저장소를 포함합니다.참고시크릿 이름은 클러스터 또는 사용자 이름에 따라 다를 수 있습니다.
-
보안을 수동으로 생성하는 경우 다음 키-값 쌍을 포함해야 합니다.
my-cluster-ca-cert
-
ca.p12- PKCS12 형식의 신뢰 저장소 -
ca.password- truststore password
-
my-user
-
user.p12- PKCS12 형식의 키 저장소 -
user.password- keystore password
-
Apicurio Registry를 배포하도록 다음 예제 구성을 구성합니다.
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 및 Service Registry Operator를 구성할 수 있습니다.
사전 요구 사항
- OperatorHub 또는 명령줄을 사용하여 Service Registry Operator를 설치했습니다.
- AMQ Streams Operator를 설치하거나 OpenShift 클러스터에서 Kafka에 액세스할 수 있습니다.
이 섹션에서는 AMQ Streams Operator를 사용할 수 있다고 가정하지만 Kafka 배포를 사용할 수 있습니다. 이 경우 Service Registry Operator에서 예상하는 Openshift 시크릿을 수동으로 생성해야 합니다.
절차
- OpenShift 웹 콘솔에서 설치된 Operator를 클릭하고 AMQ Streams Operator 세부 정보를 선택한 다음 Kafka 탭을 선택합니다.
- Kafka 생성을 클릭하여 Apicurio 레지스트리 스토리지에 대한 새 Kafka 클러스터를 프로비저닝합니다.
Kafka 클러스터에 SCRAM-SHA-512 인증을 사용하도록
권한 부여및tls필드를 구성합니다. 예를 들면 다음과 같습니다.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 주제 탭을 클릭한 다음 Kafka 주제 만들기 를 클릭하여
kafkasql-journal주제를 생성합니다.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: compactKafka 사용자 리소스를 생성하여 Apicurio 레지스트리 사용자에 대한 SCRAM 인증 및 권한 부여를 구성합니다.
metadata섹션에 사용자 이름을 지정하거나 기본my-user를 사용할 수 있습니다.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참고이 간단한 예제에서는 admin 권한을 가정하고 Kafka 주제를 자동으로 생성합니다. Apicurio 레지스트리에 필요한 주제 및 리소스에 대해 특별히
권한 부여섹션을 구성해야 합니다.다음 예제에서는 Kafka 주제를 수동으로 생성할 때 필요한 최소 구성을 보여줍니다.
... 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워크로드 를 클릭한 다음 시크릿을 클릭하여 Apicurio Registry에서 Kafka 클러스터에 연결할 수 있도록 AMQ Streams에서 생성하는 두 가지 시크릿을 찾습니다.
-
my-cluster-cluster-ca-cert- Kafka 클러스터의 PKCS12 신뢰 저장소 포함 my-user- 사용자의 키 저장소를 포함합니다.참고시크릿 이름은 클러스터 또는 사용자 이름에 따라 다를 수 있습니다.
-
보안을 수동으로 생성하는 경우 다음 키-값 쌍을 포함해야 합니다.
my-cluster-ca-cert
-
ca.p12- PKCS12 형식의 신뢰 저장소 -
ca.password- truststore password
-
my-user
-
암호- 사용자 암호
-
Apicurio Registry를 배포하려면 다음 예제 설정을 구성합니다.
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 Registry 배포에서 일부 환경 변수를 설정해야 합니다.
이러한 환경 변수를 설정하면 Apicurio 레지스트리의 Kafka 생산자 및 소비자 애플리케이션은 이 구성을 사용하여 OAuth를 통해 Kafka 클러스터에 인증합니다.
사전 요구 사항
- AMQ Streams에 Apicurio 레지스트리 데이터의 Kafka 기반 스토리지가 이미 구성되어 있어야 합니다. 3.2절. “OpenShift에서 Kafka 스토리지를 사용하여 Apicurio 레지스트리 구성”을 참조하십시오.
절차
Apicurio Registry 배포에서 다음 환경 변수를 설정합니다.
환경 변수 설명 기본값 ENABLE_KAFKA_SASLKafka에서 Apicurio Registry 스토리지에 대한 SASL OAuth 인증을 활성화합니다. 다른 변수가 적용되려면 이 변수를
true로 설정해야 합니다.falseCLIENT_IDKafka 인증에 사용되는 클라이언트 ID입니다.
-CLIENT_SECRETKafka 인증에 사용되는 클라이언트 시크릿입니다.
-OAUTH_TOKEN_ENDPOINT_URIOAuth ID 서버의 URL입니다.
http://localhost:8090
추가 리소스
- OpenShift에서 Apicurio 레지스트리 환경 변수를 설정하는 방법의 예는 다음을 참조하십시오. 6.1절. “OpenShift에서 Apicurio 레지스트리 상태 점검 구성”
4장. PostgreSQL 데이터베이스에 Apicurio 레지스트리 스토리지 배포
이 장에서는 PostgreSQL 데이터베이스에서 Apicurio Registry 데이터 스토리지를 설치, 구성, 관리하는 방법을 설명합니다.
사전 요구 사항
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를 선택합니다. - 왼쪽 탐색 메뉴에서 Operators 를 클릭한 다음 OperatorHub 를 클릭합니다.
-
키워드로 필터링 텍스트 상자에
PostgreSQL을 입력하여 환경에 적합한 Operator를 찾습니다(예: OpenShift용 Crunchy PostgreSQL ). - Operator에 대한 정보를 읽고 설치를 클릭하여 Operator 서브스크립션 페이지를 표시합니다.
서브스크립션 설정을 선택합니다. 예를 들면 다음과 같습니다.
- 업데이트 채널:stable
- 설치 모드:클러스터의 특정 네임스페이스 및 my-project
- 승인 전략: 자동 또는 수동을 선택합니다.
설치를 클릭하고 Operator를 사용할 준비가 될 때까지 잠시 기다립니다.
중요데이터베이스를 생성하고 관리하는 방법에 대한 자세한 내용은 선택한 PostgreSQL Operator의 문서를 참조하십시오.
4.2. OpenShift에서 PostgreSQL 데이터베이스 스토리지를 사용하여 Apicurio Registry 구성
이 섹션에서는 PostgreSQL 데이터베이스 Operator를 사용하여 OpenShift에서 Apicurio Registry의 스토리지를 구성하는 방법을 설명합니다. Apicurio Registry를 기존 데이터베이스에 설치하거나 환경에 따라 새 데이터베이스를 생성할 수 있습니다. 이 섹션에서는 Dev4Ddevs.com의 PostgreSQL Operator를 사용하는 간단한 예를 보여줍니다.
사전 요구 사항
- 클러스터 관리자 액세스 권한이 있는 OpenShift 클러스터가 있어야 합니다.
- Apicurio Registry가 이미 설치되어 있어야 합니다. 2장. OpenShift에 Apicurio Registry 설치을 참조하십시오.
- 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 를 클릭한 다음 Create database 를 클릭합니다.
YAML 을 클릭하고 다음과 같이 데이터베이스 설정을 편집합니다.
-
name: 값을registry로 변경 -
이미지: 값을centos/postgresql-12-centos7로 변경합니다.
-
환경에 따라 필요에 따라 다른 데이터베이스 설정을 편집합니다. 예를 들면 다음과 같습니다.
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및 인증 정보를 편집합니다.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 Registry 웹 콘솔의 새 경로에 액세스합니다. 예를 들면 다음과 같습니다.
http://example-apicurioregistry-sql.my-project.my-domain-name.com/
4.3. Apicurio Registry PostgreSQL 스토리지 백업
PostgreSQL 데이터베이스에서 스토리지를 사용하는 경우 Apicurio Registry에서 저장한 데이터를 정기적으로 백업해야 합니다.
SQL 덤프 는 모든 PostgreSQL 설치에서 작동하는 간단한 절차입니다. 이 명령은 pg_dump 유틸리티를 사용하여 덤프 시와 동일한 상태로 데이터베이스를 다시 생성하는 데 사용할 수 있는 SQL 명령으로 파일을 생성합니다.
pg_dump 는 일반 PostgreSQL 클라이언트 애플리케이션으로, 데이터베이스에 액세스할 수 있는 원격 호스트에서 실행할 수 있습니다. 다른 클라이언트와 마찬가지로 수행할 수 있는 작업은 사용자 권한으로 제한됩니다.
절차
pg_dump명령을 사용하여 출력을 파일로 리디렉션합니다.$ pg_dump dbname > dumpfile
pg_dump가-h 호스트 및옵션을 사용하여 연결하는 데이터베이스 서버를 지정할 수 있습니다.-p 포트gzip과 같은 압축 도구를 사용하여 대규모 덤프 파일을 줄일 수 있습니다. 예를 들면 다음과 같습니다.
$ pg_dump dbname | gzip > filename.gz
추가 리소스
- 클라이언트 인증에 대한 자세한 내용은 PostgreSQL 문서를 참조하십시오.
- 레지스트리 콘텐츠를 가져오고 내보내는 방법에 대한 자세한 내용은 REST API를 사용하여 Apicurio Registry 콘텐츠 관리를 참조하십시오.
4.4. Apicurio Registry PostgreSQL 스토리지 복원
psql 유틸리티를 사용하여 pg_dump 에서 생성한 SQL Dump 파일을 복원할 수 있습니다.
사전 요구 사항
-
pg_dump를 사용하여 PostgreSQL datbase를 이미 백업해야 합니다. 4.3절. “Apicurio Registry PostgreSQL 스토리지 백업”을 참조하십시오. - 개체가 있거나 덤프된 데이터베이스의 개체에 대한 권한이 있는 모든 사용자는 이미 존재해야 합니다.
절차
다음 명령을 입력하여 데이터베이스를 생성합니다.
$ createdb -T template0 dbname
SQL 덤프를 복원하려면 다음 명령을 입력하십시오.
$ psql dbname < dumpfile
- 쿼리의 통계에 유용한 통계가 있도록 각 데이터베이스에서 ANALYZE 를 실행합니다.
5장. Apicurio Registry 배포 보안
이 장에서는 OpenShift에서 Apicurio Registry 배포에 대한 보안 설정을 구성하는 방법을 설명합니다.
- 5.1절. “Red Hat Single Sign-On Operator를 사용하여 Apicurio Registry 보안”
- 5.2절. “Red Hat Single Sign-On을 사용하여 Apicurio Registry 인증 및 권한 부여 구성”
- 5.3절. “Apicurio Registry 인증 및 권한 부여 구성 옵션”
- 5.4절. “OpenShift 클러스터 내부에서 Apicurio Registry에 대한 HTTPS 연결 구성”
- 5.5절. “OpenShift 클러스터 외부에서 Apicurio Registry에 대한 HTTPS 연결 구성”
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는 Red Hat Single Sign-On을 사용하여 Apicurio Registry 웹 콘솔 및 코어 REST API에 대한 역할 기반 인증 및 권한 부여를 제공합니다. 또한 Apicurio Registry는 아티팩트 작성자만 쓰기 액세스 권한이 있는 스키마 또는 API 수준에서 콘텐츠 기반 권한 부여를 제공합니다. 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에서는 다음 사용자 역할을 지원합니다.
표 5.1. Apicurio 레지스트리 사용자 역할
| 이름 | capabilities |
|---|---|
|
| 전체 액세스, 제한 없음. |
|
|
아티팩트를 생성하고 아티팩트 규칙을 구성합니다. 글로벌 규칙을 수정하거나 가져오기/내보딩을 수행하거나 |
|
|
보기 및 검색만 가능 아티팩트 또는 규칙을 수정하거나 가져오기/내보딩을 수행하거나 |
ApicurioRegistry CRD에 웹 콘솔을 읽기 전용 모드로 설정하는 데 사용할 수 있는 관련 구성 옵션이 있습니다. 그러나 이 구성은 REST API에 영향을 미치지 않습니다.
사전 요구 사항
- Service 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 탭을 클릭합니다.
Create Keycloak 을 클릭하여 Apicurio Registry 배포를 보호하려면 새 Red Hat Single Sign-On 인스턴스를 프로비저닝합니다. 기본값을 사용할 수 있습니다. 예를 들면 다음과 같습니다.
apiVersion: keycloak.org/v1alpha1 kind: Keycloak metadata: name: example-keycloak labels: app: sso spec: instances: 1 externalAccess: enabled: True podDisruptionBudget: enabled: True- 인스턴스가 생성될 때까지 기다린 다음 네트워킹을 클릭한 다음 Routes 를 클릭하여 keycloak 인스턴스의 새 경로에 액세스합니다.
-
위치 URL을 클릭하고 Apicurio Registry를 배포할 때 나중에 사용할 수 있도록 표시된
../authURL 값을 복사합니다. Installed Operators 및 Red Hat Single Sign-On Operator 를 클릭하고 Keycloak Tab 탭을 클릭한 다음 Create Keycloak >-<을 클릭하여
레지스트리예제 영역을 생성합니다.apiVersion: keycloak.org/v1alpha1 kind: KeycloakRealm metadata: name: registry-keycloakrealm labels: app: registry 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
서비스및Ingress리소스를 생성할 수 있습니다.네트워킹을 클릭한 다음 Services 를 클릭하고 다음 예제를 사용하여 서비스 생성을 클릭합니다.
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: {}네트워킹을 클릭한 다음 Ingresses 를 클릭하고 다음 예제를 사용하여 Ingress 생성을 클릭합니다.
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: 8080host값을 수정하여 Apicurio Registry 사용자가 액세스할 수 있는 경로를 생성하고 Red Hat Single Sign-On Operator에서 생성한 HTTPS 경로 대신 사용합니다.
Service Registry Operator 를 클릭하고 ApicurioRegistry 탭에서 다음 예제를 사용하여 ApicurioRegistry 만들기 를 클릭합니다. 그러나
keycloak섹션의 값을 바꿉니다.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>/auth" # ^ Required # Keycloak server URL, must end with `/auth`. # 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 Registry 인증 및 권한 부여 구성
이 섹션에서는 Red Hat Single Sign-On을 사용하여 Apicurio Registry에 대한 인증 및 권한 부여 옵션을 수동으로 구성하는 방법을 설명합니다.
또는 이러한 설정을 자동으로 구성하는 방법에 대한 자세한 내용은 5.1절. “Red Hat Single Sign-On Operator를 사용하여 Apicurio Registry 보안” 을 참조하십시오.
OIDC(OpenID Connect)를 사용하여 OAuth를 기반으로 Red Hat Single Sign-On을 사용하여 Apicurio Registry 웹 콘솔 및 코어 REST API에 대한 인증을 활성화할 수 있습니다. 동일한 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 Registry가 설치되어 실행 중입니다.
절차
-
Red Hat Single Sign-On 관리 콘솔에서 Apicurio Registry용 Red Hat Single Sign-On 영역을 생성합니다. 기본적으로 Apicurio Registry에는
레지스트리의 영역 이름이 필요합니다. 영역 생성에 대한 자세한 내용은 Red Hat Single Sign-On 사용자 설명서를 참조하십시오. Apicurio Registry API에 사용할 Red Hat Single Sign-On 클라이언트를 만듭니다. 기본적으로 Apicurio Registry에는 다음 설정이 필요합니다.
-
클라이언트 ID:
registry-api -
클라이언트 프로토콜:
openid-connect 액세스 유형:
베어러 전용다른 클라이언트 설정에 기본값을 사용할 수 있습니다.
참고Red Hat Single Sign-On 서비스 계정을 사용하는 경우
bearer-only대신 클라이언트 액세스 유형을기밀로유지해야 합니다.
-
클라이언트 ID:
Apicurio Registry 웹 콘솔의 Red Hat Single Sign-On 클라이언트를 만듭니다. 기본적으로 Apicurio Registry에는 다음 설정이 필요합니다.
-
클라이언트 ID:
apicurio-registry -
클라이언트 프로토콜:
openid-connect -
액세스 유형:
public -
유효한 리디렉션 URL:
http://my-registry-url:8080/* 웹 출처:
+다른 클라이언트 설정에 기본값을 사용할 수 있습니다.
-
클라이언트 ID:
OpenShift의 Apicurio Registry 배포에서 Red Hat Single Sign-On을 사용하여 인증을 구성하려면 다음 Apicurio Registry 환경 변수를 설정합니다.
표 5.2. Apicurio 레지스트리 인증 구성
환경 변수 설명 유형 Default AUTH_ENABLEDtrue로 설정하면 이어지는 환경 변수가 필요합니다.문자열
falseKEYCLOAK_URL사용할 Red Hat Single Sign-On 인증 서버의 URL입니다.
/auth로 끝나야 합니다.문자열
없음
KEYCLOAK_REALM인증에 사용되는 Red Hat Single Sign-On 영역입니다.
문자열
레지스트리KEYCLOAK_API_CLIENT_IDApicurio Registry REST API의 클라이언트 ID입니다.
문자열
registry-apiKEYCLOAK_UI_CLIENT_IDApicurio Registry 웹 콘솔의 클라이언트 ID입니다.
문자열
apicurio-registry작은 정보OpenShift에서 환경 변수를 설정하는 예는 6.1절. “OpenShift에서 Apicurio 레지스트리 상태 점검 구성” 을 참조하십시오.
Red Hat Single Sign-On에서 Apicurio Registry 사용자 역할을 활성화하려면 다음 옵션을
true로 설정합니다.표 5.3. Apicurio 레지스트리 역할 기반 권한 부여 구성
환경 변수 Java 시스템 속성 유형 기본값 ROLE_BASED_AUTHZ_ENABLEDregistry.auth.role-based-authorization부울
falseApicurio 레지스트리 사용자 역할이 활성화되면 Apicurio Registry 사용자를 Red Hat Single Sign-On 영역에서 다음 기본 사용자 역할 중 하나에 할당해야 합니다.
표 5.4. 레지스트리 인증 및 권한 부여에 대한 기본 사용자 역할
Role 아티팩트 읽기 아티팩트 쓰기 글로벌 규칙 요약 sr-admin제공됨
제공됨
제공됨
모든 생성, 읽기, 업데이트 및 삭제 작업에 대한 전체 액세스 권한
sr-developer제공됨
제공됨
없음
글로벌 규칙 구성을 제외하고 생성, 읽기, 업데이트 및 삭제 작업에 액세스할 수 있습니다. 이 역할은 아티팩트 규칙을 구성할 수 있습니다.
sr-readonly제공됨
없음
없음
읽기 및 검색 작업만 액세스할 수 있습니다. 이 역할은 규칙을 구성할 수 없습니다.
Apicurio Registry에서 스키마 및 API 아티팩트에 대한 업데이트에 대한 소유자 전용 권한 부여를 활성화하려면 다음을
true로 설정합니다.표 5.5. 소유자 전용 권한 부여 구성
환경 변수 Java 시스템 속성 유형 기본값 REGISTRY_AUTH_OBAC_ENABLEDregistry.auth.owner-only-authorization부울
false
추가 리소스
- 기본이 아닌 사용자 역할 이름 구성에 대한 자세한 내용은 다음을 참조하십시오. 5.3절. “Apicurio Registry 인증 및 권한 부여 구성 옵션”
- 오픈 소스 예제 애플리케이션 및 Keycloak 영역의 경우 Docker Compose-based example of using Keycloak with Apicurio Registry에서 참조하십시오.
- 프로덕션 환경에서 Red Hat Single Sign-On 사용 방법에 대한 자세한 내용은 Red Hat Single Sign-On 설명서를 참조하십시오.
- 사용자 정의 보안 구성에 대한 자세한 내용은 Quarkus Open ID Connect 설명서를 참조하십시오.
5.3. Apicurio Registry 인증 및 권한 부여 구성 옵션
Apicurio Registry는 Red Hat Single Sign-On 또는 HTTP 기본 인증을 사용하는 OpenID Connect에 대한 인증 옵션을 제공합니다.
Apicurio Registry는 역할 기반 및 콘텐츠 기반 접근 방식에 대한 권한 부여 옵션을 제공합니다.
- 기본 admin, write 및 읽기 전용 사용자 역할에 대한 역할 기반 권한 부여
- 아티팩트 또는 아티팩트 그룹의 소유자만 아티팩트 또는 아티팩트 그룹의 소유자만 업데이트하거나 삭제할 수 있는 스키마 또는 API 아티팩트에 대한 콘텐츠 기반 권한 부여입니다.
Apicurio 레지스트리 인증 및 권한 부여 옵션은 기본적으로 비활성화되어 있습니다.
이 장에서는 다음 구성 옵션에 대해 자세히 설명합니다.
Red Hat Single Sign-On과 OpenID Connect를 사용한 Apicurio Registry 인증
Red Hat Single Sign-On을 사용하여 Apicurio Registry 웹 콘솔 및 API에 대한 인증을 구성하려면 다음 환경 변수를 설정할 수 있습니다.
표 5.6. Apicurio 레지스트리 인증 옵션 구성
| 환경 변수 | 설명 | 유형 | Default |
|---|---|---|---|
|
|
Apicurio Registry에서 인증을 활성화하거나 비활성화합니다. | 문자열 |
|
|
|
사용할 Red Hat Single Sign-On 인증 서버의 URL입니다. | 문자열 | - |
|
| 인증에 사용되는 Red Hat Single Sign-On 영역입니다. | 문자열 | - |
|
| Apicurio Registry REST API의 클라이언트 ID입니다. | 문자열 |
|
|
| Apicurio Registry 웹 콘솔의 클라이언트 ID입니다. | 문자열 |
|
HTTP 기본을 사용한 Apicurio Registry 인증
기본적으로 Apicurio Registry는 OpenID Connect를 사용한 인증을 지원합니다. 사용자(또는 API 클라이언트)는 Apicurio Registry REST API에 대한 인증된 호출을 수행하기 위해 액세스 토큰을 받아야 합니다. 그러나 일부 도구에서는 OpenID Connect를 지원하지 않으므로 다음 설정 옵션을 true 로 설정하여 HTTP 기본 인증을 지원하도록 Apicurio Registry를 구성할 수도 있습니다.
표 5.7. Apicurio Registry HTTP 기본 인증 구성
| 환경 변수 | Java 시스템 속성 | 유형 | 기본값 |
|---|---|---|---|
|
|
| 부울 |
|
Apicurio Registry 역할 기반 권한 부여
다음 옵션을 true 로 설정하여 Apicurio Registry에서 역할 기반 인증을 활성화할 수 있습니다.
표 5.8. Apicurio 레지스트리 역할 기반 권한 부여 구성
| 환경 변수 | Java 시스템 속성 | 유형 | 기본값 |
|---|---|---|---|
|
|
| 부울 |
|
그런 다음 사용자의 인증 토큰(예: Red Hat Single Sign-On을 사용하여 인증할 때 부여됨)에 포함된 역할을 사용하거나 Apicurio Registry에서 내부적으로 관리하는 역할 매핑을 사용하도록 역할 기반 권한을 구성할 수 있습니다.
Red Hat Single Sign-On에 할당된 사용 역할
Red Hat Single Sign-On에서 할당한 역할을 사용하여 활성화하려면 다음 환경 변수를 설정합니다.
표 5.9. Red Hat Single Sign-On을 사용한 Apicurio Registry 역할 기반 권한 부여 구성
| 환경 변수 | 설명 | 유형 | Default |
|---|---|---|---|
|
|
| 문자열 |
|
|
| 사용자가 관리자임을 나타내는 역할의 이름입니다. | 문자열 |
|
|
| 사용자가 개발자임을 나타내는 역할의 이름입니다. | 문자열 |
|
|
| 사용자에게 읽기 전용 액세스 권한이 있음을 나타내는 역할의 이름입니다. | 문자열 |
|
Apicurio Registry가 Red Hat Single Sign-On의 역할을 사용하도록 구성된 경우 Apicurio Registry 사용자를 Red Hat Single Sign-On에서 다음 사용자 역할 중 하나 이상에 할당해야 합니다. 그러나 표 5.9. “Red Hat Single Sign-On을 사용한 Apicurio Registry 역할 기반 권한 부여 구성” 의 환경 변수를 사용하여 다양한 사용자 역할 이름을 구성할 수 있습니다.
표 5.10. 인증 및 권한 부여를 위한 Apicurio Registry 역할
| 역할 이름 | 아티팩트 읽기 | 아티팩트 쓰기 | 글로벌 규칙 | 설명 |
|---|---|---|---|---|
|
| 제공됨 | 제공됨 | 제공됨 | 모든 생성, 읽기, 업데이트 및 삭제 작업에 대한 전체 액세스 권한 |
|
| 제공됨 | 제공됨 | 없음 | 글로벌 규칙 및 가져오기/내보도 구성을 제외하고 생성, 읽기, 업데이트 및 삭제 작업에 액세스할 수 있습니다. 이 역할은 아티팩트 규칙만 구성할 수 있습니다. |
|
| 제공됨 | 없음 | 없음 | 읽기 및 검색 작업만 액세스할 수 있습니다. 이 역할은 규칙을 구성할 수 없습니다. |
Apicurio Registry에서 직접 역할 관리
Apicurio Registry에서 내부적으로 관리하는 역할을 사용하여 활성화하려면 다음 환경 변수를 설정합니다.
표 5.11. 내부 역할 매핑을 사용한 Apicurio 레지스트리 역할 기반 권한 부여 구성
| 환경 변수 | 설명 | 유형 | Default |
|---|---|---|---|
|
|
| 문자열 |
|
내부적으로 관리되는 역할 매핑을 사용하는 경우 Apicurio Registry REST API에서 /admin/roleMappings 끝점을 사용하여 역할을 할당할 수 있습니다. 자세한 내용은 Apicurio Registry REST API 설명서를 참조하십시오.
사용자에게 정확히 하나의 역할인 ADMIN,DEVELOPER 또는 READ_ONLY 역할을 부여할 수 있습니다. admin 권한이 있는 사용자만 다른 사용자에게 액세스 권한을 부여할 수 있습니다.
Apicurio Registry admin-override 구성
Apicurio Registry에는 기본 관리자 사용자가 없으므로 일반적으로 admins로 식별할 수 있는 다른 방법을 구성하는 것이 유용합니다. 다음 환경 변수를 사용하여 이 admin-override 기능을 구성할 수 있습니다.
표 5.12. Apicurio Registry admin-override 구성
| 환경 변수 | 설명 | 유형 | Default |
|---|---|---|---|
|
| admin-override 기능을 활성화합니다. | 문자열 |
|
|
|
admin-override 정보를 찾는 위치. 현재 | 문자열 |
|
|
|
사용자가 관리자인지 확인하는 데 사용되는 정보 유형입니다. 값은 FROM 변수의 값에 따라 달라집니다(예: FROM이 | 문자열 |
|
|
| 사용자가 관리자임을 나타내는 역할의 이름입니다. | 문자열 |
|
|
| admin-override를 결정하는 데 사용할 JWT 토큰 클레임의 이름입니다. | 문자열 |
|
|
| CLAIM 변수에 표시된 JWT 토큰 클레임의 값은 사용자에게 admin-override를 부여해야 합니다. | 문자열 |
|
예를 들어 이 admin-override 기능을 사용하여 해당 사용자에게 admin 역할을 부여하는 Red Hat Single Sign-On의 단일 사용자에게 sr-admin 역할을 할당할 수 있습니다. 그런 다음 해당 사용자는 /admin/roleMappings REST API(또는 관련 UI)를 사용하여 추가 사용자(추가 관리자 포함)에 역할을 부여할 수 있습니다.
Apicurio Registry 소유자 전용 권한 부여
다음 옵션을 true 로 설정하여 Apicurio Registry에서 아티팩트 또는 아티팩트 그룹에 대한 업데이트에 대한 소유자 전용 권한을 활성화할 수 있습니다.
표 5.13. 소유자 전용 권한 부여 구성
| 환경 변수 | Java 시스템 속성 | 유형 | 기본값 |
|---|---|---|---|
|
|
| 부울 |
|
|
|
| 부울 |
|
소유자 전용 권한이 활성화되면 아티팩트를 생성한 사용자만 해당 아티팩트를 수정하거나 삭제할 수 있습니다.
소유자 전용 권한 부여와 그룹 소유자 전용 권한 부여가 모두 활성화되면 아티팩트 그룹을 생성한 사용자만 해당 아티팩트 그룹에 대한 쓰기 액세스 권한을 갖습니다(예: 해당 그룹에서 아티팩트를 추가하거나 제거하는 등).
Apicurio Registry 인증 읽기 액세스
인증된 읽기 액세스 옵션이 활성화되면 Apicurio Registry는 사용자 역할에 관계없이 동일한 조직의 모든 인증된 사용자의 요청에 대한 읽기 전용 액세스 권한을 부여합니다.
인증된 읽기 액세스를 활성화하려면 먼저 역할 기반 인증을 활성화한 다음 다음 옵션을 true 로 설정해야 합니다.
표 5.14. 인증된 읽기 액세스에 대한 구성
| 환경 변수 | Java 시스템 속성 | 유형 | 기본값 |
|---|---|---|---|
|
|
| 부울 |
|
자세한 내용은 “Apicurio Registry 역할 기반 권한 부여” 에서 참조하십시오.
Apicurio Registry 익명 읽기 전용 액세스
권한 부여의 두 가지 주요 유형(역할 기반 및 소유자 기반 권한 부여) 외에도 Apicurio Registry에서는 익명 읽기 전용 액세스 옵션을 지원합니다.
인증 자격 증명이 없는 REST API 호출과 같은 익명 사용자를 허용하려면 REST API에 대한 읽기 전용 호출을 만들려면 다음 옵션을 true 로 설정합니다.
표 5.15. 익명 읽기 전용 액세스에 대한 구성
| 환경 변수 | Java 시스템 속성 | 유형 | 기본값 |
|---|---|---|---|
|
|
| 부울 |
|
추가 리소스
- OpenShift의 Apicurio Registry 배포에서 환경 변수를 설정하는 방법의 예는 다음을 참조하십시오. 6.1절. “OpenShift에서 Apicurio 레지스트리 상태 점검 구성”
- Apicurio Registry의 사용자 정의 인증 구성에 대한 자세한 내용은 Quarkus Open ID Connect 설명서를 참조하십시오.
5.4. OpenShift 클러스터 내부에서 Apicurio Registry에 대한 HTTPS 연결 구성
다음 절차에서는 OpenShift 클러스터 내부에서 HTTPS 연결에 사용할 포트를 노출하도록 Apicurio Registry 배포를 구성하는 방법을 보여줍니다.
이러한 종류의 연결은 클러스터 외부에서 직접 사용할 수 없습니다. 라우팅은 호스트 이름을 기반으로 하며, HTTPS 연결 시 인코딩됩니다. 따라서 엣지 종료 또는 기타 구성이 여전히 필요합니다. 5.5절. “OpenShift 클러스터 외부에서 Apicurio Registry에 대한 HTTPS 연결 구성”을 참조하십시오.
사전 요구 사항
- Service Registry Operator가 이미 설치되어 있어야 합니다.
절차
자체 서명된 인증서가 있는
키 저장소를생성합니다. 자체 인증서를 사용하는 경우 이 단계를 건너뛸 수 있습니다.keytool -genkey -trustcacerts -keyalg RSA -keystore registry-keystore.jks -storepass password
키 저장소 및 키 저장소 암호를 저장할 새 시크릿을 생성합니다.
- OpenShift 웹 콘솔의 왼쪽 탐색 메뉴에서 워크로드 > 시크릿 > 키/값 시크릿 만들기를 클릭합니다.
다음 값을 사용합니다.
이름:registry-keystore
Key 1:keystore.jks
Value 1: registry-keystore.jks (uploaded file)
Key 2:password
Value 2: password참고java.io.IOException: Invalid keystore 형식이표시되면 바이너리 파일의 업로드가 제대로 작동하지 않았습니다. 또는cat registry-keystore.jks | base64 -w0 > data.txt를 사용하여 파일을 base64 문자열로 인코딩하여 인코딩된 파일을 수동으로 추가합니다.
Apicurio Registry 인스턴스의 배포 리소스를 편집합니다. Service Registry Operator의 상태 필드에서 올바른 이름을 찾을 수 있습니다.
키 저장소 보안을 볼륨으로 추가합니다.
template: spec: volumes: - name: registry-keystore-secret-volume secret: secretName: registry-keystore볼륨 마운트를 추가합니다.
volumeMounts: - name: registry-keystore-secret-volume mountPath: /etc/registry-keystore readOnly: trueJAVA_OPTIONS및KEYSTORE_PASSWORD환경 변수를 추가합니다.- name: KEYSTORE_PASSWORD valueFrom: secretKeyRef: name: registry-keystore key: password - name: JAVA_OPTIONS value: >- -Dquarkus.http.ssl.certificate.key-store-file=/etc/registry-keystore/keystore.jks -Dquarkus.http.ssl.certificate.key-store-file-type=jks -Dquarkus.http.ssl.certificate.key-store-password=$(KEYSTORE_PASSWORD)참고문자열 보간을 사용할 때는 순서가 중요합니다.
HTTPS 포트를 활성화합니다.
ports: - containerPort: 8080 protocol: TCP - containerPort: 8443 protocol: TCP
Apicurio Registry 인스턴스의 서비스 리소스를 편집합니다. Service Registry Operator의 상태 필드에서 올바른 이름을 찾을 수 있습니다.
ports: - name: http protocol: TCP port: 8080 targetPort: 8080 - name: https protocol: TCP port: 8443 targetPort: 8443연결이 작동하는지 확인합니다.
SSH를 사용하여 클러스터의 Pod에 연결합니다(Apicurio Registry Pod를 사용할 수 있음).
oc rsh -n default example-apicurioregistry-deployment-vx28s-4-lmtqb
서비스 리소스에서 Apicurio Registry Pod의 클러스터 IP를 찾습니다(웹 콘솔의 위치 열 참조). 이후 테스트 요청을 실행합니다(자체 서명 인증서를 사용하므로 비보안 플래그가 필요합니다.
curl -k https://172.30.209.198:8443/health [...]
5.5. OpenShift 클러스터 외부에서 Apicurio Registry에 대한 HTTPS 연결 구성
다음 절차에서는 OpenShift 클러스터 외부의 연결에 대해 HTTPS 에지 종료 경로를 노출하도록 Apicurio Registry 배포를 구성하는 방법을 보여줍니다.
사전 요구 사항
- Service Registry Operator가 이미 설치되어 있어야 합니다.
- 보안 경로 생성을 위한 OpenShift 문서를 참조하십시오.
절차
Service Registry Operator에서 생성한 HTTP 경로 외에 두 번째 경로를 추가합니다. 다음 예제를 참조하십시오.
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에서 기본값을 사용합니다. 또는 다음 명령을 사용하여 사용자 정의 자체 서명 인증서를 생성할 수 있습니다.
openssl genrsa 2048 > host.key && openssl req -new -x509 -nodes -sha256 -days 365 -key host.key -out host.cert
그런 다음 OpenShift CLI를 사용하여 경로를 생성합니다.
oc create route edge \ --service=example-apicurioregistry-service-9whd7 \ --cert=host.cert --key=host.key \ --hostname=example-apicurioregistry-default.apps.example.com \ --insecure-policy=Redirect \ -n default
6장. Apicurio Registry 배포 구성 및 관리
이 장에서는 OpenShift에서 Apicurio Registry 배포에 대한 선택적 설정을 구성하고 관리하는 방법을 설명합니다.
6.1. OpenShift에서 Apicurio 레지스트리 상태 점검 구성
OpenShift에서 Apicurio Registry 서버의 상태를 모니터링하도록 활성 상태 및 준비 상태 프로브에 대한 선택적 환경 변수를 구성할 수 있습니다.
- 활성 상태 프로브 는 애플리케이션을 진행할 수 있는지 테스트합니다. 애플리케이션을 진행할 수 없는 경우 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이름을 선택합니다. Environment 탭을 클릭하고 Single values env 섹션에 환경 변수를 입력합니다. 예를 들면 다음과 같습니다.
-
NAME:
LIVENESS_STATUS_RESET -
VALUE:
350
-
NAME:
하단에서 저장 을 클릭합니다.
또는 OpenShift
oc명령을 사용하여 다음 단계를 수행할 수 있습니다. 자세한 내용은 OpenShift CLI 설명서를 참조하십시오.
6.2. Apicurio 레지스트리 상태 점검의 환경 변수
이 섹션에서는 OpenShift에서 Apicurio 레지스트리 상태 점검에 사용할 수 있는 환경 변수에 대해 설명합니다. 여기에는 OpenShift에서 Apicurio Registry 서버의 상태를 모니터링할 수 있는 liveness 및 readiness 프로브가 포함됩니다. 예제 절차는 6.1절. “OpenShift에서 Apicurio 레지스트리 상태 점검 구성” 에서 참조하십시오.
다음 환경 변수는 참조용으로만 제공됩니다. 기본값은 대부분의 경우에만 설계되었으며 사용자 환경에 필요한 경우에만 변경해야 합니다. 기본값을 변경하면 저장된 하드웨어, 네트워크 및 데이터 양에 따라 달라집니다. 불필요한 오버헤드를 방지하려면 이러한 값을 가능한 한 낮게 유지해야 합니다.
활성 환경 변수
표 6.1. Apicurio Registry liveness 프로브의 환경 변수
| 이름 | 설명 | 유형 | Default |
|---|---|---|---|
|
| 활성 상태 프로브가 실패하기 전에 발생할 수 있는 활성 문제 또는 오류 수입니다. | 정수 |
|
|
| 임계값 오류 수가 발생해야 하는 기간입니다. 예를 들어 이 값이 60이고 임계값이 1이면 1분 내에 두 번 오류가 발생한 후 검사가 실패합니다. | 초 |
|
|
| 활성 프로브가 OK 상태로 재설정될 때까지 더 많은 오류 없이 경과해야 하는 시간(초)입니다. | 초 |
|
|
| 무시되는 활동 예외의 쉼표로 구분된 목록입니다. | 문자열 |
|
OpenShift는 활성 상태 점검에 실패하는 포드를 자동으로 재시작하기 때문에 준비 설정과 달리 활성 설정은 OpenShift의 Apicurio Registry 동작에 직접적인 영향을 미치지 않습니다.
준비 상태 환경 변수
표 6.2. Apicurio Registry readiness 프로브의 환경 변수
| 이름 | 설명 | 유형 | Default |
|---|---|---|---|
|
| 준비 상태 프로브가 실패하기 전에 발생할 수 있는 준비 상태 문제 또는 오류 수입니다. | 정수 |
|
|
| 임계값 오류 수가 발생해야 하는 기간입니다. 예를 들어 이 값이 60이고 임계값이 1이면 1분 내에 두 개의 오류가 발생한 후 검사가 실패합니다. | 초 |
|
|
| 활성 프로브가 OK 상태로 재설정될 때까지 더 많은 오류 없이 경과해야 하는 시간(초)입니다. 이 경우 정상 작업으로 돌아갈 때까지 Pod가 준비되지 않은 시간을 나타냅니다. | 초 |
|
|
| Readiness는 다음 두 가지 작업의 시간 초과를 추적합니다.
이러한 작업에 구성된 타임아웃보다 시간이 오래 걸리는 경우 이는 준비 상태 문제 또는 오류로 간주됩니다. 이 값은 두 작업의 시간 제한을 제어합니다. | 초 |
|
6.3. Apicurio 레지스트리 환경 변수 관리
Service Registry Operator는 가장 일반적인 Apicurio 레지스트리 구성을 관리하지만 수동으로 조정할 수 있는 몇 가지 옵션이 있습니다. Apicurio Registry Deployment 리소스에서 환경 변수를 설정하여 업데이트할 수 있습니다. 특정 구성 옵션을 ApicurioRegistry CR에서 사용할 수 없는 경우 환경 변수를 사용하여 조정할 수 있습니다.
절차
- OpenShift 웹 콘솔
- 설치된 Operator 탭을 선택한 다음 Red Hat Integration - Service Registry Operator 를 선택합니다.
-
Apicurio Registry 탭에서
Apicurio Registry배포에 대해 ApicurioRegistry CR을 클릭합니다. -
기본 개요 페이지에서 Apicurio Registry 인스턴스를 배포하기 위해 Operator가 관리하는
배포의 이름이 포함된managedResources섹션을 확인합니다. -
왼쪽 메뉴
의워크로드 & gt; 배포에서 해당 배포를 찾습니다. -
올바른 이름으로 배포를 선택하고 환경 탭을 선택합니다.
- 환경 변수를 Single values(env) 섹션에 추가하거나 수정할 수 있습니다.
- 하단에서 저장 을 클릭합니다.
- OpenShift CLI
- Apicurio Registry가 설치된 프로젝트를 선택합니다.
-
oc get apicurioregistry를 실행하여ApicurioRegistryCR 목록을 가져옵니다. -
구성하려는 Apicurio Registry 인스턴스를 나타내는 CR에서
oc describe를 실행합니다. -
status섹션에서managedResource를 봅니다. -
해당 배포를
찾은후oc edit를 입력합니다. -
spec.template.spec.containers[0].env섹션에서 환경 변수를 추가하거나 수정합니다.
6.4. Apicurio Registry 웹 콘솔 구성
선택적 환경 변수를 설정하여 배포 환경에 맞게 Apicurio Registry 웹 콘솔을 구성하거나 동작을 사용자 지정할 수 있습니다.
사전 요구 사항
- Apicurio Registry가 이미 설치되어 있습니다.
웹 콘솔 배포 환경 구성
브라우저에서 Apicurio Registry 웹 콘솔에 액세스하면 일부 초기 구성 설정이 로드됩니다. 다음 구성 설정이 중요합니다.
- 코어 Apicurio 레지스트리 서버 REST API의 URL
- Apicurio Registry 웹 콘솔 클라이언트의 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 Registry 웹 콘솔 클라이언트의 URL을 지정합니다. 예:https://registry.my-domain.com/ui
웹 콘솔을 읽기 전용 모드로 구성
Apicurio Registry 웹 콘솔을 읽기 전용 모드로 선택적 기능으로 구성할 수 있습니다. 이 모드에서는 사용자가 등록된 아티팩트를 변경할 수 있는 Apicurio Registry 웹 콘솔의 모든 기능을 비활성화합니다. 여기에는 다음이 포함됩니다.
- 아티팩트 생성
- 새 아티팩트 버전 업로드
- 아티팩트 메타데이터 업데이트
- 아티팩트 삭제
절차
다음 환경 변수를 구성합니다.
-
REGISTRY_UI_FEATURES_READONLY: 읽기 전용 모드를 활성화하려면true로 설정합니다. 기본값은false입니다.
6.5. Apicurio 레지스트리 로깅 구성
런타임에 Apicurio 레지스트리 로깅 구성을 설정할 수 있습니다. Apicurio Registry는 세분화된 로깅을 위해 특정 로거에 대한 로그 수준을 설정하는 REST 끝점을 제공합니다. 이 섹션에서는 Apicurio Registry /admin REST API를 사용하여 런타임에 Apicurio 레지스트리 로그 수준을 보고 설정하는 방법을 설명합니다.
사전 요구 사항
-
OpenShift에 Apicurio Registry가 배포된 경우 Apicurio Registry 인스턴스에 액세스할 수 있는 URL을 가져오거나 Apicurio Registry를 가져옵니다. 이 간단한 예제에서는
localhost:8080의 URL을 사용합니다.
절차
이
curl명령을 사용하여 로거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로 변경합니다.$ 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의 로그 수준을 기본값으로 되돌립니다.$ 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.6. Apicurio Registry 이벤트 소싱 구성
레지스트리가 변경될 때 이벤트를 보내도록 Apicurio Registry를 구성할 수 있습니다. 예를 들어 Apicurio Registry는 스키마 및 API 아티팩트가 생성, 업데이트, 삭제되는 경우 이벤트를 트리거할 수 있습니다. 이러한 방식으로 애플리케이션 및 타사 통합에 이벤트를 전송하도록 Apicurio Registry를 구성할 수 있습니다.
이벤트 전송에 사용할 수 있는 다양한 프로토콜이 있습니다. 현재 구현된 프로토콜은 HTTP 및 Apache Kafka입니다. 그러나 프로토콜에 관계없이 이벤트는 CNCF CloudEvents 사양을 사용하여 전송됩니다.
모든 이벤트 유형은 io.apicurio.registry.events.dto.RegistryEventType 에 정의됩니다. 예를 들어 이벤트 유형에는 다음이 포함됩니다.
-
io.apicurio.registry.artifact-created -
io.apicurio.registry.artifact-updated -
io.apicurio.registry.artifact-rule-created -
io.apicurio.registry.global-rule-created
Java 시스템 속성 또는 동등한 환경 변수를 사용하여 Apicurio Registry에서 클라우드 이벤트를 구성할 수 있습니다.
사전 요구 사항
- Apicurio 레지스트리 클라우드 이벤트를 보낼 애플리케이션이 있어야 합니다. 예를 들어 사용자 지정 애플리케이션 또는 타사 애플리케이션일 수 있습니다.
HTTP를 사용하여 Apicurio Registry 이벤트 소싱 구성
이 섹션의 예제에서는 http://my-app-host:8888/events 에서 실행되는 사용자 정의 애플리케이션을 보여줍니다.
절차
HTTP 프로토콜을 사용하는 경우 다음과 같이 이벤트를 애플리케이션으로 전송하도록 Apicurio Registry 구성을 설정합니다.
-
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 레지스트리 이벤트 소싱 구성
이 섹션의 예제에서는 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장. Service Registry Operator 구성 참조
이 장에서는 Apicurio Registry를 배포하도록 Service Registry Operator를 구성하는 데 사용되는 사용자 정의 리소스에 대한 자세한 정보를 제공합니다.
7.1. Apicurio 레지스트리 사용자 정의 리소스
Service Registry Operator는 OpenShift에서 Apicurio Registry 의 단일 배포를 나타내는 ApicurioRegistry 사용자 정의 리소스(CR) 를 정의합니다.
이러한 리소스 오브젝트는 사용자가 Apicurio Registry를 배포하고 구성하는 방법을 Service Registry Operator에 지시하도록 생성하고 유지 관리합니다.
ApicurioRegistry CR의 예
다음 명령은 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
기본적으로 Service 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>
security:
keycloak:
url: <string>
realm: <string>
apiClientId: <string>
uiClientId: <string>
deployment:
replicas: <int32>
host: <string>
affinity: <k8s.io/api/core/v1 Affinity struct>
tolerations: <k8s.io/api/core/v1 []Toleration slice>다음 표에서는 각 구성 옵션에 대해 설명합니다.
표 7.1. ApicurioRegistry CR 사양 구성 옵션
| 구성 옵션 | type | 기본값 | 설명 |
|---|---|---|---|
|
| - | - | Apicurio 레지스트리 애플리케이션 구성 섹션 |
|
| string | 필수 항목 |
스토리지 백엔드. |
|
| - | - | SQL 스토리지 백엔드 구성 |
|
| - | - | SQL 스토리지 백엔드에 대한 데이터베이스 연결 구성 |
|
| string | 필수 항목 | 데이터베이스 연결 URL 문자열 |
|
| string | 필수 항목 | 데이터베이스 연결 사용자 |
|
| string | empty | 데이터베이스 연결 암호 |
|
| - | - | Kafka 스토리지 백엔드 구성 |
|
| string | 필수 항목 | Streams 스토리지 백엔드의 Kafka 부트스트랩 서버 URL |
|
| - | - | Kafka 스토리지 백엔드에 대한 TLS 인증 구성 섹션 |
|
| string | 필수 항목 | Kafka에 대한 TLS 신뢰 저장소를 포함하는 보안의 이름 |
|
| string | 필수 항목 | 사용자 TLS 키 저장소를 포함하는 보안의 이름 |
|
| string | 필수 항목 | Kafka에 대한 TLS 신뢰 저장소를 포함하는 보안의 이름 |
|
| string | 필수 항목 | SCRAM 사용자 이름 |
|
| string | 필수 항목 | SCRAM 사용자 암호를 포함하는 보안의 이름 |
|
| string |
| SASL 메커니즘 |
|
| - | - | Apicurio Registry 웹 콘솔 설정 |
|
| string |
| Apicurio Registry 웹 콘솔을 읽기 전용 모드로 설정 |
|
| string |
|
Apicurio 레지스트리 로그 수준입니다. 정보 중 하나 |
|
| - | - | Apicurio Registry 웹 콘솔 및 REST API 보안 설정 |
|
| - | - | Keycloak을 사용한 웹 콘솔 및 REST API 보안 구성 |
|
| string | 필수 항목 |
Keycloak URL은 |
|
| string | 필수 항목 | Keycloak 영역 |
|
| string |
| REST API용 Keycloak 클라이언트 |
|
| string |
| 웹 콘솔용 Keycloak 클라이언트 |
|
| - | - | Apicurio Registry 배포 설정 섹션 |
|
| 양의 정수 |
| 배포할 Apicurio Registry Pod 수 |
|
| string | auto-generated | Apicurio Registry 콘솔 및 API를 사용할 수 있는 호스트/URL. 가능한 경우 Service Registry Operator는 클러스터 라우터 설정에 따라 올바른 값을 확인합니다. 값은 한 번만 자동으로 생성되므로 사용자는 나중에 재정의할 수 있습니다. |
|
| k8s.io/api/core/v1 Affinity struct | empty | Apicurio Registry 배포 선호도 구성 |
|
| k8s.io/api/core/v1 []Toleration 슬라이스 | empty | Apicurio Registry 배포 허용 오차 구성 |
옵션이 필수로 표시되면 활성화되는 다른 구성 옵션에 조건부가 될 수 있습니다. 빈 값이 허용되지만 Operator에서 지정된 작업을 수행하지 않습니다.
7.3. Apicurio Registry CR 상태
상태는 현재 배포 및 애플리케이션 상태에 대한 설명이 포함된 Service 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>표 7.2. ApicurioRegistry CR 상태 필드
| 상태 필드 | 유형 | 설명 |
|---|---|---|
|
| - | 배포된 Apicurio Registry에 대한 정보가 있는 섹션입니다. |
|
| string | Apicurio Registry UI 및 REST API에 액세스할 수 있는 URL입니다. |
|
| - | Apicurio Registry의 상태를 보고하는 조건 목록 또는 해당 배포에 대한 Operator입니다. |
|
| string | 조건 유형입니다. |
|
| string |
조건의 상태, |
|
| string | 조건의 마지막 전환 이유를 나타내는 프로그래밍 식별자입니다. |
|
| string | 전환에 대한 세부 정보를 나타내는 사람이 읽을 수 있는 메시지입니다. |
|
| string | 조건이 한 상태에서 다른 상태로 마지막으로 전환된 시간입니다. |
|
| - | Service Registry Operator에서 관리하는 OpenShift 리소스 목록 |
|
| string | 리소스 종류. |
|
| string | 리소스 네임스페이스. |
|
| string | 리소스 이름입니다. |
7.4. Apicurio Registry 관리 리소스
Apicurio Registry를 배포할 때 Service Registry Operator에서 관리하는 리소스는 다음과 같습니다.
-
Deployment -
Service -
Ingress(및경로) -
PodDisruptionBudget
7.5. Service Registry Operator 라벨
Service Registry Operator에서 관리하는 리소스에는 일반적으로 다음과 같이 레이블이 지정됩니다.
표 7.3. 관리 리소스에 대한 Service Registry Operator 라벨
| 레이블 | 설명 |
|---|---|
|
|
지정된 ApicurioRegistry CR의 이름을 기반으로 리소스가 속하는 |
|
|
배포 유형: |
|
|
배포 이름: |
|
| Apicurio 레지스트리 또는 Service Registry Operator 버전 |
|
| 애플리케이션 배포에 권장되는 Kubernetes 레이블 세트입니다. |
|
| Red Hat 제품의 미터링 레이블입니다. |
부록 A. 서브스크립션 사용
Apicurio Registry는 소프트웨어 서브스크립션을 통해 제공됩니다. 서브스크립션을 관리하려면 Red Hat 고객 포털에서 계정에 액세스하십시오.
귀하의 계정에 액세스
- access.redhat.com 으로 이동합니다.
- 아직 계정이 없는 경우 계정을 생성합니다.
- 계정에 로그인합니다.
서브스크립션 활성화
- access.redhat.com 으로 이동합니다.
- 내 서브스크립션으로 이동합니다.
- 서브스크립션을 활성화하여 16자리 활성화 번호를 입력합니다.
ZIP 및 TAR 파일 다운로드
ZIP 또는 TAR 파일에 액세스하려면 고객 포털을 사용하여 다운로드를 위한 관련 파일을 찾습니다. RPM 패키지를 사용하는 경우에는 이 단계가 필요하지 않습니다.
- 브라우저를 열고 access.redhat.com/downloads 에서 Red Hat 고객 포털 제품 다운로드 페이지에 로그인합니다.
- 통합 및 자동화 카테고리에서 Red Hat Integration 항목을 찾습니다.
- 원하는 Apicurio Registry 제품을 선택합니다. Software Download 페이지가 열립니다.
- 구성 요소에 대한 다운로드 링크를 클릭합니다.
패키지용 시스템 등록
Red Hat Enterprise Linux에 RPM 패키지를 설치하려면 시스템을 등록해야 합니다. ZIP 또는 TAR 파일을 사용하는 경우 이 단계는 필요하지 않습니다.
- access.redhat.com 으로 이동합니다.
- Registration Assistant 로 이동합니다.
- OS 버전을 선택하고 다음 페이지로 이동합니다.
- 시스템 터미널에서 나열된 명령을 사용하여 등록을 완료합니다.
자세한 내용은 Red Hat 고객 포털에 시스템을 등록하고 가입하는 방법을 참조하십시오.