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

다음 설정 옵션을 사용할 수 있습니다.

속성유형설명

knative.enabled

bool

특성을 활성화하거나 비활성화하는 데 사용할 수 있습니다. 모든 특성은 이 공통 속성을 공유합니다.

knative.configuration

string

를 사용하여 JSON 형식으로 Knative 전체 구성을 삽입할 수 있습니다.

knative.channel-sources

[]string

통합 경로 소스로 사용되는 채널 목록입니다. 간단한 채널 이름 또는 전체 Camel URI를 포함할 수 있습니다.

knative.channel-sinks

[]string

통합 경로 대상으로 사용되는 채널 목록입니다. 간단한 채널 이름 또는 전체 Camel URI를 포함할 수 있습니다.

knative.endpoint-sources

[]string

통합 경로 소스로 사용되는 채널 목록입니다.

knative.endpoint-sinks

[]string

통합 경로 대상으로 사용되는 끝점 목록입니다. 간단한 끝점 이름 또는 전체 Camel URI를 포함할 수 있습니다.

knative.event-sources

[]string

통합을 서브스크립션할 이벤트 유형 목록입니다. "기본"과 다른 특정 브로커를 사용하려면 간단한 이벤트 유형 또는 전체 Camel URI를 포함할 수 있습니다.

knative.event-sinks

[]string

통합을 생성할 이벤트 유형 목록입니다. 특정 브로커를 사용하기 위해 간단한 이벤트 유형 또는 전체 Camel URI를 포함할 수 있습니다.

knative.filter-source-channels

bool

헤더 "ce-knativehistory"에 따라 이벤트를 필터링할 수 있습니다. 이 헤더는 최신 버전의 Knative에서 제거되었으므로 필터링은 기본적으로 비활성화되어 있습니다.

knative.sink-binding

bool

Knative SinkBinding 리소스를 통해 싱크에 통합을 바인딩할 수 있습니다. 이는 통합에서 단일 싱크를 대상으로 할 때 사용할 수 있습니다. 통합에서 단일 싱크를 대상으로 할 때 기본적으로 활성화됩니다( Knative 소스에서 통합을 소유한 경우 제외).

knative.auto

bool

모든 특성 속성에 대한 자동 검색을 활성화합니다.

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-service.enabled

bool

특성을 활성화하거나 비활성화하는 데 사용할 수 있습니다. 모든 특성은 이 공통 속성을 공유합니다.

knative-service.autoscaling-class

string

Knative 자동 스케일링 클래스 속성(예: hpa.autoscaling.knative.dev 또는 kpa.autoscaling.knative.dev 자동 스케일링 설정)을 구성합니다.

자세한 내용은 Knative 설명서를 참조하십시오.

knative-service.autoscaling-metric

string

Knative 자동 스케일링 메트릭 속성(예: 동시성 기반 또는 cpu 기반 자동 스케일링 설정)을 구성합니다.

자세한 내용은 Knative 설명서를 참조하십시오.

knative-service.autoscaling-target

int

각 Pod에 대해 허용되는 동시성 수준 또는 CPU 백분율(자동 스케일링 지표에 따라)을 설정합니다.

자세한 내용은 Knative 설명서를 참조하십시오.

knative-service.min-scale

int

통합을 위해 언제든지 실행해야 하는 최소 Pod 수입니다. 기본적으로 0입니다. 즉, 구성된 시간 동안 사용하지 않으면 통합이 0으로 축소됩니다.

자세한 내용은 Knative 설명서를 참조하십시오.

knative-service.max-scale

int

통합을 위해 병렬로 실행할 수 있는 Pod 수에 대한 상한입니다. Knative에는 설치에 따라 달라지는 자체 cap 값이 있습니다.

자세한 내용은 Knative 설명서를 참조하십시오.

knative-service.auto

bool

모든 조건이 충족되면 Knative 서비스로 통합을 자동으로 배포합니다.

  • 통합에서 Knative 프로필을 사용
  • 모든 경로는 HTTP 기반 소비자 또는 수동 소비자(예: 직접 는 수동 소비자임)에서 시작됩니다.

6.2.3. Prometheus Trait

Prometheus 특성은 Prometheus 호환 끝점을 구성합니다. 또한 Prometheus Operator를 사용하는 경우 끝점을 자동으로 스크랩할 수 있도록 PodMonitor 리소스를 생성합니다.

지표는 MicroProfile 메트릭을 사용하여 노출됩니다.

주의

PodMonitor 리소스를 생성하려면 Prometheus Operator 사용자 정의 리소스 정의가 설치되어 있어야 합니다. Prometheus Operator 없이 Prometheus 특성이 작동하려면 pod-monitorfalse 로 설정할 수 있습니다.

Prometheus 특성은 기본적으로 비활성화되어 있습니다.

이 특성은 Kubernetes, Knative, OpenShift 프로필에서 사용할 수 있습니다.

6.2.3.1. 설정

CLI와의 통합을 실행할 때 특성 속성을 지정할 수 있습니다.

$ kamel run --trait prometheus.[key]=[value] --trait prometheus.[key2]=[value2] Integration.java

다음 설정 옵션을 사용할 수 있습니다.

속성유형설명

prometheus.enabled

bool

특성을 활성화하거나 비활성화하는 데 사용할 수 있습니다. 모든 특성은 이 공통 속성을 공유합니다.

prometheus.pod-monitor

bool

PodMonitor 리소스가 생성되었는지 여부(기본값: ).

prometheus.pod-monitor-labels

[]string

pod-monitortrue 인 경우 적용되는 PodMonitor 리소스 레이블입니다.

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

다음 설정 옵션을 사용할 수 있습니다.

속성유형설명

pdb.enabled

bool

특성을 활성화하거나 비활성화하는 데 사용할 수 있습니다. 모든 특성은 이 공통 속성을 공유합니다.

pdb.min-available

string

제거 후에도 사용할 수 있어야 하는 Integration의 pod 수입니다. 절대 숫자 또는 백분율일 수 있습니다. min-availablemax-unavailable 중 하나만 지정할 수 있습니다.

pdb.max-unavailable

string

제거 후 사용할 수 없는 통합의 Pod 수입니다. 절대 번호 또는 백분율( min-available 이 설정되지 않은 경우에도 기본값 1) 수 있습니다. max-unavailablemin-available 중 하나만 지정할 수 있습니다.

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

다음 설정 옵션을 사용할 수 있습니다.

속성유형설명

pull-secret.enabled

bool

특성을 활성화하거나 비활성화하는 데 사용할 수 있습니다. 모든 특성은 이 공통 속성을 공유합니다.

pull-secret.secret-name

string

Pod에 설정할 풀 시크릿 이름입니다. 비워 두면 IntegrationPlatform 레지스트리 구성에서 자동으로 가져옵니다.

pull-secret.image-puller-delegation

bool

공유 플랫폼과 함께 글로벌 Operator를 사용하는 경우 Operator 네임스페이스에서 system:image-puller 클러스터 역할을 통합 서비스 계정으로 위임할 수 있습니다.

pull-secret.auto

bool

kubernetes.io/dockerconfigjson 유형의 경우 Pod에서 플랫폼 레지스트리 보안을 자동으로 구성합니다.

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

다음 설정 옵션을 사용할 수 있습니다.

속성유형설명

route.enabled

bool

특성을 활성화하거나 비활성화하는 데 사용할 수 있습니다. 모든 특성은 이 공통 속성을 공유합니다.

route.host

string

경로에서 노출되는 호스트를 구성하려면 다음을 수행합니다.

route.tls-termination

string

엣지,패스스루 또는 재암호화 와 같은 TLS 종료 유형입니다.

자세한 내용은 OpenShift 경로 설명서를 참조하십시오.

route.tls-certificate

string

TLS 인증서 콘텐츠입니다.

자세한 내용은 OpenShift 경로 설명서를 참조하십시오.

route.tls-certificate-secret

string

TLS 인증서에 대한 보안 이름 및 키 참조입니다. 형식은 "secret-name[/key-name]"이며, 시크릿에 키가 하나만 있는 경우 값은 시크릿 이름을 나타냅니다. 그렇지 않으면 "/"로 구분된 키 이름을 설정할 수 있습니다.

자세한 내용은 OpenShift 경로 설명서를 참조하십시오.

route.tls-key

string

TLS 인증서 키 콘텐츠입니다.

자세한 내용은 OpenShift 경로 설명서를 참조하십시오.

route.tls-key-secret

string

TLS 인증서 키에 대한 보안 이름 및 키 참조입니다. 형식은 "secret-name[/key-name]"이며, 시크릿에 키가 하나만 있는 경우 값은 시크릿 이름을 나타냅니다. 그렇지 않으면 "/"로 구분된 키 이름을 설정할 수 있습니다.

자세한 내용은 OpenShift 경로 설명서를 참조하십시오.

route.tls-ca-certificate

string

TLS CA 인증서 콘텐츠입니다.

자세한 내용은 OpenShift 경로 설명서를 참조하십시오.

route.tls-ca-certificate-secret

string

TLS CA 인증서에 대한 시크릿 이름 및 키 참조입니다. 형식은 "secret-name[/key-name]"이며, 시크릿에 키가 하나만 있는 경우 값은 시크릿 이름을 나타냅니다. 그렇지 않으면 "/"로 구분된 키 이름을 설정할 수 있습니다.

자세한 내용은 OpenShift 경로 설명서를 참조하십시오.

route.tls-destination-ca-certificate

string

대상 CA 인증서는 최종 대상의 ca 인증서 내용을 제공합니다. 재암호화 종료를 사용하는 경우 이 파일을 제공하여 라우터에서 보안 연결의 상태 점검에 사용해야 합니다. 이 필드를 지정하지 않으면 라우터에서 자체 대상 CA를 제공하고 단기 서비스 이름(service.namespace.svc)을 사용하여 호스트 이름(service.namespace.svc)을 사용하여 인프라 생성 인증서를 자동으로 확인할 수 있습니다.

자세한 내용은 OpenShift 경로 설명서를 참조하십시오.

route.tls-destination-ca-certificate-secret

string

대상 CA 인증서에 대한 보안 이름 및 키 참조입니다. 형식은 "secret-name[/key-name]"이며, 시크릿에 키가 하나만 있는 경우 값은 시크릿 이름을 나타냅니다. 그렇지 않으면 "/"로 구분된 키 이름을 설정할 수 있습니다.

자세한 내용은 OpenShift 경로 설명서를 참조하십시오.

route.tls-insecure-edge-termination-policy

string

비보안 트래픽을 처리하는 방법을 구성하려면 트래픽 허용,비활성화 또는 리디렉션 트래픽 허용.

자세한 내용은 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.keytls.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.keytls.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.keytls.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.keytls.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.enabled

bool

특성을 활성화하거나 비활성화하는 데 사용할 수 있습니다. 모든 특성은 이 공통 속성을 공유합니다.

service.auto

bool

서비스를 생성해야 하는 경우 코드에서 자동으로 감지합니다.

service.node-port

bool

Service가 NodePort(기본값: false)로 노출되도록 활성화합니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.