1.2. Apache Kafka Operator용 스트림
Apache Kafka Operator용 스트림은 OpenShift에서 Kafka를 효과적으로 관리하기 위해 전문 운영 지식을 갖추고 있습니다. 각 Operator는 고유한 기능을 수행합니다.
- Cluster Operator
- Cluster Operator는 OpenShift에서 Apache Kafka 클러스터의 배포 및 관리를 처리합니다. Kafka 브로커 및 기타 Kafka 구성 요소 및 리소스의 설정을 자동화합니다.
- 주제 Operator
- Topic Operator는 Kafka 클러스터 내의 주제 생성, 구성 및 삭제를 관리합니다.
- 사용자 Operator
- User Operator는 Kafka 브로커에 액세스해야 하는 Kafka 사용자를 관리합니다.
Apache Kafka용 Streams를 배포할 때 먼저 Cluster Operator를 배포합니다. 그런 다음 Cluster Operator가 Kafka 배포를 처리할 준비가 되었습니다. Cluster Operator(권장) 또는 독립 실행형 Operator를 사용하여 Topic Operator 및 User Operator를 배포할 수도 있습니다. Cluster Operator에서 관리하지 않는 Kafka 클러스터와 함께 독립 실행형 Operator를 사용합니다.
Topic Operator 및 User Operator는 Entity Operator의 일부입니다. Cluster Operator는 Entity Operator 구성에 따라 Operator를 하나 또는 둘 다 배포할 수 있습니다.
독립 실행형 Operator를 배포하려면 Kafka 클러스터에 연결할 환경 변수를 설정해야 합니다. Cluster Operator에 의해 설정되므로 Operator를 배포하는 경우 이러한 환경 변수를 설정할 필요가 없습니다.
1.2.1. OpenShift 네임스페이스에서 Apache Kafka 리소스에 대한 스트림 감시 링크 복사링크가 클립보드에 복사되었습니다!
Operator는 OpenShift 네임스페이스에서 Apache Kafka 리소스에 대한 Streams를 감시하고 관리합니다. Cluster Operator는 OpenShift 클러스터의 단일 네임스페이스, 여러 네임스페이스 또는 모든 네임스페이스를 조사할 수 있습니다. Topic Operator 및 User Operator는 단일 네임스페이스를 조사할 수 있습니다.
-
Cluster Operator에서
Kafka리소스 감시 -
Topic Operator는
KafkaTopic리소스 감시 -
User Operator는
KafkaUser리소스 감시
Topic Operator 및 User Operator는 네임스페이스에서 단일 Kafka 클러스터만 조사할 수 있습니다. 또한 단일 Kafka 클러스터에만 연결할 수 있습니다.
여러 Topic Operator가 동일한 네임스페이스를 조사하는 경우 이름 충돌 및 주제 삭제가 발생할 수 있습니다. 이는 각 Kafka 클러스터에서 이름이 동일한 Kafka 주제(예: __consumer_offsets)를 사용하기 때문입니다. 하나의 Topic Operator만 지정된 네임스페이스를 감시하는지 확인합니다.
단일 네임스페이스가 있는 여러 User Operator를 사용하는 경우 지정된 사용자 이름이 있는 사용자가 두 개 이상의 Kafka 클러스터에 존재할 수 있습니다.
Cluster Operator를 사용하여 Topic Operator 및 User Operator를 배포하는 경우 기본적으로 Cluster Operator에서 배포한 Kafka 클러스터를 확인합니다. Operator 구성에서 watchedNamespace 를 사용하여 네임스페이스를 지정할 수도 있습니다.
각 Operator의 독립 실행형 배포의 경우 구성에서 조사할 Kafka 클러스터에 대한 네임스페이스 및 연결을 지정합니다.
1.2.2. RBAC 리소스 관리 링크 복사링크가 클립보드에 복사되었습니다!
Cluster Operator는 OpenShift 리소스에 액세스해야 하는 Apache Kafka 구성 요소용 Streams에 대한 RBAC(역할 기반 액세스 제어) 리소스를 생성하고 관리합니다.
Cluster Operator가 작동하려면 Kafka 및 KafkaConnect 와 같은 Kafka 리소스와 상호 작용하기 위해 ConfigMap,Pod,Deployment, Service 와 같은 관리형 리소스와 상호 작용하려면 OpenShift 클러스터 내에서 권한이 필요합니다.
권한은 다음 OpenShift RBAC 리소스를 통해 지정됩니다.
-
ServiceAccount -
Role및ClusterRole -
RoleBinding및ClusterRoleBinding
1.2.2.1. Apache Kafka 구성 요소에 대한 Streams에 권한 위임 링크 복사링크가 클립보드에 복사되었습니다!
Cluster Operator는 strimzi-cluster-operator 라는 서비스 계정에서 실행됩니다. Apache Kafka 구성 요소에 대한 Streams에 대한 RBAC 리소스를 생성할 수 있는 권한을 부여하는 클러스터 역할이 할당됩니다. 역할 바인딩은 클러스터 역할을 서비스 계정과 연결합니다.
OpenShift는 하나의 ServiceAccount 에서 작동하는 구성 요소가 ServiceAccount 에 없는 다른 ServiceAccount 권한을 부여하지 못하도록 합니다. Cluster Operator는 관리하는 리소스에 필요한 RoleBinding 및 ClusterRoleBinding RBAC 리소스를 생성하므로 동일한 권한을 부여하는 역할이 필요합니다.
다음 섹션에서는 Cluster Operator에 필요한 RBAC 리소스에 대해 설명합니다.
1.2.2.2. ClusterRole 리소스 링크 복사링크가 클립보드에 복사되었습니다!
Cluster Operator는 ClusterRole 리소스를 사용하여 리소스에 필요한 액세스 권한을 제공합니다. OpenShift 클러스터 설정에 따라 클러스터 관리자가 클러스터 역할을 생성해야 할 수 있습니다.
클러스터 관리자 권한은 ClusterRole 리소스 생성에만 필요합니다. Cluster Operator는 클러스터 관리자 계정에서 실행되지 않습니다.
RBAC 리소스는 최소 권한 원칙을 따르고 Kafka 구성 요소의 클러스터를 작동하는 데 Cluster Operator에 필요한 권한만 포함합니다.
권한을 위임하려면 모든 클러스터 역할이 Cluster Operator에 필요합니다.
| 이름 | 설명 |
|---|---|
|
| 피연산자를 배포 및 관리하기 위해 Cluster Operator에서 사용하는 네임스페이스 범위 리소스에 대한 액세스 권한입니다. |
|
| 피연산자를 배포 및 관리하기 위해 Cluster Operator에서 사용하는 클러스터 범위 리소스에 대한 액세스 권한. |
|
| 리더 선택을 위해 Cluster Operator가 사용하는 액세스 권한 |
|
| Cluster Operator가 Apache Kafka 사용자 정의 리소스에 대한 Streams를 감시하고 관리하는 데 사용하는 액세스 권한. |
|
| 랙 인식이 사용되는 경우 Kafka 브로커가 OpenShift 작업자 노드에서 토폴로지 레이블을 가져올 수 있도록 허용하는 액세스 권한입니다. |
|
| Kafka 사용자 및 주제를 관리하기 위해 Topic 및 User Operators에서 사용하는 권한에 액세스합니다. |
|
| 랙 인식이 사용될 때 Kafka Connect,MirrorMaker(1 및 2) 및 Kafka Bridge를 허용하여 OpenShift 작업자 노드에서 토폴로지 레이블을 가져올 수 있는 액세스 권한입니다. |
1.2.2.3. ClusterRoleBinding 리소스 링크 복사링크가 클립보드에 복사되었습니다!
Cluster Operator는 ClusterRoleBinding 및 RoleBinding 리소스를 사용하여 ClusterRole 을 ServiceAccount 와 연결합니다. 클러스터 역할 바인딩은 클러스터 범위 리소스가 포함된 클러스터 역할에 필요합니다.
| 이름 | 설명 |
|---|---|
|
|
|
|
|
Cluster Operator에 |
|
|
|
| 이름 | 설명 |
|---|---|
|
|
|
|
|
Cluster Operator에 |
|
|
|
|
|
Cluster Operator에 |
1.2.2.4. ServiceAccount 리소스 링크 복사링크가 클립보드에 복사되었습니다!
Cluster Operator는 strimzi-cluster-operator ServiceAccount 를 사용하여 실행됩니다. 이 서비스 계정은 피연산자를 관리하는 데 필요한 권한을 부여합니다. Cluster Operator는 추가 ClusterRoleBinding 및 RoleBinding 리소스를 생성하여 이러한 RBAC 권한 중 일부를 피연산자에 위임합니다.
각 피연산자는 Cluster Operator가 생성한 자체 서비스 계정을 사용합니다. 이를 통해 Cluster Operator는 최소 권한 원칙을 따르고 피연산자가 실제로 필요한 액세스 권한만 부여할 수 있습니다.
| 이름 | 사용자 |
|---|---|
|
| Zookeeper Pod |
|
| Kafka 브로커 Pod |
|
| Entity Operator |
|
| cruise Control Pod |
|
| Kafka Exporter Pod |
|
| Kafka Connect Pod |
|
| MirrorMaker Pod |
|
| MirrorMaker 2 Pod |
|
| Kafka 브리지 Pod |
1.2.3. Pod 리소스 관리 링크 복사링크가 클립보드에 복사되었습니다!
StrimziPodSet 사용자 정의 리소스는 Streams for Apache Kafka에서 Kafka, Kafka Connect 및 MirrorMaker 2 Pod를 생성하고 관리하는 데 사용됩니다. Zoo Cryostat를 사용하는 경우, Zoo Cryostat Pod도 StrimziPodSet 리소스를 사용하여 생성 및 관리됩니다.
StrimziPodSet 리소스를 생성, 업데이트 또는 삭제할 수 없습니다. StrimziPodSet 사용자 정의 리소스는 내부적으로 사용되며 리소스는 Cluster Operator에 의해서만 관리됩니다. 결과적으로 Pod를 시작하지 않고 Kafka 클러스터를 사용할 수 없는 가능성을 방지하려면 Cluster Operator가 제대로 실행되고 있어야 합니다.
OpenShift 배포 리소스는 Kafka Bridge, Kafka Exporter, Cruise Control, (precated) MirrorMaker 1, User Operator 및 Topic Operator의 Pod를 생성하고 관리하는 데 사용됩니다.