6.2. Camel K 기능 특성
6.2.1. Knative Trait
Knative 특성은 Knative 리소스의 주소를 자동으로 검색하여 실행 중인 통합에 삽입합니다.
전체 Knative 구성이 JSON 형식으로 CAMEL_KNATIVE_CONFIGURATION에 삽입됩니다. 그런 다음 Camel Knative 구성 요소는 전체 구성을 사용하여 경로를 구성합니다.
Knative 프로필이 활성화되면 해당 특성이 기본적으로 활성화됩니다.
이 특성은 다음 프로필에서 사용할 수 있습니다: Knative.
6.2.1.1. 설정
CLI와의 통합을 실행할 때 특성 속성을 지정할 수 있습니다.
$ kamel run --trait knative.[key]=[value] --trait knative.[key2]=[value2] integration.java
다음 설정 옵션을 사용할 수 있습니다.
속성 | 유형 | 설명 |
---|---|---|
|
| 특성을 활성화하거나 비활성화하는 데 사용할 수 있습니다. 모든 특성은 이 공통 속성을 공유합니다. |
|
| 를 사용하여 JSON 형식으로 Knative 전체 구성을 삽입할 수 있습니다. |
|
| 통합 경로 소스로 사용되는 채널 목록입니다. 간단한 채널 이름 또는 전체 Camel URI를 포함할 수 있습니다. |
|
| 통합 경로 대상으로 사용되는 채널 목록입니다. 간단한 채널 이름 또는 전체 Camel URI를 포함할 수 있습니다. |
|
| 통합 경로 소스로 사용되는 채널 목록입니다. |
|
| 통합 경로 대상으로 사용되는 끝점 목록입니다. 간단한 끝점 이름 또는 전체 Camel URI를 포함할 수 있습니다. |
|
| 통합을 서브스크립션할 이벤트 유형 목록입니다. "기본"과 다른 특정 브로커를 사용하려면 간단한 이벤트 유형 또는 전체 Camel URI를 포함할 수 있습니다. |
|
| 통합을 생성할 이벤트 유형 목록입니다. 특정 브로커를 사용하기 위해 간단한 이벤트 유형 또는 전체 Camel URI를 포함할 수 있습니다. |
|
| 헤더 "ce-knativehistory"에 따라 이벤트를 필터링할 수 있습니다. 이 헤더는 최신 버전의 Knative에서 제거되었으므로 필터링은 기본적으로 비활성화되어 있습니다. |
|
| Knative SinkBinding 리소스를 통해 싱크에 통합을 바인딩할 수 있습니다. 이는 통합에서 단일 싱크를 대상으로 할 때 사용할 수 있습니다. 통합에서 단일 싱크를 대상으로 할 때 기본적으로 활성화됩니다( Knative 소스에서 통합을 소유한 경우 제외). |
|
| 모든 특성 속성에 대한 자동 검색을 활성화합니다. |
6.2.2. Knative 서비스 Trait
Knative 서비스 특성을 사용하면 표준 Kubernetes 배포 대신 Knative 서비스로 통합을 실행할 때 옵션을 구성할 수 있습니다.
Knative 서비스로 통합을 실행하면 자동 확장(및 스케일 0) 기능이 추가되지만 이러한 기능은 경로에서 HTTP 끝점 소비자를 사용하는 경우에만 의미가 있습니다.
이 특성은 다음 프로필에서 사용할 수 있습니다: Knative.
6.2.2.1. 설정
CLI와의 통합을 실행할 때 특성 속성을 지정할 수 있습니다.
$ kamel run --trait knative-service.[key]=[value] --trait knative-service.[key2]=[value2] Integration.java
다음 설정 옵션을 사용할 수 있습니다.
속성 | 유형 | 설명 |
---|---|---|
|
| 특성을 활성화하거나 비활성화하는 데 사용할 수 있습니다. 모든 특성은 이 공통 속성을 공유합니다. |
|
|
Knative 자동 스케일링 클래스 속성(예: 자세한 내용은 Knative 설명서를 참조하십시오. |
|
|
Knative 자동 스케일링 메트릭 속성(예: 자세한 내용은 Knative 설명서를 참조하십시오. |
|
| 각 Pod에 대해 허용되는 동시성 수준 또는 CPU 백분율(자동 스케일링 지표에 따라)을 설정합니다. 자세한 내용은 Knative 설명서를 참조하십시오. |
|
| 통합을 위해 언제든지 실행해야 하는 최소 Pod 수입니다. 기본적으로 0입니다. 즉, 구성된 시간 동안 사용하지 않으면 통합이 0으로 축소됩니다. 자세한 내용은 Knative 설명서를 참조하십시오. |
|
| 통합을 위해 병렬로 실행할 수 있는 Pod 수에 대한 상한입니다. Knative에는 설치에 따라 달라지는 자체 cap 값이 있습니다. 자세한 내용은 Knative 설명서를 참조하십시오. |
|
| 모든 조건이 충족되면 Knative 서비스로 통합을 자동으로 배포합니다.
|
6.2.3. Prometheus Trait
Prometheus 특성은 Prometheus 호환 끝점을 구성합니다. 또한 Prometheus Operator를 사용하는 경우 끝점을 자동으로 스크랩할 수 있도록 PodMonitor
리소스를 생성합니다.
지표는 MicroProfile 메트릭을 사용하여 노출됩니다.
PodMonitor
리소스를 생성하려면 Prometheus Operator 사용자 정의 리소스 정의가 설치되어 있어야 합니다. Prometheus Operator 없이 Prometheus 특성이 작동하려면 pod-monitor
를 false
로 설정할 수 있습니다.
Prometheus 특성은 기본적으로 비활성화되어 있습니다.
이 특성은 Kubernetes, Knative, OpenShift 프로필에서 사용할 수 있습니다.
6.2.3.1. 설정
CLI와의 통합을 실행할 때 특성 속성을 지정할 수 있습니다.
$ kamel run --trait prometheus.[key]=[value] --trait prometheus.[key2]=[value2] Integration.java
다음 설정 옵션을 사용할 수 있습니다.
속성 | 유형 | 설명 |
---|---|---|
|
| 특성을 활성화하거나 비활성화하는 데 사용할 수 있습니다. 모든 특성은 이 공통 속성을 공유합니다. |
|
|
|
|
|
|
6.2.4. PDB Trait
PDB 특성을 사용하면 통합 Pod에 대해 PodDisruptionBudget 리소스를 구성할 수 있습니다.
이 특성은 Kubernetes, Knative, OpenShift 프로필에서 사용할 수 있습니다.
6.2.4.1. 설정
CLI와의 통합을 실행할 때 특성 속성을 지정할 수 있습니다.
$ kamel run --trait pdb.[key]=[value] --trait pdb.[key2]=[value2] Integration.java
다음 설정 옵션을 사용할 수 있습니다.
속성 | 유형 | 설명 |
---|---|---|
|
| 특성을 활성화하거나 비활성화하는 데 사용할 수 있습니다. 모든 특성은 이 공통 속성을 공유합니다. |
|
|
제거 후에도 사용할 수 있어야 하는 Integration의 pod 수입니다. 절대 숫자 또는 백분율일 수 있습니다. |
|
|
제거 후 사용할 수 없는 통합의 Pod 수입니다. 절대 번호 또는 백분율( |
6.2.5. pull Secret Trait
Pull Secret 특성은 Kubernetes가 외부 레지스트리에서 컨테이너 이미지를 검색할 수 있도록 Pod에서 가져오기 보안을 설정합니다.
가져오기 시크릿은 수동으로 지정하거나 IntegrationPlatform
의 외부 컨테이너 레지스트리에 대한 인증을 구성한 경우 이미지를 가져오는 데 동일한 시크릿을 사용합니다.
외부 컨테이너 레지스트리에 대한 인증을 구성할 때마다 기본적으로 활성화되어 있으므로 외부 레지스트리가 프라이빗이라고 가정합니다.
레지스트리에 이미지 가져오기에 대한 인증이 필요하지 않은 경우 이 특성을 비활성화할 수 있습니다.
이 특성은 Kubernetes, Knative, OpenShift 프로필에서 사용할 수 있습니다.
6.2.5.1. 설정
CLI와의 통합을 실행할 때 특성 속성을 지정할 수 있습니다.
$ kamel run --trait pull-secret.[key]=[value] --trait pull-secret.[key2]=[value2] Integration.java
다음 설정 옵션을 사용할 수 있습니다.
속성 | 유형 | 설명 |
---|---|---|
|
| 특성을 활성화하거나 비활성화하는 데 사용할 수 있습니다. 모든 특성은 이 공통 속성을 공유합니다. |
|
|
Pod에 설정할 풀 시크릿 이름입니다. 비워 두면 |
|
|
공유 플랫폼과 함께 글로벌 Operator를 사용하는 경우 Operator 네임스페이스에서 |
|
|
|
6.2.6. 경로 등급
Route 특성을 사용하여 통합을 위해 OpenShift 경로 생성을 구성할 수 있습니다.
인증서 및 키 내용은 로컬 파일 시스템 또는 Openshift 시크릿
오브젝트에서 소싱할 수 있습니다. 사용자는 시크릿에 저장된 인증서를 참조하기 위해 -
(예: secret
tls-certificate-secret
)으로 끝나는 매개변수를 사용할 수 있습니다. 시크릿으로 끝나는 매개변수는 우선 순위가 높으며 동일한 경로 매개변수가 설정된 경우(예: tls-key
및 -secret
tls-key
), tls-key-secret
이 사용됩니다. 키 및 인증서를 설정하는 권장 방법은 시크릿
을 사용하여 콘텐츠를 저장하고 다음 매개변수를 사용하여 해당 콘텐츠를 참조하는 것입니다.
,tls-key-secret
tls-ca-certificate-secret
,tls-destination-ca-certificate-secret
은 이 페이지 끝에 있는 예제 섹션을 참조하여 설정 옵션을 확인하는 것입니다.
이 특성은 다음 프로필인 OpenShift 에서 사용할 수 있습니다.
6.2.6.1. 설정
CLI와의 통합을 실행할 때 특성 속성을 지정할 수 있습니다.
$ kamel run --trait route.[key]=[value] --trait route.[key2]=[value2] integration.java
다음 설정 옵션을 사용할 수 있습니다.
속성 | 유형 | 설명 |
---|---|---|
|
| 특성을 활성화하거나 비활성화하는 데 사용할 수 있습니다. 모든 특성은 이 공통 속성을 공유합니다. |
|
| 경로에서 노출되는 호스트를 구성하려면 다음을 수행합니다. |
|
|
자세한 내용은 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)을 사용하여 호스트 이름(service.namespace.svc)을 사용하여 인프라 생성 인증서를 자동으로 확인할 수 있습니다. 자세한 내용은 OpenShift 경로 설명서를 참조하십시오. |
|
| 대상 CA 인증서에 대한 보안 이름 및 키 참조입니다. 형식은 "secret-name[/key-name]"이며, 시크릿에 키가 하나만 있는 경우 값은 시크릿 이름을 나타냅니다. 그렇지 않으면 "/"로 구분된 키 이름을 설정할 수 있습니다. 자세한 내용은 OpenShift 경로 설명서를 참조하십시오. |
|
|
비보안 트래픽을 처리하는 방법을 구성하려면 트래픽 자세한 내용은 OpenShift 경로 설명서를 참조하십시오. |
6.2.6.2. 예
이 예제에서는 시크릿 을 사용하여 통합에 참조할 인증서와 키를 저장합니다. 경로에 대한 자세한 내용은 Openshift 경로 문서를 참조하십시오. PlatformHttpServer.java 는 통합 예제입니다.
이러한 예제를 실행하려면 키와 인증서가 있는 보안이 있어야 합니다.
6.2.6.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
6.2.6.2.2. 경로에 HTTP 요청 만들기
모든 예제에 대해 다음 curl 명령을 사용하여 HTTP 요청을 수행할 수 있습니다. 인라인 스크립트를 사용하여 이러한 인라인 스크립트를 지원하지 않는 쉘을 사용하는 경우 인라인 스크립트를 실제 네임스페이스 및 기본 도메인 값으로 교체해야 합니다.
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
으로 끝나는 매개변수를 사용하여 인증서가 포함된 보안 이름을 설정합니다. 이 경로 예제 trait은tls.key
및tls.crt
라는 두 개의 키가 포함된my-combined-certs
라는 보안을 참조합니다.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에 설정되고, 실행 중인 통합 Pod에 키와 인증서가 표시되고,
--resource
kamel 매개변수를 사용하여 통합 Pod에 보안을 마운트한 다음 실행 중인 Pod에서 이러한 인증서 파일을 참조하기 위해 camel quarkus 매개변수를 사용하여-p quarkus.http.ssl.certificate
로 시작합니다. 이 경로 예제 trait은tls.key
및tls.crt
라는 두 개의 키가 포함된my-combined-certs
라는 보안을 참조합니다.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가 통합 Pod에 설정되고, 실행 중인 통합 Pod에 키와 인증서가 표시되고,
--resource
kamel 매개변수를 사용하여 통합 Pod에 보안을 마운트한 다음 실행 중인 Pod에서 이러한 인증서 파일을 참조하기 위해 camel quarkus 매개변수를 사용하여-p quaus.http.ssl.certificate
로 시작해야 합니다. 이 경로 예제 trait은tls.key
및tls.crt
라는 두 개의 키가 포함된my-combined-certs
라는 보안을 참조합니다.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에서 보안을 마운트한 다음 실행 중인 Pod에서 이러한 인증서 파일을 참조하기 위해 일부 camel quarkus 매개변수를 사용하여-p quarkus.ssl.certificate
로 시작합니다. 이 경로 예제 trait은tls.key
및tls.crt
라는 두 개의 키가 포함된my-combined-certs
라는 보안을 참조합니다.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 서비스 제공 인증서를 삽입하도록 통합 서비스에 주석을 답니다.
oc annotate service platform-http-server service.beta.openshift.io/serving-cert-secret-name=cert-from-openshift
로컬 파일 시스템에서 제공한 인증서 및 개인 키를 사용하여 엣지 경로를 추가하려면 다음을 수행합니다. 이 예제에서는 인라인 스크립트를 사용하여 인증서 및 개인 키 파일 내용을 읽은 다음 모든 새 줄 문자를 제거합니다(이는 인증서를 매개 변수 값으로 설정하는 데 필요합니다). 따라서 값이 한 줄에 있습니다.
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.7. Service Trait
서비스 특성은 동일한 네임스페이스의 다른 애플리케이션(또는 통합)에서 액세스할 수 있도록 서비스 리소스와의 통합을 노출합니다.
통합이 HTTP 끝점을 노출할 수 있는 Camel 구성 요소에 의존하는 경우 기본적으로 활성화되어 있습니다.
이 특성은 Kubernetes, OpenShift 프로필에서 사용할 수 있습니다.
6.2.7.1. 설정
CLI와의 통합을 실행할 때 특성 속성을 지정할 수 있습니다.
$ kamel run --trait service.[key]=[value] --trait service.[key2]=[value2] Integration.java
다음 설정 옵션을 사용할 수 있습니다.
속성 | 유형 | 설명 |
---|---|---|
|
| 특성을 활성화하거나 비활성화하는 데 사용할 수 있습니다. 모든 특성은 이 공통 속성을 공유합니다. |
|
| 서비스를 생성해야 하는 경우 코드에서 자동으로 감지합니다. |
|
|
Service가 NodePort(기본값: |