1.2. 소스 및 싱크 연결
두 개 이상의 구성 요소(외부 애플리케이션 또는 서비스)를 연결하려면 Kamelets를 사용합니다. 각 Kamelet은 기본적으로 구성 속성이 있는 경로 템플릿입니다. 데이터를 가져올 구성 요소(소스)와 데이터를(스케크)로 보낼 구성 요소를 알아야 합니다. figure 1.1에 설명된 대로 Kamelet Binding에 Kamelet Binding에 Kamelets를 추가하여 소스 및 싱크 구성 요소를 연결합니다.
그림 1.1: 싱크에 대한 바인딩 소스
다음은 Kamelet Binding에서 Kamelets를 사용하는 단계의 개요입니다.
- Camel K Operator를 설치합니다. 이 카탈로그에는 OpenShift 프로젝트의 리소스로 Kamelets 카탈로그가 포함되어 있습니다.
- Kamelet 바인딩을 생성합니다. Kamelet Binding 내에서 연결할 서비스 또는 애플리케이션을 결정합니다.
- Kamelet Catalog를 보고 사용하려는 소스 및 싱크 구성 요소의 Kamelets를 찾습니다.
- Kamelet Binding에 포함할 각 Kamelet에 대해 설정해야 하는 구성 속성을 확인합니다.
- Kamelet Binding 코드에서 각 Kamelet에 대한 참조를 추가하고 필요한 속성을 구성합니다.
- OpenShift 프로젝트의 리소스로 Kamelet Binding을 적용합니다.
Camel K Operator는 Kamelet Binding을 사용하여 통합을 생성하고 실행합니다.
1.2.1. Camel K 설치 링크 복사링크가 클립보드에 복사되었습니다!
OperatorHub에서 OpenShift 클러스터에 Red Hat Integration - Camel K Operator를 설치할 수 있습니다. OperatorHub는 OpenShift Container Platform 웹 콘솔에서 사용할 수 있으며 클러스터 관리자가 Operator를 검색하고 설치할 수 있는 인터페이스를 제공합니다.
Camel K Operator를 설치한 후에는 모든 Camel K 기능에 대한 명령줄 액세스용 Camel K CLI 툴을 설치할 수 있습니다.
사전 요구 사항
올바른 액세스 수준, 프로젝트를 생성하고 Operator를 설치하는 기능, 로컬 시스템에 CLI 툴을 설치하는 기능을 사용하여 OpenShift 4.6 이상 클러스터에 액세스할 수 있습니다.
참고You do not need to create a pull secret when installing Camel K from the OpenShift OperatorHub. The Camel K Operator automatically reuses the OpenShift cluster-level authentication to pull the Camel K image from `registry.redhat.io`.
You do not need to create a pull secret when installing Camel K from the OpenShift OperatorHub. The Camel K Operator automatically reuses the OpenShift cluster-level authentication to pull the Camel K image from `registry.redhat.io`.Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
명령줄에서 OpenShift 클러스터와 상호 작용할 수 있도록
oc)를 설치했습니다. OpenShift CLI 설치 방법에 대한 자세한 내용은 OpenShift CLI 설치를 참조하십시오.
절차
- OpenShift Container Platform 웹 콘솔에서 클러스터 관리자 권한이 있는 계정을 사용하여 로그인합니다.
새 OpenShift 프로젝트를 생성합니다.
- 왼쪽 탐색 메뉴에서 홈 > 프로젝트 > 프로젝트 만들기를 클릭합니다.
-
프로젝트 이름(예:
my-camel-k-project)을 입력하고 생성을 클릭합니다.
- 왼쪽 탐색 메뉴에서 Operator > OperatorHub 를 클릭합니다.
-
키워드로 필터링 텍스트 상자에
Camel K를 입력한 다음 Red Hat Integration - Camel K Operator 카드를 클릭합니다. - Operator에 대한 정보를 읽은 다음 설치를 클릭합니다. Operator 설치 페이지가 열립니다.
다음 구독 설정을 선택합니다.
- 업데이트 채널 > 최신
다음 두 가지 옵션 중에서 선택합니다.
- 설치 모드 > 클러스터의 특정 네임스페이스 > my-camel-k-project
- 설치 모드 > 클러스터의 모든 네임스페이스(기본값) > Openshift Operator
참고If you do not choose among the above two options, the system by default chooses a global namespace on the cluster then leading to openshift operator.
If you do not choose among the above two options, the system by default chooses a global namespace on the cluster then leading to openshift operator.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 승인 전략 > 자동
참고설치 모드 > 클러스터의 모든 네임스페이스 및 승인 전략 > 수동 설정도 사용 가능합니다.
- Install 을 클릭하고 Camel K Operator를 사용할 준비가 될 때까지 잠시 기다립니다.
Camel K CLI 툴을 다운로드하여 설치합니다.
- OpenShift 웹 콘솔 상단에 있는 Help 메뉴(?) 에서 명령줄 툴 을 선택합니다.
- kamel - Red Hat Integration - Camel K - Command Line Interface 섹션까지 아래로 스크롤합니다.
- 링크를 클릭하여 로컬 운영 체제(Linux, Mac, Windows)에 대한 바이너리를 다운로드합니다.
- 시스템 경로에 CLI의 압축을 풀고 설치합니다.
Kamel K CLI에 액세스할 수 있는지 확인하려면 명령 창을 열고 다음을 입력합니다.
kamel --help이 명령은 Camel K CLI 명령에 대한 정보를 보여줍니다.
다음 단계
(선택 사항) Camel K 리소스 제한 지정
1.2.2. Kamelet 카탈로그 보기 링크 복사링크가 클립보드에 복사되었습니다!
Camel K Operator를 설치하면 Camel K 통합에서 사용할 수 있는 Kamelets 카탈로그가 포함됩니다.
사전 요구 사항
Camel K 설치에 설명된 대로 작업 네임스페이스 또는 클러스터 전체에 Camel K Operator를 설치했습니다.
절차
Camel K Operator로 설치된 Kamelets 목록을 보려면 다음을 수행합니다.
- 터미널 창에서 OpenShift 클러스터에 로그인합니다.
사용 가능한 Kamelets 목록을 보려면 Camel K Operator가 설치된 방법(특정 네임스페이스 또는 클러스터 모드)에 따라 다릅니다.
Camel K Operator가 cluster-mode에 설치된 경우 이 명령을 사용하여 사용 가능한 Kamelets를 확인합니다.
oc get kamelet -n openshift-operatorsCamel K Operator가 특정 네임스페이스에 설치된 경우:
Camel K Operator가 설치된 프로젝트를 엽니다.
oc project <camelk-project>예를 들어 Camel K Operator가
my-camel-k-project프로젝트에 설치된 경우 다음을 수행합니다.oc 프로젝트 my-camel-k-project다음 명령을 실행합니다.
oc get kamelets
Red Hat에서 지원하는 Kamelets 목록은 Red Hat Integration Release Notes 를 참조하십시오.
자세한 내용은
1.2.2.1. Kamelet 카탈로그에 사용자 정의 Kamelet 추가 링크 복사링크가 클립보드에 복사되었습니다!
필요에 맞는 카탈로그에 Kamelet이 표시되지 않는 경우 Camel DSL 개발자는 Apache Camel Kamelets Developers Guide (community documentation)에 설명된 대로 사용자 정의 Kamelet을 생성할 수 있습니다. Kamelet은 YAML 형식으로 코딩되며, 규칙에 따라 .kamelet.yaml 파일 확장자가 있습니다.
사전 요구 사항
- Camel DSL 개발자가 사용자 정의 Kamelet 파일을 제공했습니다.
- Camel K Operator가 설치된 OpenShift 네임스페이스에서 Kamelet 이름을 고유해야 합니다.
절차
사용자 정의 Kamelet을 OpenShift 네임스페이스에서 리소스로 사용할 수 있도록 하려면 다음을 수행합니다.
-
Kamelet
YAML파일(예:custom-sink.kamelet.yaml)을 로컬 폴더에 다운로드합니다. - OpenShift 클러스터에 로그인합니다.
터미널 창에서 Camel K Operator가 설치된 프로젝트를 엽니다(예:
my-camel-k-project):oc 프로젝트 my-camel-k-projectoc apply명령을 실행하여 사용자 정의 Kamelet을 리소스로 네임스페이스에 추가합니다.oc apply -f <custom-kamelet-filename>예를 들어 다음 명령을 사용하여 현재 디렉터리에 있는
custom-sink.kamelet.yaml파일을 추가합니다.oc apply -f custom-sink.kamelet.yamlKamelet을 리소스로 사용할 수 있는지 확인하려면 다음 명령을 사용하여 현재 네임스페이스에서 모든 Kamelets의 알파벳순 목록을 확인한 다음 사용자 정의 Kamelet을 찾습니다.
oc get kamelets
1.2.2.2. Kamelet의 설정 매개변수 확인 링크 복사링크가 클립보드에 복사되었습니다!
Kamelet Binding에서 Kamelet에 대한 참조를 추가하면 Kamelet의 이름을 지정하고 Kamelet의 매개변수를 구성합니다.
사전 요구 사항
- 작업 네임스페이스 또는 클러스터 전체에 Camel K Operator를 설치했습니다.
절차
Kamelet의 이름과 매개변수를 확인하려면 다음을 수행하십시오.
- 터미널 창에서 OpenShift 클러스터에 로그인합니다.
Kamelet의 YAML 파일을 엽니다.
oc describe kamelets/<kamelet-name>예를 들어 Camel K Operator가 현재 네임스페이스에 설치된 경우
ftp-sourceKamelet의 코드를 보려면 다음 명령을 사용합니다.oc describe kamelets/ftp-sourceCamel K Operator가 클러스터 모드에 설치된 경우 다음 명령을 사용하십시오.
oc describe -n openshift-operators kamelets/ftp-sourceYAML 파일에서
spec.definition섹션(JSON-schema 형식으로 작성된)까지 아래로 스크롤하여 Kamelet의 속성 목록을 확인합니다. 섹션 마지막에 required 필드에는 Kamelet을 참조할 때 구성해야 하는 속성이 나열됩니다.예를 들어 다음 코드는
ftp-sourceKamelet의spec.definition섹션에서 발췌한 것입니다. 이 섹션에서는 모든 Kamelet의 구성 속성에 대한 세부 정보를 제공합니다. 이 Kamelet의 필수 속성은connectionHost,connectionPort,사용자이름 ,암호,directoryName입니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
자세한 내용은
1.2.3. Kamelet Binding에서 소스 및 싱크 구성 요소 연결 링크 복사링크가 클립보드에 복사되었습니다!
Kamelet Binding 내에서 소스 및 싱크 구성 요소를 연결합니다.
이 절차의 예제에서는 figure 1.2에 표시된 대로 다음과 같은 Kamelets를 사용합니다.
-
예제 소스 Kamelet 은
coffee-source라고 합니다. 이 간단한 Kamelet은 웹 사이트 카탈로그에서 커피 유형에 대한 무작위로 생성된 데이터를 검색합니다. 1개의 매개변수(Period-정수값)가 있으며, 이 매개변수는 Coffee 데이터를 검색하는 빈도(초)를 결정합니다. 기본값은 1000초이므로 매개변수가 필요하지 않습니다. -
싱크 Kamelet의 예는
log-sink라고 합니다. 데이터를 검색하고 이를 로그 파일로 출력합니다.log-sinkKamelet은 Kamelet Catalog에서 제공됩니다.
그림 1.2: 예 Kamelet 바인딩
사전 요구 사항
- Camel K 통합을 생성하고 편집하는 방법을 알고 있습니다.
- Red Hat Integration - Camel K operator는 OpenShift 네임스페이스 또는 클러스터에 설치되어 있으며 Camel K 설치에 설명된 대로 Red Hat Integration Camel K CLI 툴을 다운로드했습니다. https://access.redhat.com/documentation/en-us/red_hat_integration/2023.q2/html-single/getting_started_with_camel_k#installing-camel-k
- Camel K 통합과 필수 인스턴스 매개 변수에 추가할 Kamelets를 알고 있습니다.
사용하려는 Kamelets는 Kamelet Catalog에서 사용할 수 있습니다.
이 예제에서는
log-sinkKamelet이 Kamelet Catalog에 제공됩니다. 이 예제에서 소스 Kamelet을 사용하려면복사하고 저장한 다음 다음 명령을 실행하여 Kamelet Catalog에 추가합니다.coffee-source.kamelet.yaml 이라는 로컬 파일에offee-source 코드를oc apply -f coffee-source.kamelet.yaml
절차
- OpenShift 클러스터에 로그인합니다.
Camel K Operator가 설치된 작업 프로젝트를 엽니다. Camel K Operator를 cluster-mode에 설치한 경우 클러스터의 모든 프로젝트에서 사용할 수 있습니다.
예를 들어
my-camel-k-project라는 기존 프로젝트를 열기 위해 다음을 수행합니다.oc 프로젝트 my-camel-k-project다음 옵션 중 하나를 사용하여 새 Kamelet 바인딩을 생성합니다.
-
kamel bind명령을 사용하여 Kamelet Binding을 생성하고 실행합니다(이 옵션은 명령줄 정의에 구성된 간단한 Kamelet Bindings에 유용합니다). YAML 파일을 생성하여 Kamelet Binding을 정의한 다음
oc apply명령을 사용하여 실행합니다(이 옵션은 Kamelet Binding 구성이 더 복잡한 경우 유용합니다).kamel bind 명령을 사용하여 새 Kamelet 바인딩 생성
다음
kamel 바인딩구문을 사용하여 소스 및 싱크 Kamelets 및 구성 매개변수를 지정합니다.kamel bind <kamelet-source> -p “<property>=<property-value>” <kamelet-sink> -p “<property>=<property-value>”
kamel bind <kamelet-source> -p “<property>=<property-value>” <kamelet-sink> -p “<property>=<property-value>”Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예를 들면 다음과 같습니다.
kamel bind coffee-source -p “source.period=5000” log-sink -p "sink.showStreams=true"
kamel bind coffee-source -p “source.period=5000” log-sink -p "sink.showStreams=true"Copy to Clipboard Copied! Toggle word wrap Toggle overflow Camel K Operator는
KameletBinding리소스를 생성하고 해당 Camel K 통합을 실행합니다.YAML 파일을 사용하여 새 Kamelet 바인딩 생성
선택한 편집기에서 다음 구조를 사용하여 YAML 파일을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Kamelet Binding의 이름을 추가합니다.
이 예제에서 바인딩이 Coffee-
source Kamelet을-to-log 입니다.log-sinkKamelet에 연결하므로 이름은coffeeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 소스 Kamelet(예:
coffee-source)을 지정하고 Kamelet에 대한 모든 매개변수를 구성합니다.참고: 이 예에서 매개변수는 Kamelet Binding의 YAML 파일에 정의되어 있습니다. 또는 Kamelet 인스턴스 매개변수 구성에 설명된 대로 속성 파일, ConfigMap 또는 시크릿에서 Kamelet의 매개변수를 구성할 수 있습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 싱크 Kamelet(예:
log-sink)을 지정하고 Kamelet에 대한 모든 매개변수를 구성합니다. 메시지 본문을 표시하려면log-sinkKamelet에 선택적showStreams매개변수를 사용합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
YAML 파일(예:
coffee-to-log.yaml)을 저장합니다. KameletBinding을 OpenShift 네임스페이스에 리소스로 추가합니다.oc apply -f <kamelet-binding>.yaml예를 들면 다음과 같습니다.
oc apply -f coffee-to-log.yamlCamel K Operator는
KameletBinding리소스를 사용하여 Camel K 통합을 생성하고 실행합니다.
-
Kamelet Binding의 상태를 보려면 다음을 수행합니다.
oc get kameletbindings-
해당 통합의 상태를 확인하려면
oc get integrations 출력을 보려면 다음을 수행합니다.
명령줄에서 로그를 보려면 터미널 창을 열고 다음 명령을 입력합니다.
kamel log <integration-name>예를 들어 통합 이름이
coffee-to-log인 경우 다음 명령을 사용합니다.kamel log coffee-to-logOpenShift 웹 콘솔에서 로그를 보려면 다음을 수행합니다.
- 워크로드 > Pod 를 선택합니다.
Camel K 통합의 포드 이름을 클릭한 다음 로그를 클릭합니다.
다음 예와 유사한 Coffee 이벤트 목록이 표시됩니다.
INFO [log-sink-E80C5C904418150-0000000000000001] (Camel (camel-1) thread #0 - timer://tick) {"id":7259,"uid":"a4ecb7c2-05b8-4a49-b0d2-d1e8db5bc5e2","blend_name":"Postmodern Symphony","origin":"Huila, Colombia","variety":"Kona","notes":"delicate, chewy, black currant, red apple, star fruit","intensifier":"balanced"}INFO [log-sink-E80C5C904418150-0000000000000001] (Camel (camel-1) thread #0 - timer://tick) {"id":7259,"uid":"a4ecb7c2-05b8-4a49-b0d2-d1e8db5bc5e2","blend_name":"Postmodern Symphony","origin":"Huila, Colombia","variety":"Kona","notes":"delicate, chewy, black currant, red apple, star fruit","intensifier":"balanced"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
통합을 중지하려면 Kamelet Binding을 삭제합니다.
oc delete kameletbindings/<kameletbinding-name>예를 들면 다음과 같습니다.
oc delete kameletbindings/coffee-to-log
다음 단계
선택적으로 다음을 수행합니다.
- Kame let Binding에 작업 추가에 설명된 대로 작업 카메릿을 중간 단계로 추가합니다.
- Kamelet Binding에 오류 처리기 정책 추가에 설명된 대로 Kamelet Binding에 오류를 추가합니다.
1.2.4. Kamelet 인스턴스 매개변수 구성 링크 복사링크가 클립보드에 복사되었습니다!
Kamelet을 참조할 때 Kamelet의 인스턴스 매개변수를 정의하기 위한 다음 옵션이 있습니다.
Kamelet Binding에서 직접 Kamelet URI를 지정합니다. 다음 예에서 Telegram BotFather에서 제공하는 봇 권한 부여 토큰은
123456입니다.from("kamelet:telegram-source?authorizationToken=123456")다음 형식을 사용하여 Kamelet 속성( URI에 값을 제공할 필요가 없음)을 전역적으로 구성합니다.
"camel.kamelet.<kamelet-name>.<property-name>=<value>”Camel K를 사용하여 통합 개발 및 관리의 Camel K 통합 구성 장에 설명된 대로 다음을 통해 Kamelet 매개변수를 구성할 수 있습니다.
- 속성으로 정의
- 속성 파일에서 정의
- OpenShift ConfigMap 또는 시크릿에서 정의
자세한 내용은
1.2.5. 이벤트 채널에 연결 링크 복사링크가 클립보드에 복사되었습니다!
Kamelets의 가장 일반적인 사용 사례는 Kamelet Binding을 사용하여 Kafka 주제 또는 Knative 대상(채널 또는 브로커) 이벤트 채널에 연결하는 것입니다. 데이터 소스와 싱크는 서로 독립적이고 "알지 않음"이라는 이점이 있습니다. 이러한 분리를 통해 비즈니스 시나리오의 구성 요소를 별도로 개발하고 관리할 수 있습니다. 비즈니스 시나리오의 일부로 여러 데이터 싱크와 소스가 있는 경우 다양한 구성 요소를 분리하는 것이 더 중요합니다. 예를 들어 이벤트 싱크를 종료해야 하는 경우 이벤트 소스에 영향을 미치지 않습니다. 다른 싱크에서 동일한 소스를 사용하는 경우 영향을 받지 않습니다.
그림 1.3은 소스 및 싱크 카메릿을 이벤트 채널에 연결하는 흐름을 보여줍니다.
그림 1.3: 소스 및 싱크 카메릿을 이벤트 채널에 연결
Apache Kafka 스트림 처리 프레임워크를 사용하는 경우 Kafka 항목에 연결하는 방법에 대한 자세한 내용은 Kamelets를 사용하여 Kafka에 연결을 참조하십시오.
Knative 서버리스 프레임워크를 사용하는 경우 Knative 대상(채널 또는 브로커)에 연결하는 방법에 대한 자세한 내용은 Kamelets를 사용하여 Knative에 연결을 참조하십시오.
1.2.6. 명시적 Camel URI에 연결 링크 복사링크가 클립보드에 복사되었습니다!
Kamelet이 이벤트를 보내거나 명시적 Camel URI로부터 이벤트를 수신하는 Kamelet Binding을 생성할 수 있습니다. 일반적으로 소스 Kamelet을 이벤트를 수신할 수 있는 URI에 바인딩합니다(즉, Kamelet Binding에서 URI를 싱크로 지정). 이벤트를 수신하는 Camel URI의 예로는 HTTP 또는 HTTPS 끝점이 있습니다.
또한 URI를 Kamelet Binding의 소스로 지정할 수 있지만 일반적인 것은 아닙니다. 이벤트를 전송하는 Camel URI의 예로는 타이머, 메일 또는 FTP 끝점이 있습니다.
Kamelet을 Camel URI에 연결하려면 Kamelet 바인딩의 소스 및 싱크 구성 요소 연결 단계에 따라 Kamelet 대신 sink.uri 필드로 명시적으로 Camel URI를 지정합니다.
다음 예에서 싱크의 URI는 다음 URI(https://mycompany.com/event-service)입니다.