10장. 이벤트링 구성 튜닝
10.1. Knative Eventing 시스템 배포 구성 덮어쓰기
KnativeEventing
CR(사용자 정의 리소스)의 workloads
사양을 수정하여 일부 특정 배포의 기본 구성을 덮어쓸 수 있습니다. 현재 eventing-controller
,eventing-webhook
, imc-controller
필드 및 프로브의 준비
및 활성
필드에 대해 기본 구성 설정을 재정의할 수 있습니다.
replicas
사양은 HPA(horizontal Pod Autoscaler)를 사용하는 배포의 복제본 수를 재정의할 수 없으며 eventing-webhook
배포에는 작동하지 않습니다.
기본적으로 배포에 정의된 프로브만 덮어쓸 수 있습니다.
10.1.1. 배포 구성 덮어쓰기
현재 eventing-controller
,eventing-webhook
, imc-controller
필드 및 프로브의 준비
및 활성
필드에 대해 기본 구성 설정을 재정의할 수 있습니다.
replicas
사양은 HPA(horizontal Pod Autoscaler)를 사용하는 배포의 복제본 수를 재정의할 수 없으며 eventing-webhook
배포에는 작동하지 않습니다.
다음 예에서 KnativeEventing
CR은 다음과 같이 eventing-controller
배포를 덮어씁니다.
-
준비 상태
프로브 시간 초과eventing-controller
가 10초로 설정됩니다. - 배포에 CPU 및 메모리 리소스 제한이 지정되어 있습니다.
- 배포에는 3개의 복제본이 있습니다.
-
example-label:
레이블이 추가되었습니다. -
example-annotation: 주석
주석이 추가되었습니다. -
nodeSelector
필드는disktype: hdd
라벨이 있는 노드를 선택하도록 설정됩니다.
KnativeEventing CR 예
apiVersion: operator.knative.dev/v1beta1
kind: KnativeEventing
metadata:
name: knative-eventing
namespace: knative-eventing
spec:
workloads:
- name: eventing-controller
readinessProbes: 1
- container: controller
timeoutSeconds: 10
resources:
- container: eventing-controller
requests:
cpu: 300m
memory: 100Mi
limits:
cpu: 1000m
memory: 250Mi
replicas: 3
labels:
example-label: label
annotations:
example-annotation: annotation
nodeSelector:
disktype: hdd
- 1
준비
및 활성 상태 프로브 덮어쓰기를 사용하여프로브
처리기와 관련된 필드를 제외하고 Kubernetes API에 지정된 대로 배포 컨테이너에서 프로브의 모든 필드를 덮어쓸 수 있습니다.exec
,grpc
,httpGet
,tcpSocket
.
KnativeEventing
CR 레이블 및 주석 설정은 배포 자체와 결과 Pod 모두에 대한 배포 레이블 및 주석을 재정의합니다.
10.1.2. 소비자 그룹 ID 및 주제 이름 수정
트리거, 브로커 및 채널에서 사용하는 소비자 그룹 ID 및 주제 이름을 생성하기 위한 템플릿을 변경할 수 있습니다.
사전 요구 사항
- OpenShift Container Platform에 대한 클러스터 또는 전용 관리자 권한이 있습니다.
-
OpenShift Serverless Operator, Knative Eventing 및
KnativeKafka
CR(사용자 정의 리소스)이 OpenShift Container Platform 클러스터에 설치되어 있습니다. - 프로젝트를 생성하거나 OpenShift Container Platform에서 애플리케이션 및 기타 워크로드를 생성할 수 있는 적절한 역할 및 권한이 있는 프로젝트에 액세스할 수 있습니다.
-
OpenShift CLI(
oc
)가 설치되어 있습니다.
프로세스
트리거, 브로커 및 채널에서 사용하는 소비자 그룹 ID 및 주제 이름을 생성하기 위한 템플릿을 변경하려면
KnativeKafka
리소스를 수정합니다.apiVersion: v1 kind: KnativeKafka metadata: name: knative-kafka namespace: knative-eventing # ... spec: config: config-kafka-features: triggers.consumergroup.template: <template> 1 brokers.topic.template: <template> 2 channels.topic.template: <template> 3
- 1
- 트리거에서 사용하는 소비자 그룹 ID를 생성하기 위한 템플릿입니다. 유효한 Go
텍스트/템플릿
값을 사용합니다. 기본값은"knative-trigger-{{ .Namespace }}-{{ .Name }}"
입니다. - 2
- 브로커가 사용하는 Kafka 주제 이름을 생성하기 위한 템플릿입니다. 유효한 Go
텍스트/템플릿
값을 사용합니다. 기본값은"knative-broker-{{ .Namespace }}-{{ .Name }}"
입니다. - 3
- 채널에서 사용하는 Kafka 주제 이름을 생성하기 위한 템플릿입니다. 유효한 Go
텍스트/템플릿
값을 사용합니다. 기본값은"messaging-kafka.{{ .Namespace }}.{{ .Name }}"
입니다.
템플릿 구성 예
apiVersion: v1 kind: KnativeKafka metadata: name: knative-kafka namespace: knative-eventing # ... spec: config: config-kafka-features: triggers.consumergroup.template: "{% raw %}"knative-trigger-{{ .Namespace }}-{{ .Name }}-{{ .annotations.my-annotation }}"{% endraw %}" brokers.topic.template: "{% raw %}"knative-broker-{{ .Namespace }}-{{ .Name }}-{{ .annotations.my-annotation }}"{% endraw %}" channels.topic.template: "{% raw %}"messaging-kafka.{{ .Namespace }}.{{ .Name }}-{{ .annotations.my-annotation }}"{% endraw %}"
KnativeKafka
YAML 파일을 적용합니다.$ oc apply -f <knative_kafka_filename>
추가 리소스