Red Hat Camel K is deprecated
Red Hat Camel K is deprecated and the End of Life date for this product is June 30, 2025. For help migrating to the current go-to solution, Red Hat build of Apache Camel, see the Migration Guide.5장. Kafka에 대한 Camel K 인증
Apache Kafka에 대해 Camel K를 인증할 수 있습니다.
이 예제에서는 Apache Kafka용 Red Hat OpenShift Streams를 사용하여 Kafka 주제를 설정하고 간단한 Producer/Consumer 패턴 통합에서 사용하는 방법을 설명합니다.
5.1. Kafka 설정
Kafka를 설정하려면 필요한 OpenShift Operator를 설치하고 Kafka 인스턴스를 생성하며 Kafka 주제를 생성해야 합니다.
다음 Red Hat 제품 중 하나를 사용하여 Kafka를 설정합니다.
- Red Hat AMQP(Advanced Message>-<) 스트림 - 자체 관리 Apache Kafka 오퍼링. AMQ Streams는 오픈 소스 Strimzi 를 기반으로 하며 Red Hat Integration 의 일부로 포함됩니다. AMQ Streams는 게시/서브스크립션 메시징 브로커를 포함하는 Apache Kafka를 기반으로 하는 분산 및 확장 가능한 스트리밍 플랫폼입니다. Kafka Connect는 Kafka 기반 시스템을 외부 시스템과 통합하는 프레임워크를 제공합니다. Kafka Connect를 사용하면 외부 시스템에서 Kafka 브로커로 데이터를 스트리밍하도록 소스 및 싱크 커넥터를 구성할 수 있습니다.
- Red Hat OpenShift Streams for Apache Kafka - Apache Kafka 실행 프로세스를 단순화하는 관리형 클라우드 서비스입니다. 새로운 클라우드 네이티브 애플리케이션을 구축, 배포, 확장하거나 기존 시스템을 현대화하기 위한 간소화된 개발자 환경을 제공합니다.
5.1.1. AMQ 스트림을 사용하여 Kafka 설정
AMQ Streams는 OpenShift 클러스터에서 Apache Kafka를 실행하는 프로세스를 간소화합니다.
5.1.1.1. AMQ Streams를 위한 OpenShift 클러스터 준비
Camel K 또는 Kamelets 및 Red Hat AMQ Streams를 사용하려면 다음 Operator 및 툴을 설치해야 합니다.
- Red Hat Integration - AMQ Streams operator - Apache Kafka 인스턴스용 Openshift Cluster와 AMQ Streams 간의 통신을 관리합니다.
- Red Hat Integration - Camel K operator - OpenShift에서 클라우드에서 기본적으로 실행되는 경량화된 통합 프레임워크인 Camel K를 설치 및 관리합니다.
- Camel K CLI 툴 - 모든 Camel K 기능에 액세스할 수 있습니다.
사전 요구 사항
- Apache Kafka 개념에 대해 잘 알고 있습니다.
- 올바른 액세스 수준, 프로젝트 생성 및 운영자 설치 기능, 로컬 시스템에 OpenShift 및 Camel K CLI 설치 기능을 사용하여 OpenShift 4.6 이상 클러스터에 액세스할 수 있습니다.
-
명령줄에서 OpenShift 클러스터와 상호 작용할 수 있도록
oc
)를 설치했습니다.
절차
AMQ Streams를 사용하여 Kafka를 설정하려면 다음을 수행합니다.
- OpenShift 클러스터의 웹 콘솔에 로그인합니다.
- 통합을 만들려는 프로젝트를 만들거나 엽니다(예: my-camel-k-kafka ).
- Camel K 설치에 설명된 대로 Camel K 및 Camel K CLI를 설치합니다. https://access.redhat.com/documentation/en-us/red_hat_integration/2023.q1/html-single/getting_started_with_camel_k#installing-camel-k
AMQ 스트림 Operator를 설치합니다.
- 모든 프로젝트에서 Operators > OperatorHub 를 선택합니다.
- 키워드로 필터링 필드에 AMQ Streams 를 입력합니다.
Red Hat Integration - AMQ Streams 카드를 클릭한 다음 설치를 클릭합니다.
Operator 설치 페이지가 열립니다.
- 기본값을 승인한 다음 설치를 클릭합니다.
- Operators > 설치된 Operator 를 선택하여 Camel K 및 AMQ Streams Operator가 설치되었는지 확인합니다.
5.1.1.2. AMQ Streams를 사용하여 Kafka 주제 설정
Kafka 주제에서는 Kafka 인스턴스의 데이터 스토리지에 대한 대상을 제공합니다. 데이터를 보내기 전에 Kafka 주제를 설정해야 합니다.
사전 요구 사항
- OpenShift 클러스터에 액세스할 수 있습니다.
- Red Hat Integration - Camel K 및 Red Hat Integration - AMQ Streams Operator를 OpenShift 클러스터 준비에 설명된 대로 설치했습니다.
-
OpenShift CLI(
oc
) 및 Camel K CLI(kamel
)를 설치했습니다.
절차
AMQ Streams를 사용하여 Kafka 주제를 설정하려면 다음을 수행합니다.
- OpenShift 클러스터의 웹 콘솔에 로그인합니다.
- 프로젝트를 선택한 다음 Red Hat Integration - AMQ Streams Operator를 설치한 프로젝트를 클릭합니다. 예를 들어 my-camel-k-kafka 프로젝트를 클릭합니다.
- Operators > 설치된 Operators 를 선택한 다음 Red Hat Integration - AMQ Streams 를 클릭합니다.
Kafka 클러스터를 생성합니다.
- Kafka 에서 인스턴스 생성을 클릭합니다.
- 클러스터 이름을 입력합니다(예: kafka-test ).
다른 기본값을 승인한 다음 만들기 를 클릭합니다.
Kafka 인스턴스를 생성하는 프로세스는 완료하는 데 몇 분이 걸릴 수 있습니다.
상태가 준비되면 다음 단계를 계속합니다.
Kafka 주제를 생성합니다.
- Operators > 설치된 Operators 를 선택한 다음 Red Hat Integration - AMQ Streams 를 클릭합니다.
- Kafka 주제 에서 Kafka 주제 만들기 를 클릭합니다.
- 주제의 이름을 입력합니다(예: test-topic ).
- 다른 기본값을 승인한 다음 만들기 를 클릭합니다.
5.1.2. OpenShift 스트림을 사용하여 Kafka 설정
Red Hat OpenShift Streams for Apache Kafka는 Apache Kafka 실행 프로세스를 단순화하는 관리형 클라우드 서비스입니다.
Apache Kafka용 OpenShift Streams를 사용하려면 Red Hat 계정에 로그인해야 합니다.
예를 들면 다음과 같습니다.
5.1.2.1. OpenShift Streams용 OpenShift 클러스터 준비
Apache Kafka 관리 클라우드 서비스용 Red Hat OpenShift Streams를 사용하려면 다음 Operator 및 툴을 설치해야 합니다.
- RHOAS(OpenShift Application Services) CLI - 터미널에서 애플리케이션 서비스를 관리할 수 있습니다.
- Red Hat Integration - Camel K operator Installs and manages Camel K - OpenShift에서 기본적으로 실행되는 경량 통합 프레임워크.
- Camel K CLI 툴 - 모든 Camel K 기능에 액세스할 수 있습니다.
사전 요구 사항
- Apache Kafka 개념에 대해 잘 알고 있습니다.
- 올바른 액세스 수준, 프로젝트 생성 및 운영자 설치 기능, 로컬 시스템에 OpenShift 및 Apache Camel K CLI 설치 기능을 사용하여 OpenShift 4.6 이상 클러스터에 액세스할 수 있습니다.
-
명령줄에서 OpenShift 클러스터와 상호 작용할 수 있도록
oc
)를 설치했습니다.
절차
- 클러스터 관리자 계정으로 OpenShift 웹 콘솔에 로그인합니다.
Camel K 또는 Kamelets 애플리케이션에 대한 OpenShift 프로젝트를 생성합니다.
- 홈 > 프로젝트를 선택합니다.
- 프로젝트 만들기를 클릭합니다.
-
프로젝트 이름(예:
my-camel-k-kafka
)을 입력한 다음 생성을 클릭합니다.
- rhoas CLI 시작하기에 설명된 대로 RHOAS CLI를 다운로드하여 설치합니다.
- Camel K 설치에 설명된 대로 Camel K 및 Camel K CLI를 설치합니다. https://access.redhat.com/documentation/en-us/red_hat_integration/2023.q1/html-single/getting_started_with_camel_k#installing-camel-k
- Red Hat Integration - Camel K operator가 설치되었는지 확인하려면 Operator > 설치된 Operator 를 클릭합니다.
다음 단계
5.1.2.2. RHOAS를 사용하여 Kafka 주제 설정
Kafka는 주제 와 관련된 메시지를 구성합니다. 각 항목에는 이름이 있습니다. 애플리케이션은 항목에 메시지를 보내고 주제에서 메시지를 검색합니다. Kafka 주제에서는 Kafka 인스턴스의 데이터 스토리지에 대한 대상을 제공합니다. 데이터를 보내기 전에 Kafka 주제를 설정해야 합니다.
사전 요구 사항
- 올바른 액세스 수준, 프로젝트를 생성하고 운영자를 설치하는 기능, 로컬 시스템에 OpenShift 및 Camel K CLI를 설치하는 기능을 사용하여 OpenShift 클러스터에 액세스할 수 있습니다.
-
OpenShift 클러스터 준비에 설명된 대로 OpenShift CLI(
oc
) , Camel K CLI(kamel
) 및 RHOAS CLI(rhoas
) 툴을 설치했습니다. - OpenShift 클러스터 준비에 설명된 대로 Red Hat Integration - Camel K operator를 설치하셨습니다.
- Red Hat 클라우드 사이트에 로그인되어 있습니다.
절차
Apache Kafka용 Red Hat OpenShift Streams를 사용하여 Kafka 주제를 설정하려면 다음을 수행합니다.
- 명령줄에서 OpenShift 클러스터에 로그인합니다.
프로젝트를 엽니다. 예를 들면 다음과 같습니다.
oc 프로젝트 my-camel-k-kafka
Camel K Operator가 프로젝트에 설치되어 있는지 확인합니다.
oc get csv
결과는 Red Hat Camel K operator를 나열하고
성공
단계에 있음을 나타냅니다.Kafka 인스턴스를 준비하고 RHOAS에 연결합니다.
다음 명령을 사용하여 RHOAS CLI에 로그인합니다.
rhoas login
kafka-test 와 같이 kafka 인스턴스를 생성합니다.
rhoas kafka create kafka-test
Kafka 인스턴스를 생성하는 프로세스는 완료하는 데 몇 분이 걸릴 수 있습니다.
Kafka 인스턴스의 상태를 확인하려면 다음을 수행합니다.
rhoas 상태
웹 콘솔에서 상태를 볼 수도 있습니다.
https://cloud.redhat.com/application-services/streams/kafkas/
상태가 준비 되면 다음 단계를 계속합니다.
새 Kafka 주제를 생성합니다.
rhoas kafka topic create --name test-topic
Kafka 인스턴스(클러스터)를 Openshift Application Services 인스턴스와 연결합니다.
rhoas 클러스터 연결
인증 정보 토큰을 가져오려면 스크립트 지침을 따르십시오.
출력은 다음과 유사합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Token Secret "rh-cloud-services-accesstoken-cli" created successfully Service Account Secret "rh-cloud-services-service-account" created successfully KafkaConnection resource "kafka-test" has been created KafkaConnection successfully installed on your cluster.
Token Secret "rh-cloud-services-accesstoken-cli" created successfully Service Account Secret "rh-cloud-services-service-account" created successfully KafkaConnection resource "kafka-test" has been created KafkaConnection successfully installed on your cluster.
다음 단계
5.1.2.3. Kafka 인증 정보 가져오기
애플리케이션 또는 서비스를 Kafka 인스턴스에 연결하려면 먼저 다음 Kafka 인증 정보를 가져와야 합니다.
- 부트스트랩 URL을 가져옵니다.
- 자격 증명을 사용하여 서비스 계정을 만듭니다(사용자 이름 및 암호).
OpenShift Streams의 경우 인증 프로토콜은 SASL_SSL입니다.
사전 요구 사항
- Kafka 인스턴스를 생성했으며 상태가 준비되었습니다.
- Kafka 주제를 생성했습니다.
절차
Kafka 브로커 URL (Bootstrap URL)을 가져옵니다.
rhoas 상태
이 명령은 다음과 유사한 출력을 반환합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Kafka --------------------------------------------------------------- ID: 1ptdfZRHmLKwqW6A3YKM2MawgDh Name: my-kafka Status: ready Bootstrap URL: my-kafka--ptdfzrhmlkwqw-a-ykm-mawgdh.kafka.devshift.org:443
Kafka --------------------------------------------------------------- ID: 1ptdfZRHmLKwqW6A3YKM2MawgDh Name: my-kafka Status: ready Bootstrap URL: my-kafka--ptdfzrhmlkwqw-a-ykm-mawgdh.kafka.devshift.org:443
사용자 이름과 암호를 가져오려면 다음 구문을 사용하여 서비스 계정을 생성합니다.
rhoas service-account create --name "<account-name>" --file-format json
참고서비스 계정을 생성할 때 자격 증명을 저장할 파일 형식 및 위치를 선택할 수 있습니다. 자세한 내용은
rhoas service-account create --help
를 입력합니다.예를 들면 다음과 같습니다.
rhoas service-account create --name "my-service-acct" --file-format json
서비스 계정이 생성되어 JSON 파일에 저장됩니다.
서비스 계정 인증 정보를 확인하려면
credentials.json
파일을 확인합니다.cat credentials.json
이 명령은 다음과 유사한 출력을 반환합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow {"clientID":"srvc-acct-eb575691-b94a-41f1-ab97-50ade0cd1094", "password":"facf3df1-3c8d-4253-aa87-8c95ca5e1225"}
{"clientID":"srvc-acct-eb575691-b94a-41f1-ab97-50ade0cd1094", "password":"facf3df1-3c8d-4253-aa87-8c95ca5e1225"}
Kakfa 주제로 또는에게 메시지를 보내거나 받을 수 있는 권한을 부여합니다. 다음 명령을 사용합니다. 여기서
clientID
는credentials.json
파일에 제공된 값입니다(단계 3).Copy to Clipboard Copied! Toggle word wrap Toggle overflow rhoas kafka acl grant-access --producer --consumer --service-account $CLIENT_ID --topic test-topic --group all
rhoas kafka acl grant-access --producer --consumer --service-account $CLIENT_ID --topic test-topic --group all
예를 들면 다음과 같습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow rhoas kafka acl grant-access --producer --consumer --service-account srvc-acct-eb575691-b94a-41f1-ab97-50ade0cd1094 --topic test-topic --group all
rhoas kafka acl grant-access --producer --consumer --service-account srvc-acct-eb575691-b94a-41f1-ab97-50ade0cd1094 --topic test-topic --group all
5.1.2.4. SASL/Plain 인증 방법을 사용하여 시크릿 생성
가져온 인증 정보(Kafka 부트스트랩 URL, 서비스 계정 ID 및 서비스 계정 시크릿)를 사용하여 보안을 생성할 수 있습니다.
절차
application.properties
파일을 편집하고 Kafka 자격 증명을 추가합니다.application.properties 파일
Copy to Clipboard Copied! Toggle word wrap Toggle overflow camel.component.kafka.brokers = <YOUR-KAFKA-BOOTSTRAP-URL-HERE> camel.component.kafka.security-protocol = SASL_SSL camel.component.kafka.sasl-mechanism = PLAIN camel.component.kafka.sasl-jaas-config=org.apache.kafka.common.security.plain.PlainLoginModule required username='<YOUR-SERVICE-ACCOUNT-ID-HERE>' password='<YOUR-SERVICE-ACCOUNT-SECRET-HERE>'; consumer.topic=<TOPIC-NAME> producer.topic=<TOPIC-NAME>
camel.component.kafka.brokers = <YOUR-KAFKA-BOOTSTRAP-URL-HERE> camel.component.kafka.security-protocol = SASL_SSL camel.component.kafka.sasl-mechanism = PLAIN camel.component.kafka.sasl-jaas-config=org.apache.kafka.common.security.plain.PlainLoginModule required username='<YOUR-SERVICE-ACCOUNT-ID-HERE>' password='<YOUR-SERVICE-ACCOUNT-SECRET-HERE>'; consumer.topic=<TOPIC-NAME> producer.topic=<TOPIC-NAME>
다음 명령을 실행하여
application.properties
파일에 중요한 속성이 포함된 시크릿을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create secret generic kafka-props --from-file application.properties
oc create secret generic kafka-props --from-file application.properties
Camel K 통합을 실행할 때 이 시크릿을 사용합니다.
예를 들면 다음과 같습니다.
5.1.2.5. SASL/OAUTHBearer 인증 방법을 사용하여 시크릿 생성
가져온 인증 정보(Kafka 부트스트랩 URL, 서비스 계정 ID 및 서비스 계정 시크릿)를 사용하여 보안을 생성할 수 있습니다.
절차
application-oauth.properties
파일을 편집하고 Kafka 자격 증명을 추가합니다.application-oauth.properties 파일
Copy to Clipboard Copied! Toggle word wrap Toggle overflow camel.component.kafka.brokers = <YOUR-KAFKA-BOOTSTRAP-URL-HERE> camel.component.kafka.security-protocol = SASL_SSL camel.component.kafka.sasl-mechanism = OAUTHBEARER camel.component.kafka.sasl-jaas-config = org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required \ oauth.client.id='<YOUR-SERVICE-ACCOUNT-ID-HERE>' \ oauth.client.secret='<YOUR-SERVICE-ACCOUNT-SECRET-HERE>' \ oauth.token.endpoint.uri="https://identity.api.openshift.com/auth/realms/rhoas/protocol/openid-connect/token" ; camel.component.kafka.additional-properties[sasl.login.callback.handler.class]=io.strimzi.kafka.oauth.client.JaasClientOauthLoginCallbackHandler consumer.topic=<TOPIC-NAME> producer.topic=<TOPIC-NAME>
camel.component.kafka.brokers = <YOUR-KAFKA-BOOTSTRAP-URL-HERE> camel.component.kafka.security-protocol = SASL_SSL camel.component.kafka.sasl-mechanism = OAUTHBEARER camel.component.kafka.sasl-jaas-config = org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required \ oauth.client.id='<YOUR-SERVICE-ACCOUNT-ID-HERE>' \ oauth.client.secret='<YOUR-SERVICE-ACCOUNT-SECRET-HERE>' \ oauth.token.endpoint.uri="https://identity.api.openshift.com/auth/realms/rhoas/protocol/openid-connect/token" ; camel.component.kafka.additional-properties[sasl.login.callback.handler.class]=io.strimzi.kafka.oauth.client.JaasClientOauthLoginCallbackHandler consumer.topic=<TOPIC-NAME> producer.topic=<TOPIC-NAME>
다음 명령을 실행하여
application.properties
파일에 중요한 속성이 포함된 시크릿을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create secret generic kafka-props --from-file application-oauth.properties
oc create secret generic kafka-props --from-file application-oauth.properties
Camel K 통합을 실행할 때 이 시크릿을 사용합니다.
예를 들면 다음과 같습니다.