1.3. 연결 내의 데이터에 작업 적용
Kamelet과 이벤트 채널 간에 전달되는 데이터에 대해 작업을 수행하려면 Kamelet Binding 내의 중간 단계로 action Kamelets를 사용합니다. 예를 들어 작업 Kamelet을 사용하여 데이터를 직렬화 또는 역직렬화하거나, 데이터를 필터링하거나, 필드 또는 메시지 헤더를 삽입할 수 있습니다.
필드 필터링 또는 추가와 같은 조작 작업은 JSON 데이터(즉, Content-Type 헤더가 application/json)로 설정된 경우에만 작동합니다. 이벤트 데이터가 JSON 이외의 포맷(예: Avro 또는 Protocol Buffers)을 사용하는 경우, 조작 작업과 직렬화 단계(예: 조작 작업 및 serialize 단계) 전에 역직렬 단계(예: protobuf-deserialize-action 또는 avro-deserialize-action Kamelet)를 추가하여 데이터 형식을 변환해야 합니다. 이는 protobuf-serialize-action 또는 avro-serialize-action Kamelet을 참조합니다. 연결에서 데이터 형식을 변환하는 방법에 대한 자세한 내용은 Kamelets 데이터 변환을 참조하십시오.
action Kamelets는 다음과 같습니다.
1.3.1. Kamelet Binding에 작업 추가 링크 복사링크가 클립보드에 복사되었습니다!
작업 Kamelet을 구현하려면 Kamelet 바인딩 파일의 spec 섹션에서 소스 및 싱크 섹션 사이에 steps 섹션을 추가합니다.
사전 요구 사항
- Kamelet Binding의 소스 및 싱크 구성 요소에 설명된 대로 Kamelet Binding을 생성했습니다.
Kamelet Binding에 추가할 작업 Kamelet 및 action Kamelet의 필수 매개 변수를 알고 있습니다.
이 절차의 예제에서는
predicate-filter-actionKamelet에 대한 매개 변수는문자열유형, 표현식입니다. 이 매개 변수는 Coffee로만 Coffee로 필터링하는 JSON Path Expression을 제공합니다.predicate-filter-actionKamelet에는 Kamelet Binding에서 Builder trait 구성 속성을 설정해야 합니다.예제에는 이벤트 데이터 형식이 JSON이기 때문에 이 경우 선택 사항인 deserialize 및 serialize 작업도 포함됩니다.
절차
편집기에서
KameletBinding파일을 엽니다.예를 들어 다음과 같이
coffee-to-log.yaml파일의 내용은 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow source섹션 위에통합섹션을 추가하고predicate-filter-actionKamelet에서 요구하는 대로 다음 Builder trait configuration 속성을 제공합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow source및sink섹션 사이에steps섹션을 추가하고 작업 Kamelet을 정의합니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 변경 사항을 저장하십시오.
oc apply명령을 사용하여KameletBinding리소스를 업데이트합니다. 예를 들면 다음과 같습니다.oc apply -f coffee-to-log.yamlCamel K Operator는 업데이트된
KameletBinding리소스를 기반으로 생성하는 CamelK 통합을 다시 생성하고 실행합니다.Kamelet Binding의 상태를 보려면 다음을 수행합니다.
oc get kameletbindings해당 통합의 상태를 확인하려면 다음을 수행합니다.
oc get integrations통합 로그 파일 출력을 보려면 다음을 수행합니다.
kamel logs <integration-name>예를 들어 통합 이름이
coffee-to-log인 경우 다음을 수행합니다.Kamel 로그 coffee-to-log통합을 중지하려면 Kamelet Binding을 삭제합니다.
oc delete kameletbindings/<kameletbinding-name>예를 들면 다음과 같습니다.
oc delete kameletbindings/coffee-to-log
1.3.2. 작업 kamelets 링크 복사링크가 클립보드에 복사되었습니다!
1.3.2.1. Kamelets를 필터링하는 데이터 링크 복사링크가 클립보드에 복사되었습니다!
예를 들어 민감한 데이터가 유출되지 않거나 불필요한 네트워킹 요금이 발생하지 않도록 소스와 싱크 구성 요소 간에 전달되는 데이터를 필터링할 수 있습니다.
다음 기준에 따라 데이터를 필터링할 수 있습니다.
-
Kafka 주제 이름 - Topic Name Matches Filter Action Kamelet (
topic-name-matches-filter-action)을 구성하여 지정된 Java 정규식과 일치하는 이름으로 Kafka 항목에 대한 이벤트를 필터링합니다. 자세한 내용은 특정 Kafka 항목에 대한 이벤트 데이터 필터링을 참조하십시오. -
header key - Header Filter Action Kamelet (
has-header-filter-action)을 구성하여 지정된 메시지 헤더가 있는 이벤트를 필터링합니다. -
null 값 - Tombstone Filter Action Kamelet (
is-tombstone-filter-action)을 구성하여 Tombstone Filter Action(필터가 null 페이로드로 이벤트)을 필터링합니다. 서술자 - Predicate Filter Action Kamelet(
predicate-filter-action)을 구성하여 지정된 JSON 경로 표현식을 기반으로 이벤트를 필터링합니다.predicate-filter-actionKamelet을 사용하려면 Kamelet Binding에서 다음 Builder trait 구성 속성을 설정해야 합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Kamelets를 필터링하는 데이터는 JSON 데이터(즉, Content-Type 헤더가 application/json으로 설정된 경우)와 함께 작동합니다. 이벤트 데이터가 JSON 이외의 포맷을 사용하는 경우, 이후 조작 동작 및 serialize 단계(예: protobuf-serialize-action 또는 avro-deserialize-action)를 추가하기 전에 역직렬 단계(예: protobuf-de )를 추가하여 데이터 형식을 변환해야 합니다. 연결에서 데이터 형식을 변환하는 방법에 대한 자세한 내용은 Kamelets 데이터 변환을 참조하십시오.
serialize-action
1.3.2.2. 데이터 변환 Kamelets 링크 복사링크가 클립보드에 복사되었습니다!
다음 데이터 변환 Kamelets를 사용하면 소스 및 싱크 구성 요소 간에 전달되는 데이터의 형식을 직렬화 및 역직렬화할 수 있습니다. 데이터 변환은 이벤트 데이터의 페이로드에 적용됩니다(키 또는 헤더가 아님).
Avro - Apache 10.0.0.1에 대한 데이터 직렬화 및 데이터 교환 서비스를 제공하는 오픈 소스 프로젝트입니다.
-
Avro Deserialize Action Kamelet (
avro-deserialize-action) -
Avro Serialize Action Kamelet (
avro-serialize-action)
-
Avro Deserialize Action Kamelet (
프로토콜 버퍼 - 내부적으로 이를 사용하는 Google이 내부 네트워크 서비스와 통신할 수 있도록 실험한 고성능의 컴팩트한 바이너리 전선 형식입니다.
-
Protobuf Deserialize Action Kamelet (
protobuf-deserialize-action) -
protobuf Serialize Action Kamelet (
protobuf-serialize-action)
-
Protobuf Deserialize Action Kamelet (
JSON (JavaScript Object Notation) - JavaScript 프로그래밍 언어의 하위 집합을 기반으로 하는 데이터 교환 형식입니다. JSON은 완전히 독립적 인 텍스트 형식입니다.
-
JSON Deserialize Action Kamelet (
json-deserialize-action) -
JSON Serialize Action Kamelet (
json-serialize-action)
-
JSON Deserialize Action Kamelet (
Avro 및 Protobuf serialize/deserialize Kamelets에서 스키마(단일 줄로 JSON 형식을 사용하여)를 지정해야 합니다. JSON serialize/deserialize Kamelets의 경우 이를 수행할 필요가 없습니다.
1.3.2.3. 데이터 변환 Kamelets 링크 복사링크가 클립보드에 복사되었습니다!
다음 데이터 변환 Kamelets를 사용하면 소스 및 싱크 구성 요소 간에 전달되는 데이터에 대해 간단한 조작을 수행할 수 있습니다.
-
extract Field -
extract-field-actionKamelet을 사용하여 데이터 본문에서 필드를 가져오고 전체 데이터 본문을 추출된 필드로 교체합니다. -
Hoist Field -
Hoist-field-actionKamelet을 사용하여 데이터 본문을 단일 필드로 래핑합니다. -
insert Header -
insert-header-actionKamelet을 사용하여 정적 데이터 또는 레코드 메타데이터를 사용하여 헤더 필드를 추가합니다. -
insert Field -
insert-field-actionKamelet을 사용하여 정적 데이터 또는 레코드 메타데이터를 사용하여 필드 값을 추가합니다. mask 필드 -
mask-field-actionKamelet을 사용하여 필드 값을 필드 유형(예: 0 또는 빈 문자열)에 대해 유효한 null 값으로 바꾸거나 지정된 대체값(개체는 비어 있지 않은 문자열 또는 숫자 값이어야 함)으로 바꿉니다.예를 들어 Kafka로 전송하기 위해 관련 데이터베이스에서 데이터를 캡처하고 데이터가 보호되는 (Payment / PII) 정보가 포함된 경우 Kafka 클러스터가 아직 인증되지 않은 경우 보호되는 정보를 마스킹해야 합니다.
-
Replace Field -
replace-field-actionKamelet을 사용하여 필드를 필터링하거나 이름을 변경합니다. 이름 변경, 비활성화(포함) 또는 활성화(포함)할 필드를 지정할 수 있습니다. -
Value To Key - (for Kafka)
value-to-key-actionKamelet을 사용하여 레코드 키를 페이로드의 필드 하위 집합에서 형성된 새 키로 교체합니다. 데이터를 Kafka에 쓰기 전에 이벤트 정보를 기반으로 하는 값으로 이벤트 키를 설정할 수 있습니다. 예를 들어 데이터베이스 테이블에서 레코드를 읽을 때 고객 ID를 기반으로 Kafka의 레코드를 분할할 수 있습니다.