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.6.2. Camel K 기능 특성
6.2.1. 상태 추적
상태 특성은 통합 컨테이너에서 상태 프로브를 구성합니다.
기본적으로 비활성화되어 있습니다.
이 특성은 Kubernetes, Knative, OpenShift 에서 사용할 수 있습니다.
6.2.1.1. 설정
특성 속성은 다음 CLI를 사용하여 통합을 실행할 때 지정됩니다.
kamel run --trait health.[key]=[value] --trait health.[key2]=[value2] integration.java
$ kamel run --trait health.[key]=[value] --trait health.[key2]=[value2] integration.java
다음 구성 옵션을 사용할 수 있습니다.
속성 | 유형 | 설명 |
---|---|---|
|
| 특성을 활성화하거나 비활성화하는 데 사용할 수 있습니다. 모든 특성은 이 공통 속성을 공유합니다. |
|
|
통합 컨테이너(기본값 |
|
|
활성 프로브에 연결할 때 사용할 스키마(기본 |
|
| 활성 프로브가 시작되기 전에 컨테이너를 시작한 후의 시간(초)입니다. |
|
| 활성 프로브가 시간 초과된 시간(초)입니다. |
|
| 활성 프로브를 수행하는 빈도입니다. |
|
| 활성 프로브가 실패한 후 성공으로 간주되는 최소 연속 성공입니다. |
|
| 성공 후 활성 프로브가 실패한 것으로 간주되는 최소 연속 실패입니다. |
|
|
통합 컨테이너에 대한 준비 상태 프로브(기본값 |
|
|
준비 상태 프로브에 연결할 때 사용할 스키마(기본 |
|
| 준비 상태 프로브가 시작되기 전에 컨테이너를 시작한 후 시간(초)입니다. |
|
| 준비 상태 프로브가 시간 초과된 시간(초)입니다. |
|
| 준비 상태 프로브를 수행하는 빈도입니다. |
|
| 실패한 후 준비 상태 프로브가 성공으로 간주되는 최소 연속 성공입니다. |
|
| 성공 후 준비 상태 프로브가 실패한 것으로 간주되는 최소 연속 실패입니다. |
|
|
통합 컨테이너에 대한 시작 프로브(기본값 |
|
|
시작 프로브에 연결할 때 사용할 스키마(기본 |
|
| 시작 프로브가 시작되기 전에 컨테이너를 시작한 후의 시간(초)입니다. |
|
| 시작 프로브가 시간 초과된 시간(초)입니다. |
|
| 시작 프로브를 수행하는 빈도입니다. |
|
| 실패한 후 시작 프로브가 성공으로 간주되는 최소 연속 성공입니다. |
|
| 성공 후 시작 프로브가 실패한 것으로 간주되는 최소 연속 실패입니다. |
6.2.2. KnativeTrackit
Knative 특성은 Knative 리소스의 주소를 자동으로 검색하고 실행 중인 통합에 삽입합니다.
전체 Knative 구성은 CAMEL_KNATIVE_CONFIGURATION에 JSON 형식으로 삽입됩니다. 그러면 Camel Knative 구성 요소가 전체 구성을 사용하여 경로를 구성합니다.
이 특성은 Knative 프로필이 활성화되면 기본적으로 활성화됩니다.
이 특성은 Knative 프로필에서 사용할 수 있습니다.
6.2.2.1. 설정
CLI와의 통합을 실행할 때 특성 속성을 지정할 수 있습니다.
kamel run --trait knative.[key]=[value] --trait knative.[key2]=[value2] integration.java
$ kamel run --trait knative.[key]=[value] --trait knative.[key2]=[value2] integration.java
다음 구성 옵션을 사용할 수 있습니다.
속성 | 유형 | 설명 |
---|---|---|
|
| 특성을 활성화하거나 비활성화하는 데 사용할 수 있습니다. 모든 특성은 이 공통 속성을 공유합니다. |
|
| Knative 전체 구성을 JSON 형식으로 삽입하는 데 사용할 수 있습니다. |
|
| 통합 경로 소스로 사용되는 채널 목록입니다. 간단한 채널 이름 또는 전체 Camel URI를 포함할 수 있습니다. |
|
| 통합 경로의 대상으로 사용되는 채널 목록입니다. 간단한 채널 이름 또는 전체 Camel URI를 포함할 수 있습니다. |
|
| 통합 경로 소스로 사용되는 채널 목록입니다. |
|
| 통합 경로의 대상으로 사용되는 끝점 목록입니다. 간단한 엔드 포인트 이름 또는 전체 Camel URI를 포함할 수 있습니다. |
|
| 통합할 이벤트 유형 목록입니다. "기본값"과 다른 특정 브로커를 사용하기 위해 간단한 이벤트 유형 또는 전체 Camel URI를 포함할 수 있습니다. |
|
| 통합에서 생성할 이벤트 유형 목록입니다. 간단한 이벤트 유형 또는 전체 Camel URI를 포함할 수 있습니다(특정 브로커 사용). |
|
| "ce-knativehistory" 헤더를 기반으로 이벤트 필터링을 활성화합니다. 이 헤더는 최신 버전의 Knative에서 제거되었으므로 기본적으로 필터링이 비활성화됩니다. |
|
| Knative SinkBinding 리소스를 통해 싱크에 통합을 바인딩할 수 있습니다. 통합이 단일 싱크를 대상으로 할 때 사용할 수 있습니다. 통합이 단일 싱크를 대상으로 할 때 기본적으로 활성화됩니다( Knative 소스가 통합한 경우를 제외하고). |
|
| 모든 특성의 자동 검색을 활성화합니다. |
6.2.3. Knative 서비스 bzipit
Knative 서비스 특성을 사용하면 표준 Kubernetes Deployment 대신 Knative 서비스로 통합을 실행할 때 옵션을 구성할 수 있습니다.
Knative Services로 통합을 실행하면 자동 확장(및 축소) 기능이 추가되지만 해당 기능은 경로가 HTTP 끝점 소비자를 사용하는 경우에만 의미가 있습니다.
이 특성은 Knative 프로필에서 사용할 수 있습니다.
6.2.3.1. 설정
CLI와의 통합을 실행할 때 특성 속성을 지정할 수 있습니다.
kamel run --trait knative-service.[key]=[value] --trait knative-service.[key2]=[value2] Integration.java
$ kamel run --trait knative-service.[key]=[value] --trait knative-service.[key2]=[value2] Integration.java
다음 구성 옵션을 사용할 수 있습니다.
속성 | 유형 | 설명 |
---|---|---|
|
| 특성을 활성화하거나 비활성화하는 데 사용할 수 있습니다. 모든 특성은 이 공통 속성을 공유합니다. |
|
| 주석이 경로에 추가됩니다. 이는 knative 서비스 관련 주석을 설정하는 데 사용할 수 있습니다. 자세한 내용은 Route Specific Annotations 를 참조하십시오. CLI 사용 예: -t "knative-service.annotations.'haproxy.router.openshift.io/balance'=roundrobin" |
|
|
Knative 자동 스케일링 클래스 속성(예: 자세한 내용은 Knative 설명서를 참조하십시오. |
|
|
Knative 자동 스케일링 메트릭 속성(예: 자세한 내용은 Knative 설명서를 참조하십시오. |
|
| 각 Pod에 대해 허용된 동시성 수준 또는 CPU 백분율(자동화 지표에 따라 다름)을 설정합니다. 자세한 내용은 Knative 설명서를 참조하십시오. |
|
| 통합을 위해 언제든지 실행해야 하는 최소 Pod 수입니다. 이는 기본적으로 0 입니다. 즉, 구성된 시간 동안 사용하지 않을 때 통합이 0으로 축소됩니다. 자세한 내용은 Knative 설명서를 참조하십시오. |
|
| 통합을 위해 병렬로 실행할 수 있는 Pod 수에 대한 상한입니다. Knative에는 설치에 따라 달라지는 자체 cap 값이 있습니다. 자세한 내용은 Knative 설명서를 참조하십시오. |
|
| 모든 조건이 보류될 때 Knative 서비스로 통합을 자동으로 배포합니다.
|
6.2.4. logging trit
로깅 특성은 통합 런타임 로깅 옵션(예: 색상 및 형식)을 구성하는 데 사용됩니다. 로깅 백엔드는 Quarkus에서 제공하며, 해당 구성은 https://quarkus.io/guides/logging.
이 특성은 Kubernetes, Knative, OpenShift 에서 사용할 수 있습니다.
6.2.4.1. 설정
CLI와의 통합을 실행할 때 특성 속성을 지정할 수 있습니다.
kamel run --trait logging.[key]=[value] --trait logging.[key2]=[value2] Integration.java
$ kamel run --trait logging.[key]=[value] --trait logging.[key2]=[value2] Integration.java
다음 구성 옵션을 사용할 수 있습니다.
속성 | 유형 | 설명 |
---|---|---|
|
| 특성을 활성화하거나 비활성화하는 데 사용할 수 있습니다. 모든 특성은 이 공통 속성을 공유합니다. |
|
| 로그 출력 색상화 |
|
| 로그 메시지 형식 |
|
| 로깅 수준 조정(기본값: INFO) |
|
| JSON에서 로그를 출력 |
|
| JSON 로그의 "pretty 인쇄" 활성화 |
6.2.5. 마스터 트래킷
Master 특성을 사용하면 Kubernetes 리소스를 리더 선택을 위해 자동으로 활용하고 특정 인스턴스에서만 마스터 경로를 시작하도록 통합을 구성할 수 있습니다.
경로에서 마스터 끝점을 사용할 때 자동으로 활성화됩니다. 예: from("master:lockname:telegram:bots")…
.
이 특성은 통합 서비스 계정에 configmaps 및 read pod를 읽고 쓸 수 있는 특수 권한을 추가합니다. 통합을 실행할 때 "default"와 다른 서비스 계정을 사용하는 것이 좋습니다.
이 특성은 Kubernetes, Knative, OpenShift 에서 사용할 수 있습니다.
6.2.5.1. 설정
CLI와의 통합을 실행할 때 특성 속성을 지정할 수 있습니다.
kamel run --trait master.[key]=[value] --trait master.[key2]=[value2] Integration.java
$ kamel run --trait master.[key]=[value] --trait master.[key2]=[value2] Integration.java
다음 구성 옵션을 사용할 수 있습니다.
속성 | 유형 | 설명 |
---|---|---|
|
| 특성을 활성화하거나 비활성화하는 데 사용할 수 있습니다. 모든 특성은 이 공통 속성을 공유합니다. |
|
| 특성의 자동 구성을 활성화합니다. |
|
|
이 플래그가 활성화되면 Operator는 소스 코드를 분석하여 위임 끝점에 필요한 종속성을 추가합니다. 예를 들어 |
|
| 잠금을 저장하는 데 사용할 configmap/lease 리소스의 이름입니다. 기본값은 "<integration-name>-lock"입니다. |
|
| 잠금("ConfigMap" 또는 "Lease")에 사용할 Kubernetes 리소스 유형입니다. 기본값은 "리스"입니다. |
|
| 잠금을 유지하는 모든 Pod를 식별하는 데 사용할 레이블입니다. 기본값은 "camel.apache.org/integration"입니다. |
|
| 잠금을 유지하는 모든 Pod를 식별하는 데 사용할 라벨 값입니다. 기본값은 통합 이름입니다. |
6.2.6. Mount Tait
마운트 특성을 사용하여 Integration Pod에 마운트된 볼륨을 구성할 수 있습니다.
이 특성은 Kubernetes, Knative, OpenShift 에서 사용할 수 있습니다.
마운트 특성은 플랫폼 특성 이며 사용자가 비활성화할 수 없습니다.
6.2.6.1. 설정
CLI와의 통합을 실행할 때 특성 속성을 지정할 수 있습니다.
kamel run --trait mount.[key]=[value] --trait mount.[key2]=[value2] integration.java
$ kamel run --trait mount.[key]=[value] --trait mount.[key2]=[value2] integration.java
다음 구성 옵션을 사용할 수 있습니다.
속성 | 유형 | 설명 |
---|---|---|
|
| deprecated: 더 이상 사용되지 않습니다. |
|
| configmap/secret을 가리키는 구성 목록입니다. 설정은 런타임 Camel Context에서 처리하고 속성 파일로 구문 분석하려고 하므로 UTF-8 리소스여야 합니다. 또한 경로에서 직접 사용을 완화하기 위해 classpath에서 사용할 수 있습니다. |
|
| configmap/secret을 가리키는 리소스(텍스트 또는 바이너리 콘텐츠) 목록입니다. 리소스는 모든 리소스 유형(텍스트 또는 바이너리 콘텐츠)이어야 합니다. 대상 경로는 기본 위치 또는 사용자가 지정한 모든 경로일 수 있습니다. |
|
| 마운트할 영구 볼륨 클레임 목록입니다. 구문: |
|
|
시크릿/configmap이 편집되면 "hot reload"를 활성화합니다(기본값 |
-
mount.configs
속성의 구문은 Syntax: [configmap | secret]:name[/key] 입니다. 여기서 name은 선택적으로 필터링할 리소스 이름과 키를 나타냅니다. -
mount.resources
속성의 구문은 Syntax: [configmap | secret]:name[/key] [@path] 입니다. 여기서 name은 리소스 이름을 나타내며 선택적으로 키는 필터링할 리소스 키를 나타내며 경로는 대상 경로를 나타냅니다.
6.2.7. Telemetry trit
기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다.
이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다. Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 https://access.redhat.com/support/offerings/techpreview 을 참조하십시오.
Telemetry 특성은 추적 정보를 OTLP 호환 컬렉터에 자동으로 게시하는 데 사용할 수 있습니다.
특성은 네임스페이스에서 사용 가능한 Telemetry OTLP 엔드포인트를 자동으로 검색할 수 있습니다(버전 1.35 이상에서 Jaerger 지원).
Telemetry 특성은 기본적으로 비활성화되어 있습니다.
Telemetry 특성은 추적 특성과 동시에 활성화할 수 없습니다.
이 특성은 Kubernetes, Knative, OpenShift 에서 사용할 수 있습니다.
6.2.7.1. 설정
CLI와의 통합을 실행할 때 특성 속성을 지정할 수 있습니다.
kamel run --trait telemetry.[key]=[value] --trait telemetry.[key2]=[value2] integration.java
$ kamel run --trait telemetry.[key]=[value] --trait telemetry.[key2]=[value2] integration.java
다음 구성 옵션을 사용할 수 있습니다.
속성 | 유형 | 설명 |
---|---|---|
|
| 특성을 활성화하거나 비활성화하는 데 사용할 수 있습니다. 모든 특성은 이 공통 속성을 공유합니다. |
|
| Telemetry 엔드포인트의 자동 검색을 포함하여 특성의 자동 구성을 활성화합니다. |
|
| Telemetry 데이터를 게시하는 서비스의 이름(기본값: 통합 이름) |
|
| Telemetry 서비스의 대상 끝점(기본적으로 자동으로 검색됨) |
|
| 추적에 사용되는 Telemetry 샘플러(기본 "on") |
|
| 추적에 사용되는 Telemetry의 샘플러 비율 |
|
| 추적에 사용되는 Telemetry의 샘플러는 상위 기반(기본값 "true")입니다. |
6.2.7.2. 예
검색을 통해 배포된 OTLP API Jaeger에 대한 추적을 활성화하려면 다음을 수행합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run -t telemetry.enable=true ...
$ kamel run -t telemetry.enable=true ...
배포된 특정 OTLP gRPC를 정의하려면 다음을 수행합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run -t telemetry.enable=true -t telemetry.endpoint=http://instance-collector:4317 ...
$ kamel run -t telemetry.enable=true -t telemetry.endpoint=http://instance-collector:4317 ...
다른 샘플러 서비스 이름을 정의하려면 다음을 수행합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run -t telemetry.enable=true -t telemetry.service-name=tracer_myintegration ...
$ kamel run -t telemetry.enable=true -t telemetry.service-name=tracer_myintegration ...
샘플링 비율로 1,000개마다 비율 샘플러를 사용하려면 다음을 수행합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run -t telemetry.enable=true -t telemetry.sampler=ratio -t telemetry.sampler-ratio=0.001 ...
$ kamel run -t telemetry.enable=true -t telemetry.sampler=ratio -t telemetry.sampler-ratio=0.001 ...
6.2.8. Pod featureit
포드 특성을 사용하면 통합 pod를 사용자 지정할 수 있습니다. 전략적 병합 패치를 사용하여 Integration .spec.podTemplate
필드에 포함된 PodSpecTemplate
구조를 Integration 배포 Pod 템플릿에 적용합니다.
통합
컨테이너 이름을 사용하여 Camel 경로가 실행되는 컨테이너를 사용자 지정하는 데 사용됩니다.
이 특성은 Kubernetes, Knative, OpenShift 에서 사용할 수 있습니다.
참고: 현재 구현에서 템플릿 옵션은 CLI를 사용하여 정의된 구성 옵션을 재정의합니다. 예를 들면 다음과 같습니다.
kamel run Integration.java --pod-template template.yaml --env TEST_VARIABLE=will_be_overriden --env ANOTHER_VARIABLE=Im_There
$ kamel run Integration.java --pod-template template.yaml --env TEST_VARIABLE=will_be_overriden --env ANOTHER_VARIABLE=Im_There
템플릿의 값은 Cryostat _VARIABLE
환경 변수를 덮어쓰는 반면 ANOTHER_VARIABLE
은 변경되지 않습니다.
참고 2: 통합
컨테이너 진입점에 대한 변경 사항은 현재 특성 실행 순서에 따라 적용되지 않습니다.
6.2.8.1. 설정
특성 속성은 CLI를 사용하여 통합을 실행할 때 지정됩니다.
kamel run --trait pod.[key]=[value] integration.java
$ kamel run --trait pod.[key]=[value] integration.java
다음 구성 옵션을 사용할 수 있습니다.
속성 | 유형 | 설명 |
---|---|---|
|
| 특성을 활성화하거나 비활성화하는 데 사용할 수 있습니다. 모든 특성은 이 공통 속성을 공유합니다. |
6.2.8.2. 사이드카 컨테이너
다음 Integration을 사용하여 디렉터리에서 파일을 읽습니다.
integration.groovy
from('file:///var/log') .convertBodyTo(String.class) .setBody().simple('${body}: {{TEST_VARIABLE}} ') .log('${body}')
from('file:///var/log')
.convertBodyTo(String.class)
.setBody().simple('${body}: {{TEST_VARIABLE}} ')
.log('${body}')
또한 다음 Pod 템플릿은 Integration Pod에 사이드카 컨테이너를 추가하고 일부 데이터를 디렉터리에 생성하여 통합
컨테이너에 마운트합니다.
template.yaml
containers: - name: integration env: - name: TEST_VARIABLE value: "hello from the template" volumeMounts: - name: var-logs mountPath: /var/log - name: sidecar image: busybox command: [ "/bin/sh" , "-c", "while true; do echo $(date -u) 'Content from the sidecar container' > /var/log/file.txt; sleep 1;done" ] volumeMounts: - name: var-logs mountPath: /var/log volumes: - name: var-logs emptyDir: { }
containers:
- name: integration
env:
- name: TEST_VARIABLE
value: "hello from the template"
volumeMounts:
- name: var-logs
mountPath: /var/log
- name: sidecar
image: busybox
command: [ "/bin/sh" , "-c", "while true; do echo $(date -u) 'Content from the sidecar container' > /var/log/file.txt; sleep 1;done" ]
volumeMounts:
- name: var-logs
mountPath: /var/log
volumes:
- name: var-logs
emptyDir: { }
Integration 경로는 사이드카 컨테이너에서 생성한 파일의 내용을 기록합니다. 예제:
kamel run Integration.java --pod-template template.yaml
$ kamel run Integration.java --pod-template template.yaml
...
Condition "Ready" is "True" for Integration integration
[1] 2021-04-30 07:40:03,136 INFO [route1] (Camel (camel-1) thread #0 - file:///var/log) Fri Apr 30 07:40:02 UTC 2021 Content from the sidecar container
[1] : hello from the template
[1] 2021-04-30 07:40:04,140 INFO [route1] (Camel (camel-1) thread #0 - file:///var/log) Fri Apr 30 07:40:03 UTC 2021 Content from the sidecar container
[1] : hello from the template
[1] 2021-04-30 07:40:05,142 INFO [route1] (Camel (camel-1) thread #0 - file:///var/log) Fri Apr 30 07:40:04 UTC 2021 Content from the sidecar container
[1] : hello from the template
6.2.8.3. Init 컨테이너
이 특성을 사용하면 initContainers를 실행할 수 있습니다. initContainers를 실행하려면 다음을 수행해야 합니다.
- 템플릿 사양에 하나 이상의 컨테이너를 포함합니다.
- 통합인 기본 컨테이너의 구성을 제공합니다.
다음은 간단한 예입니다.
template.yaml
containers: - name: integration initContainers: - name: init image: busybox command: [ "/bin/sh" , "-c", "echo 'hello'!" ]
containers:
- name: integration
initContainers:
- name: init
image: busybox
command: [ "/bin/sh" , "-c", "echo 'hello'!" ]
통합 컨테이너는 경로를 실행하는 컨테이너에서 덮어쓰고 initContainer는 경로보다 예상대로 실행됩니다.
6.2.9. Prometheus trilit
Prometheus 특성은 Prometheus 호환 엔드포인트를 구성합니다. Prometheus Operator를 사용할 때 끝점을 자동으로 스크랩할 수 있도록 PodMonitor
리소스도 생성합니다.
메트릭은 MicroProfile Metrics를 사용하여 노출됩니다.
PodMonitor
리소스를 생성하려면 Prometheus Operator 사용자 정의 리소스 정의가 설치되어 있어야 합니다. Prometheus Operator 없이 Prometheus 특성이 작동하려면 pod-monitor
를 false
로 설정할 수 있습니다.
Prometheus 특성은 기본적으로 비활성화되어 있습니다.
이 특성은 Kubernetes, Knative, OpenShift 에서 사용할 수 있습니다.
6.2.9.1. 설정
CLI와의 통합을 실행할 때 특성 속성을 지정할 수 있습니다.
kamel run --trait prometheus.[key]=[value] --trait prometheus.[key2]=[value2] Integration.java
$ kamel run --trait prometheus.[key]=[value] --trait prometheus.[key2]=[value2] Integration.java
다음 구성 옵션을 사용할 수 있습니다.
속성 | 유형 | 설명 |
---|---|---|
|
| 특성을 활성화하거나 비활성화하는 데 사용할 수 있습니다. 모든 특성은 이 공통 속성을 공유합니다. |
|
|
|
|
|
|
6.2.10. PDB traditionalit
PDB 특성을 사용하면 Integration Pod에 대한 PodDisruptionBudget 리소스를 구성할 수 있습니다.
이 특성은 Kubernetes, Knative, OpenShift 에서 사용할 수 있습니다.
6.2.10.1. 설정
CLI와의 통합을 실행할 때 특성 속성을 지정할 수 있습니다.
kamel run --trait pdb.[key]=[value] --trait pdb.[key2]=[value2] Integration.java
$ kamel run --trait pdb.[key]=[value] --trait pdb.[key2]=[value2] Integration.java
다음 구성 옵션을 사용할 수 있습니다.
속성 | 유형 | 설명 |
---|---|---|
|
| 특성을 활성화하거나 비활성화하는 데 사용할 수 있습니다. 모든 특성은 이 공통 속성을 공유합니다. |
|
|
제거 후에도 계속 사용할 수 있어야 하는 통합의 Pod 수입니다. 절대 숫자 또는 백분율일 수 있습니다. |
|
|
제거 후 사용할 수 없는 통합의 Pod 수입니다. 절대 번호 또는 백분율일 수 있습니다( |
6.2.11. 풀 시크릿 추적
Pull Secret 특성은 Kubernetes가 외부 레지스트리에서 컨테이너 이미지를 검색할 수 있도록 Pod에 풀 시크릿을 설정합니다.
가져오기 보안은 수동으로 지정하거나 IntegrationPlatform
에서 외부 컨테이너 레지스트리에 대한 인증을 구성한 경우 이미지를 가져오는 데 동일한 보안을 사용할 수 있습니다.
외부 컨테이너 레지스트리에 대한 인증을 구성할 때마다 기본적으로 활성화되므로 외부 레지스트리가 비공개라고 가정합니다.
레지스트리가 이미지 가져오기에 대한 인증이 필요하지 않은 경우 이 특성을 비활성화할 수 있습니다.
이 특성은 Kubernetes, Knative, OpenShift 에서 사용할 수 있습니다.
6.2.11.1. 설정
CLI와의 통합을 실행할 때 특성 속성을 지정할 수 있습니다.
kamel run --trait pull-secret.[key]=[value] --trait pull-secret.[key2]=[value2] Integration.java
$ kamel run --trait pull-secret.[key]=[value] --trait pull-secret.[key2]=[value2] Integration.java
다음 구성 옵션을 사용할 수 있습니다.
속성 | 유형 | 설명 |
---|---|---|
|
| 특성을 활성화하거나 비활성화하는 데 사용할 수 있습니다. 모든 특성은 이 공통 속성을 공유합니다. |
|
|
Pod에 설정할 풀 시크릿 이름입니다. 비어 있는 경우 |
|
|
공유 플랫폼과 함께 글로벌 Operator를 사용하는 경우 운영자 네임스페이스에서 |
|
|
|
6.2.12. 라우팅 중추적
경로 특성을 사용하여 통합을 위한 OpenShift 경로 생성을 구성할 수 있습니다.
인증서 및 키 콘텐츠는 로컬 파일 시스템 또는 Openshift 시크릿
오브젝트에서 소싱될 수 있습니다. 사용자는 -secret
으로 끝나는 매개변수(예: tls-certificate-
)를 사용하여 보안에 저장된 인증서를 참조할 수 있습니다. 시크릿으로 끝나는 매개변수는 더 높은 우선순위가 있으며 동일한 경로 매개변수가 설정된 경우 (예: secret
tls-key
및 -secret
tls-key
) 다음 tls-key-secret
이 사용됩니다. 키와 인증서를 설정하는 권장 방법은 시크릿을
사용하여 콘텐츠를 저장하고 다음 매개변수를 사용하여 참조하는 것입니다. tls-certificate-secret
,tls-key-secret
,tls-ca-certificate-secret
,tls-destination-ca-certificate-secret
은 이 페이지 끝에 있는 예제 섹션을 확인하여 설정 옵션을 확인하는 것입니다.
이 특성은 다음 프로필에서 사용할 수 있습니다. OpenShift.
6.2.12.1. 설정
CLI와의 통합을 실행할 때 특성 속성을 지정할 수 있습니다.
kamel run --trait route.[key]=[value] --trait route.[key2]=[value2] integration.java
$ kamel run --trait route.[key]=[value] --trait route.[key2]=[value2] integration.java
다음 구성 옵션을 사용할 수 있습니다.
속성 | 유형 | 설명 |
---|---|---|
|
| 특성을 활성화하거나 비활성화하는 데 사용할 수 있습니다. 모든 특성은 이 공통 속성을 공유합니다. |
|
| 주석이 경로에 추가됩니다. 이는 경로 특정 주석을 설정하는 데 사용할 수 있습니다. 주석 옵션은 경로별 주석 을 참조하십시오. CLI 사용 예: -t "route.annotations.'haproxy.router.openshift.io/balance'=roundrobin |
|
| 경로에서 노출된 호스트를 구성하려면 다음을 수행합니다. |
|
|
자세한 내용은 OpenShift 경로 설명서를 참조하십시오. |
|
| TLS 인증서 콘텐츠입니다. 자세한 내용은 OpenShift 경로 설명서를 참조하십시오. |
|
| TLS 인증서에 대한 시크릿 이름 및 키 참조입니다. 형식은 "secret-name[/key-name]"이고, 값은 시크릿 이름을 나타냅니다. 시크릿에 키가 하나만 있으면 읽을 수 있습니다. 그렇지 않으면 "/"로 구분된 키 이름을 설정할 수 있습니다. 자세한 내용은 OpenShift 경로 설명서를 참조하십시오. |
|
| TLS 인증서 키 콘텐츠입니다. 자세한 내용은 OpenShift 경로 설명서를 참조하십시오. |
|
| TLS 인증서 키에 대한 시크릿 이름 및 키 참조입니다. 형식은 "secret-name[/key-name]"이고, 값은 시크릿 이름을 나타냅니다. 시크릿에 키가 하나만 있으면 읽을 수 있습니다. 그렇지 않으면 "/"로 구분된 키 이름을 설정할 수 있습니다. 자세한 내용은 OpenShift 경로 설명서를 참조하십시오. |
|
| TLS CA 인증서 콘텐츠입니다. 자세한 내용은 OpenShift 경로 설명서를 참조하십시오. |
|
| TLS CA 인증서에 대한 시크릿 이름 및 키 참조입니다. 형식은 "secret-name[/key-name]"이고, 값은 시크릿 이름을 나타냅니다. 시크릿에 키가 하나만 있으면 읽을 수 있습니다. 그렇지 않으면 "/"로 구분된 키 이름을 설정할 수 있습니다. 자세한 내용은 OpenShift 경로 설명서를 참조하십시오. |
|
| 대상 CA 인증서는 최종 대상의 ca 인증서 내용을 제공합니다. 재암호화 종료를 사용하는 경우 라우터에서 보안 연결의 상태 점검을 위해 이 파일을 제공해야 합니다. 이 필드를 지정하지 않으면 라우터에서 자체 대상 CA를 제공하고 짧은 서비스 이름(service.namespace.svc)을 사용하여 호스트 이름 검증을 수행할 수 있으므로 인프라 생성 인증서가 자동으로 확인할 수 있습니다. 자세한 내용은 OpenShift 경로 설명서를 참조하십시오. |
|
| 대상 CA 인증서에 대한 시크릿 이름 및 키 참조입니다. 형식은 "secret-name[/key-name]"이고, 값은 시크릿 이름을 나타냅니다. 시크릿에 키가 하나만 있으면 읽을 수 있습니다. 그렇지 않으면 "/"로 구분된 키 이름을 설정할 수 있습니다. 자세한 내용은 OpenShift 경로 설명서를 참조하십시오. |
|
|
안전하지 않은 트래픽을 처리하는 방법을 구성하려면(예: 자세한 내용은 OpenShift 경로 설명서를 참조하십시오. |
6.2.12.2. 예
이 예제에서는 시크릿을 사용하여 통합에서 참조할 인증서와 키를 저장합니다. 경로에 대한 자세한 내용은 Openshift 경로 문서를 읽습니다. PlatformHttpServer.java 는 통합 예입니다.
이러한 예제를 실행해야 하는 경우 키와 인증서가 있는 시크릿
이 있어야 합니다.
6.2.12.2.1. 자체 서명된 인증서를 생성하고 보안을 생성
openssl genrsa -out tls.key openssl req -new -key tls.key -out csr.csr -subj "/CN=my-server.com" openssl x509 -req -in csr.csr -signkey tls.key -out tls.crt oc create secret tls my-combined-certs --key=tls.key --cert=tls.crt
openssl genrsa -out tls.key
openssl req -new -key tls.key -out csr.csr -subj "/CN=my-server.com"
openssl x509 -req -in csr.csr -signkey tls.key -out tls.crt
oc create secret tls my-combined-certs --key=tls.key --cert=tls.crt
6.2.12.2.2. 경로에 HTTP 요청 만들기
모든 예제의 경우 다음 curl 명령을 사용하여 HTTP 요청을 수행할 수 있습니다. 인라인 스크립트를 사용하여 openshift 네임스페이스 및 클러스터 기본 도메인을 검색합니다. 이러한 인라인 스크립트를 지원하지 않는 쉘을 사용하는 경우 인라인 스크립트를 실제 네임스페이스 및 기본 도메인의 값으로 교체해야 합니다.
curl -k https://platform-http-server-`oc config view --minify -o 'jsonpath={..namespace}'`.`oc get dnses/cluster -ojsonpath='{.spec.baseDomain}'`/hello?name=Camel-K
curl -k https://platform-http-server-`oc config view --minify -o 'jsonpath={..namespace}'`.`oc get dnses/cluster -ojsonpath='{.spec.baseDomain}'`/hello?name=Camel-K
보안을 사용하여 에지 경로를 추가하려면
-secret
으로 끝나는 매개변수를 사용하여 인증서가 포함된 보안 이름을 설정합니다. 이 경로 예제 특성은tls.key
및tls.crt
라는 두 개의 키가 포함된my-combined-certs
라는 시크릿을 참조합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run --dev PlatformHttpServer.java -t route.tls-termination=edge -t route.tls-certificate-secret=my-combined-certs/tls.crt -t route.tls-key-secret=my-combined-certs/tls.key
kamel run --dev PlatformHttpServer.java -t route.tls-termination=edge -t route.tls-certificate-secret=my-combined-certs/tls.crt -t route.tls-key-secret=my-combined-certs/tls.key
시크릿을 사용하여 패스스루 경로를 추가하기 위해 TLS는 통합 Pod에 TLS가 설정되고, 키와 인증서는 실행 중인 통합 Pod에 표시되어야 합니다. 이를 위해
--resource
kamel 매개변수를 사용하여 통합 Pod에서 시크릿을 마운트한 다음, 실행 중인 Pod에서 이러한 인증서 파일을 참조하기 위해 일부 camel quarkus 매개변수를 사용하여-p quarkus.http.ssl
로 시작합니다. 이 경로 예제 특성은tls.key
및tls.crt
라는 두 개의 키가 포함된my-combined-certs
라는 시크릿을 참조합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run --dev PlatformHttpServer.java --resource secret:my-combined-certs@/etc/ssl/my-combined-certs -p quarkus.http.ssl.certificate.file=/etc/ssl/my-combined-certs/tls.crt -p quarkus.http.ssl.certificate.key-file=/etc/ssl/my-combined-certs/tls.key -t route.tls-termination=passthrough -t container.port=8443
kamel run --dev PlatformHttpServer.java --resource secret:my-combined-certs@/etc/ssl/my-combined-certs -p quarkus.http.ssl.certificate.file=/etc/ssl/my-combined-certs/tls.crt -p quarkus.http.ssl.certificate.key-file=/etc/ssl/my-combined-certs/tls.key -t route.tls-termination=passthrough -t container.port=8443
시크릿을 사용하여 재암호화 경로를 추가하기 위해 TLS는 통합 포드에 설정되고, 키와 인증서는 실행 중인 통합 포드에 표시되어야 합니다. 이를 위해
--resource
kamel 매개변수를 사용하여 통합 Pod에서 시크릿을 마운트한 다음, 실행 중인 Pod에서 이러한 인증서 파일을 참조하기 위해 일부 camel quarkus 매개변수를 사용하여-p quarkus.http.ssl
로 시작합니다. 이 경로 예제 특성은tls.key
및tls.crt
라는 두 개의 키가 포함된my-combined-certs
라는 시크릿을 참조합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run --dev PlatformHttpServer.java --resource secret:my-combined-certs@/etc/ssl/my-combined-certs -p quarkus.http.ssl.certificate.file=/etc/ssl/my-combined-certs/tls.crt -p quarkus.http.ssl.certificate.key-file=/etc/ssl/my-combined-certs/tls.key -t route.tls-termination=reencrypt -t route.tls-destination-ca-certificate-secret=my-combined-certs/tls.crt -t route.tls-certificate-secret=my-combined-certs/tls.crt -t route.tls-key-secret=my-combined-certs/tls.key -t container.port=8443
kamel run --dev PlatformHttpServer.java --resource secret:my-combined-certs@/etc/ssl/my-combined-certs -p quarkus.http.ssl.certificate.file=/etc/ssl/my-combined-certs/tls.crt -p quarkus.http.ssl.certificate.key-file=/etc/ssl/my-combined-certs/tls.key -t route.tls-termination=reencrypt -t route.tls-destination-ca-certificate-secret=my-combined-certs/tls.crt -t route.tls-certificate-secret=my-combined-certs/tls.crt -t route.tls-key-secret=my-combined-certs/tls.key -t container.port=8443
경로 및 통합 끝점에 대한 Openshift 서비스 제공 인증서의 보안에서 특정 인증서를 사용하여 재암호화 경로를 추가하려면 다음을 수행합니다. 이렇게 하면 Openshift 서비스 제공 인증서가 통합 Pod에서만 설정됩니다. 키 및 인증서는 실행 중인 통합 포드에 표시되어야 합니다. 이를 위해
--resource
kamel 매개변수를 사용하여 통합 Pod에 보안을 마운트한 다음 일부 camel quarkus 매개변수를 사용하여 실행 중인 Pod에서 이러한 인증서 파일을 참조합니다. 이 매개변수는-p quarkus.ssl.certificate
로 시작합니다. 이 경로 예제 특성은tls.key
및tls.crt
라는 두 개의 키가 포함된my-combined-certs
라는 시크릿을 참조합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run --dev PlatformHttpServer.java --resource secret:cert-from-openshift@/etc/ssl/cert-from-openshift -p quarkus.http.ssl.certificate.file=/etc/ssl/cert-from-openshift/tls.crt -p quarkus.http.ssl.certificate.key-file=/etc/ssl/cert-from-openshift/tls.key -t route.tls-termination=reencrypt -t route.tls-certificate-secret=my-combined-certs/tls.crt -t route.tls-key-secret=my-combined-certs/tls.key -t container.port=8443
kamel run --dev PlatformHttpServer.java --resource secret:cert-from-openshift@/etc/ssl/cert-from-openshift -p quarkus.http.ssl.certificate.file=/etc/ssl/cert-from-openshift/tls.crt -p quarkus.http.ssl.certificate.key-file=/etc/ssl/cert-from-openshift/tls.key -t route.tls-termination=reencrypt -t route.tls-certificate-secret=my-combined-certs/tls.crt -t route.tls-key-secret=my-combined-certs/tls.key -t container.port=8443
그런 다음 Openshift 서비스 제공 인증서를 삽입하려면 통합 서비스에 주석을 달아야 합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc annotate service platform-http-server service.beta.openshift.io/serving-cert-secret-name=cert-from-openshift
oc annotate service platform-http-server service.beta.openshift.io/serving-cert-secret-name=cert-from-openshift
인증서와 로컬 파일 시스템에서 제공되는 개인 키를 사용하여 에지 경로를 추가하려면 다음을 수행합니다. 이 예제에서는 인라인 스크립트를 사용하여 인증서 및 개인 키 파일 내용을 읽은 다음 모든 새 줄 문자를 제거합니다(이는 인증서를 매개 변수 값으로 설정하는 데 필요합니다) 값이 한 줄에 있습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kamel run PlatformHttpServer.java --dev -t route.tls-termination=edge -t route.tls-certificate="$(cat tls.crt|awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}')" -t route.tls-key="$(cat tls.key|awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}')"
kamel run PlatformHttpServer.java --dev -t route.tls-termination=edge -t route.tls-certificate="$(cat tls.crt|awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}')" -t route.tls-key="$(cat tls.key|awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}')"
6.2.13. Service traditionalit
서비스 특성은 동일한 네임스페이스의 다른 애플리케이션(또는 통합)에서 액세스할 수 있도록 Service 리소스와의 통합을 노출합니다.
통합이 HTTP 끝점을 노출할 수 있는 Camel 구성 요소에 따라 달라지는 경우 기본적으로 활성화되어 있습니다.
이 특성은 Kubernetes, OpenShift 에서 사용할 수 있습니다.
6.2.13.1. 설정
CLI와의 통합을 실행할 때 특성 속성을 지정할 수 있습니다.
kamel run --trait service.[key]=[value] --trait service.[key2]=[value2] Integration.java
$ kamel run --trait service.[key]=[value] --trait service.[key2]=[value2] Integration.java
다음 구성 옵션을 사용할 수 있습니다.
속성 | 유형 | 설명 |
---|---|---|
|
| 특성을 활성화하거나 비활성화하는 데 사용할 수 있습니다. 모든 특성은 이 공통 속성을 공유합니다. |
|
| 서비스를 생성해야 하는 경우 코드에서 자동으로 감지하려면 다음을 수행합니다. |
|
|
서비스를 NodePort(기본 |