8장. 설치 파일을 사용하여 Apache Kafka용 스트림 배포
Apache Kafka 배포 파일 의 Streams를 다운로드하여 사용하여 Apache Kafka 구성 요소의 Streams를 OpenShift 클러스터에 배포합니다.
Apache Kafka의 스트림은 Strimzi 0.46.x를 기반으로 합니다. OpenShift 4.16에서 4.20에 Apache Kafka 3.0용 Streams를 배포할 수 있습니다.
설치 파일을 사용하여 Apache Kafka용 Streams를 배포하는 단계는 다음과 같습니다.
- Cluster Operator 배포
Cluster Operator를 사용하여 다음을 배포합니다.
필요한 경우 요구 사항에 따라 다음 Kafka 구성 요소를 배포합니다.
이 가이드에서 명령을 실행하려면 OpenShift 사용자에게 RBAC(역할 기반 액세스 제어) 및 CRD를 관리할 수 있는 권한이 있어야 합니다.
8.1. Cluster Operator 배포 링크 복사링크가 클립보드에 복사되었습니다!
Apache Kafka용 Streams를 배포하는 첫 번째 단계는 OpenShift 클러스터 내에서 Kafka 클러스터를 배포하고 관리하는 Cluster Operator를 설치하는 것입니다. 단일 명령은 install/cluster-operator 폴더의 모든 설치 파일을 적용합니다. oc apply -f ./install/cluster-operator.
이 명령은 다음 리소스를 포함하여 Kafka 배포를 생성하고 관리하는 데 필요한 모든 것을 설정합니다.
-
Cluster Operator(
배포,ConfigMap) -
Apache Kafka CRD용 스트림 (
CustomResourceDefinition) -
RBAC 리소스(
ClusterRole,ClusterRoleBinding,RoleBinding) -
서비스 계정(
ServiceAccount)
CustomResourceDefinition, ClusterRole , 과 같은 클러스터 범위 리소스에는 설치에 대한 관리자 권한이 필요합니다. 설치하기 전에 ClusterRole BindingClusterRole 사양을 검토하여 불필요한 권한을 부여하지 않는 것이 좋습니다.
설치 후 Cluster Operator는 일반 Deployment 로 실행되어 Kafka 리소스의 업데이트를 확인합니다. 배포에 액세스할 수 있는 권한이 있는 표준(비관리자) OpenShift 사용자는 해당 사용자를 구성할 수 있습니다. 클러스터 관리자는 표준 사용자에게 Apache Kafka 사용자 정의 리소스에 대한 Streams를 관리하는 데 필요한 권한을 부여할 수도 있습니다.
기본적으로 Cluster Operator의 단일 복제본이 배포됩니다. 리더 선택 항목이 있는 복제본을 추가하여 중단 시 추가 Cluster Operator가 대기 상태가 되도록 할 수 있습니다. 자세한 내용은 10.6.4절. “리더 선택으로 여러 Cluster Operator 복제본 실행”의 내용을 참조하십시오.
8.1.1. Cluster Operator에서 감시하는 네임스페이스 지정 링크 복사링크가 클립보드에 복사되었습니다!
Cluster Operator는 Kafka 리소스가 배포된 네임스페이스의 업데이트를 감시합니다. Cluster Operator를 배포할 때 OpenShift 클러스터에서 조사할 네임스페이스를 지정합니다. 다음 네임스페이스를 지정할 수 있습니다.
- 선택한 단일 네임스페이스 (Cluster Operator를 포함하는 동일한 네임스페이스)
- 선택한 여러 네임스페이스
- 클러스터의 모든 네임스페이스
여러 선택한 네임스페이스를 조사하면 처리 오버헤드가 증가하여 성능에 가장 큰 영향을 미칩니다. 네임스페이스 모니터링에 대한 성능을 최적화하려면 일반적으로 단일 네임스페이스를 조사하거나 전체 클러스터를 모니터링하는 것이 좋습니다. 단일 네임스페이스를 모니터링하면 네임스페이스별 리소스를 집중적으로 모니터링할 수 있지만 모든 네임스페이스를 모니터링하면 모든 네임스페이스에서 클러스터의 리소스를 포괄적으로 볼 수 있습니다.
Cluster Operator는 다음 리소스의 변경 사항을 감시합니다.
-
Kafka클러스터용 Kafka입니다. -
Kafka Connect클러스터용 KafkaConnect입니다. -
Kafka Connect 클러스터에서 커넥터를 생성하고 관리하기 위한
KafkaConnector입니다. -
Kafka MirrorMaker 2인스턴스의 KafkaMirrorMaker2입니다. -
Kafka 브리지인스턴스용 KafkaBridge. -
Cruise Control 최적화 요청에 대한
KafkaRebalance.
OpenShift 클러스터에서 이러한 리소스 중 하나가 생성되면 Operator가 리소스에서 클러스터 설명을 가져오고 Deployments, Pods, Services 및 ConfigMaps와 같은 필요한 OpenShift 리소스를 생성하여 리소스에 대한 새 클러스터 생성을 시작합니다.
Kafka 리소스가 업데이트될 때마다 Operator는 리소스의 클러스터를 구성하는 OpenShift 리소스에서 해당 업데이트를 수행합니다.
리소스가 패치 또는 삭제된 다음 다시 생성되어 리소스의 클러스터를 클러스터의 원하는 상태를 반영하도록 합니다. 이 작업으로 인해 롤링 업데이트가 발생하여 서비스가 중단될 수 있습니다.
리소스가 삭제되면 Operator는 클러스터 배포를 취소하고 관련 OpenShift 리소스를 모두 삭제합니다.
Cluster Operator는 OpenShift 클러스터에서 하나, 여러 또는 모든 네임스페이스를 조사할 수 있지만 Topic Operator 및 User Operator는 단일 네임스페이스에서 KafkaTopic 및 KafkaUser 리소스를 조사합니다. 자세한 내용은 1.2.1절. “OpenShift 네임스페이스에서 Apache Kafka 리소스에 대한 스트림 감시”의 내용을 참조하십시오.
8.1.2. 단일 네임스페이스를 조사하기 위해 Cluster Operator 배포 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에서는 OpenShift 클러스터의 단일 네임스페이스에서 Streams for Apache Kafka 리소스를 조사하기 위해 Cluster Operator를 배포하는 방법을 보여줍니다.
사전 요구 사항
-
CustomResourceDefinition및 RBAC(ClusterRole,RoleBinding) 리소스를 만들고 관리할 수 있는 권한이 있는 계정이 필요합니다.
프로세스
Cluster Operator를 설치할 네임스페이스를 사용하도록 Apache Kafka 설치 파일의 Streams를 편집합니다.
예를 들어 이 절차에서는 Cluster Operator가 네임스페이스
my-cluster-operator-namespace에 설치됩니다.Linux에서 다음을 사용하십시오.
sed -i 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yamlMacOS에서 다음을 사용하십시오.
sed -i '' 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yamlCluster Operator를 배포합니다.
oc create -f install/cluster-operator -n my-cluster-operator-namespace배포 상태를 확인합니다.
oc get deployments -n my-cluster-operator-namespace출력에 배포 이름 및 준비 상태 표시
NAME READY UP-TO-DATE AVAILABLE strimzi-cluster-operator 1/1 1 1READY는 ready/expected 복제본 수를 표시합니다.AVAILABLE출력에1이 표시되면 배포가 성공적으로 수행됩니다.
8.1.3. 여러 네임스페이스를 조사하기 위해 Cluster Operator 배포 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에서는 OpenShift 클러스터의 여러 네임스페이스에서 Apache Kafka 리소스의 스트림을 조사하기 위해 Cluster Operator를 배포하는 방법을 보여줍니다.
사전 요구 사항
-
CustomResourceDefinition및 RBAC(ClusterRole,RoleBinding) 리소스를 만들고 관리할 수 있는 권한이 있는 계정이 필요합니다.
프로세스
Cluster Operator를 설치할 네임스페이스를 사용하도록 Apache Kafka 설치 파일의 Streams를 편집합니다.
예를 들어 이 절차에서는 Cluster Operator가 네임스페이스
my-cluster-operator-namespace에 설치됩니다.Linux에서 다음을 사용하십시오.
sed -i 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yamlMacOS에서 다음을 사용하십시오.
sed -i '' 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yamlinstall/cluster-operator/060-Deployment-strimzi-cluster-operator.yaml파일을 편집하여 Cluster Operator가STRIMZI_NAMESPACE환경 변수에 감시하는 모든 네임스페이스 목록을 추가합니다.예를 들어 이 절차에서 Cluster Operator는 네임스페이스
watched-namespace-1,watched-namespace-2,watched-namespace-3을 확인합니다.apiVersion: apps/v1 kind: Deployment spec: # ... template: spec: serviceAccountName: strimzi-cluster-operator containers: - name: strimzi-cluster-operator image: registry.redhat.io/amq-streams/strimzi-rhel9-operator:3.0.1 imagePullPolicy: IfNotPresent env: - name: STRIMZI_NAMESPACE value: watched-namespace-1,watched-namespace-2,watched-namespace-3나열된 각 네임스페이스에 대해
RoleBinding을설치합니다.이 예제에서는 이러한 명령에서
watched-namespace-namespace를 이전 단계에 나열된 네임스페이스로 교체하여 watched-namespace-1,,watched-namespace-2watched-namespace-3:을 반복합니다.oc create -f install/cluster-operator/020-RoleBinding-strimzi-cluster-operator.yaml -n <watched_namespace> oc create -f install/cluster-operator/023-RoleBinding-strimzi-cluster-operator.yaml -n <watched_namespace> oc create -f install/cluster-operator/031-RoleBinding-strimzi-cluster-operator-entity-operator-delegation.yaml -n <watched_namespace>Cluster Operator를 배포합니다.
oc create -f install/cluster-operator -n my-cluster-operator-namespace배포 상태를 확인합니다.
oc get deployments -n my-cluster-operator-namespace출력에 배포 이름 및 준비 상태 표시
NAME READY UP-TO-DATE AVAILABLE strimzi-cluster-operator 1/1 1 1READY는 ready/expected 복제본 수를 표시합니다.AVAILABLE출력에1이 표시되면 배포가 성공적으로 수행됩니다.
8.1.4. 모든 네임스페이스를 조사하기 위해 Cluster Operator 배포 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에서는 OpenShift 클러스터의 모든 네임스페이스에서 Apache Kafka 리소스에 대한 Streams를 조사하기 위해 Cluster Operator를 배포하는 방법을 보여줍니다.
이 모드에서 실행하면 Cluster Operator가 생성된 새 네임스페이스의 클러스터를 자동으로 관리합니다.
사전 요구 사항
-
CustomResourceDefinition및 RBAC(ClusterRole,RoleBinding) 리소스를 만들고 관리할 수 있는 권한이 있는 계정이 필요합니다.
프로세스
Cluster Operator를 설치할 네임스페이스를 사용하도록 Apache Kafka 설치 파일의 Streams를 편집합니다.
예를 들어 이 절차에서는 Cluster Operator가 네임스페이스
my-cluster-operator-namespace에 설치됩니다.Linux에서 다음을 사용하십시오.
sed -i 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yamlMacOS에서 다음을 사용하십시오.
sed -i '' 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yamlinstall/cluster-operator/060-Deployment-strimzi-cluster-operator.yaml파일을 편집하여STRIMZI_NAMESPACE환경 변수의 값을*로 설정합니다.apiVersion: apps/v1 kind: Deployment spec: # ... template: spec: # ... serviceAccountName: strimzi-cluster-operator containers: - name: strimzi-cluster-operator image: registry.redhat.io/amq-streams/strimzi-rhel9-operator:3.0.1 imagePullPolicy: IfNotPresent env: - name: STRIMZI_NAMESPACE value: "*" # ...Cluster Operator에 모든 네임스페이스에 대한 클러스터 전체 액세스 권한을 부여하는
ClusterRoleBindings를 생성합니다.oc create clusterrolebinding strimzi-cluster-operator-namespaced --clusterrole=strimzi-cluster-operator-namespaced --serviceaccount my-cluster-operator-namespace:strimzi-cluster-operator oc create clusterrolebinding strimzi-cluster-operator-watched --clusterrole=strimzi-cluster-operator-watched --serviceaccount my-cluster-operator-namespace:strimzi-cluster-operator oc create clusterrolebinding strimzi-cluster-operator-entity-operator-delegation --clusterrole=strimzi-entity-operator --serviceaccount my-cluster-operator-namespace:strimzi-cluster-operatorOpenShift 클러스터에 Cluster Operator를 배포합니다.
oc create -f install/cluster-operator -n my-cluster-operator-namespace배포 상태를 확인합니다.
oc get deployments -n my-cluster-operator-namespace출력에 배포 이름 및 준비 상태 표시
NAME READY UP-TO-DATE AVAILABLE strimzi-cluster-operator 1/1 1 1READY는 ready/expected 복제본 수를 표시합니다.AVAILABLE출력에1이 표시되면 배포가 성공적으로 수행됩니다.