6장. 설치 아티팩트를 사용하여 AMQ Streams 배포


AMQ Streams 배포를 위한 환경을 준비하면 OpenShift 클러스터에 AMQ Streams 를 배포할 수 있습니다. 릴리스 아티팩트와 함께 제공되는 배포 파일을 사용할 수 있습니다.

배포 파일을 사용하여 Kafka 클러스터를 생성합니다.

선택적으로 요구 사항에 따라 다음 Kafka 구성 요소를 배포할 수 있습니다.

AMQ Streams는 Strimzi 0.29.x를 기반으로 합니다. OpenShift 4.8에서 4.11로 AMQ Streams 2.2를 배포할 수 있습니다.

참고

이 가이드에서 명령을 실행하려면 클러스터 사용자에게 RBAC(역할 기반 액세스 제어) 및 CRD를 관리할 수 있는 권한이 있어야 합니다.

6.1. Kafka 클러스터 생성

Cluster Operator를 사용하여 Kafka 클러스터를 관리할 수 있으려면 Kafka 리소스로 배포해야 합니다. AMQ Streams는 이 작업을 수행할 배포 파일 예를 제공합니다. 이러한 파일을 사용하여 Topic Operator 및 User Operator를 동시에 배포할 수 있습니다.

Kafka 클러스터를 Kafka 리소스로 배포하지 않은 경우 Cluster Operator를 사용하여 관리할 수 없습니다. 이는 예를 들어 OpenShift 외부에서 실행되는 Kafka 클러스터에 적용됩니다. 하지만 Topic Operator 및 User Operator를 독립 실행형 구성 요소로 배포하고 사용할 수 있습니다.

참고

Cluster Operator는 OpenShift 클러스터에서 하나, 여러 개 또는 모든 네임스페이스를 조사할 수 있습니다. Topic Operator 및 User Operator는 단일 네임스페이스에서 KafkaTopicKafkaUser 리소스를 조사합니다. 자세한 내용은 AMQ Streams Operator를 사용하여 네임스페이스 감시를 참조하십시오.

6.1.1. Topic Operator 및 User Operator를 사용하여 Kafka 클러스터 배포

AMQ Streams에서 관리하는 Kafka 클러스터와 함께 Topic Operator 및 User Operator를 사용하려면 다음 배포 단계를 수행합니다.

  1. Cluster Operator 배포
  2. Cluster Operator를 사용하여 다음을 배포합니다.

6.1.2. 독립 실행형 주제 Operator 및 사용자 Operator 배포

AMQ Streams에서 관리하지 않는 Kafka 클러스터에서 Topic Operator 및 User Operator를 사용하려면 다음 배포 단계를 수행합니다.

6.1.3. Cluster Operator 배포

Cluster Operator는 OpenShift 클러스터 내에서 Apache Kafka 클러스터를 배포하고 관리합니다.

이 섹션의 절차에서는 다음 중 하나를 조사하기 위해 Cluster Operator를 배포하는 방법을 설명합니다.

6.1.3.1. Cluster Operator 배포 옵션 조사

Cluster Operator가 실행 중이면 Kafka 리소스의 업데이트를 감시하기 시작합니다.

Cluster Operator를 배포하여 Kafka 리소스를 조사할 수 있습니다.

  • 단일 네임스페이스(Cluster Operator가 포함된 동일한 네임스페이스)
  • 다중 네임스페이스
  • 모든 네임스페이스
참고

AMQ Streams는 배포 프로세스를 더 쉽게 수행할 수 있도록 예제 YAML 파일을 제공합니다.

Cluster Operator는 다음 리소스에 대한 변경 사항을 감시합니다.

  • Kafka 클러스터의 Kafka입니다.
  • Kafka Connect 클러스터의 KafkaConnect.
  • Kafka Connect 클러스터에서 커넥터를 생성하고 관리하기 위한 KafkaConnector.
  • Kafka MirrorMaker 인스턴스인 KafkaMirrorMaker입니다.
  • Kafka MirrorMaker 2.0 인스턴스인 KafkaMirrorMaker2 입니다.
  • Kafka 브리지 인스턴스용 KafkaBridge.
  • Cruise Control 최적화 요청에 대한 KafkaRebalance

OpenShift 클러스터에 이러한 리소스 중 하나가 생성되면 Operator가 리소스에서 클러스터 설명을 가져오고 StatefulSets, Services 및 ConfigMaps와 같은 필요한 OpenShift 리소스를 생성하여 리소스에 대한 새 클러스터 생성을 시작합니다.

Kafka 리소스가 업데이트될 때마다 Operator는 리소스에 대한 클러스터를 구성하는 OpenShift 리소스에서 해당 업데이트를 수행합니다.

리소스를 패치하거나 삭제한 다음 다시 생성하여 리소스의 클러스터를 원하는 클러스터 상태를 반영합니다. 이 작업으로 인해 서비스 중단으로 이어질 수 있는 롤링 업데이트가 발생할 수 있습니다.

리소스가 삭제되면 Operator는 클러스터 배포를 취소하고 관련된 모든 OpenShift 리소스를 삭제합니다.

6.1.3.2. 단일 네임스페이스를 조사하기 위해 Cluster Operator 배포

다음 절차에서는 OpenShift 클러스터의 단일 네임스페이스에서 AMQ Streams 리소스를 조사하기 위해 Cluster Operator를 배포하는 방법을 설명합니다.

사전 요구 사항

  • 이 절차를 수행하려면 CustomResourceDefinitions,ClusterRolesClusterRoleBindings 를 생성할 수 있는 OpenShift 사용자 계정을 사용해야 합니다. OpenShift 클러스터에서 RBAC(역할 기본 액세스 제어)를 사용하는 것은 일반적으로 system:admin 과 같은 OpenShift 클러스터 관리자만 생성, 편집 및 삭제할 수 있는 권한이 있음을 의미합니다.

절차

  1. AMQ Streams 설치 파일을 편집하여 Cluster Operator가 설치될 네임스페이스를 사용합니다.

    예를 들어 이 절차에서는 Cluster Operator가 < my_cluster_operator_namespace>에 설치됩니다.

    Linux에서 다음을 사용합니다.

    sed -i 's/namespace: .*/namespace: <my_cluster_operator_namespace>/' install/cluster-operator/*RoleBinding*.yaml
    Copy to Clipboard Toggle word wrap

    MacOS에서 다음을 사용합니다.

    sed -i '' 's/namespace: .*/namespace: <my_cluster_operator_namespace>/' install/cluster-operator/*RoleBinding*.yaml
    Copy to Clipboard Toggle word wrap
  2. Cluster Operator를 배포합니다.

    oc create -f install/cluster-operator -n <my_cluster_operator_namespace>
    Copy to Clipboard Toggle word wrap
  3. 배포 상태를 확인합니다.

    oc get deployments -n <my_cluster_operator_namespace>
    Copy to Clipboard Toggle word wrap

    출력에 배포 이름과 준비 상태가 표시됩니다.

    NAME                      READY  UP-TO-DATE  AVAILABLE
    strimzi-cluster-operator  1/1    1           1
    Copy to Clipboard Toggle word wrap

    READY 에는 준비되거나 예상된 복제본 수가 표시됩니다. AVAILABLE 출력에 1 이 표시되면 배포가 성공적으로 수행됩니다.

6.1.3.3. 여러 네임스페이스를 조사하기 위해 Cluster Operator 배포

다음 절차에서는 Cluster Operator를 배포하여 OpenShift 클러스터의 여러 네임스페이스에서 AMQ Streams 리소스를 조사하는 방법을 설명합니다.

사전 요구 사항

  • 이 절차를 수행하려면 CustomResourceDefinitions,ClusterRolesClusterRoleBindings 를 생성할 수 있는 OpenShift 사용자 계정을 사용해야 합니다. OpenShift 클러스터에서 RBAC(역할 기본 액세스 제어)를 사용하는 것은 일반적으로 system:admin 과 같은 OpenShift 클러스터 관리자만 생성, 편집 및 삭제할 수 있는 권한이 있음을 의미합니다.

절차

  1. AMQ Streams 설치 파일을 편집하여 Cluster Operator가 설치될 네임스페이스를 사용합니다.

    예를 들어 이 절차에서는 Cluster Operator가 < my_cluster_operator_namespace>에 설치됩니다.

    Linux에서 다음을 사용합니다.

    sed -i 's/namespace: .*/namespace: <my_cluster_operator_namespace>/' install/cluster-operator/*RoleBinding*.yaml
    Copy to Clipboard Toggle word wrap

    MacOS에서 다음을 사용합니다.

    sed -i '' 's/namespace: .*/namespace: <my_cluster_operator_namespace>/' install/cluster-operator/*RoleBinding*.yaml
    Copy to Clipboard Toggle word wrap
  2. install/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/amq7/amq-streams-rhel8-operator:2.2.2
            imagePullPolicy: IfNotPresent
            env:
            - name: STRIMZI_NAMESPACE
              value: watched-namespace-1,watched-namespace-2,watched-namespace-3
    Copy to Clipboard Toggle word wrap
  3. 나열된 각 네임스페이스에 대해 RoleBindings 를 설치합니다.

    이 예제에서는 이 명령에서 watched-namespace 를 이전 단계에 나열된 네임스페이스로 교체하고 watched-namespace-1,watched-namespace-2,watched-namespace-3 에 대해 반복합니다.

    oc create -f install/cluster-operator/020-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>
    Copy to Clipboard Toggle word wrap
  4. Cluster Operator를 배포합니다.

    oc create -f install/cluster-operator -n <my_cluster_operator_namespace>
    Copy to Clipboard Toggle word wrap
  5. 배포 상태를 확인합니다.

    oc get deployments -n <my_cluster_operator_namespace>
    Copy to Clipboard Toggle word wrap

    출력에 배포 이름과 준비 상태가 표시됩니다.

    NAME                      READY  UP-TO-DATE  AVAILABLE
    strimzi-cluster-operator  1/1    1           1
    Copy to Clipboard Toggle word wrap

    READY 에는 준비되거나 예상된 복제본 수가 표시됩니다. AVAILABLE 출력에 1 이 표시되면 배포가 성공적으로 수행됩니다.

6.1.3.4. 모든 네임스페이스를 조사하기 위해 Cluster Operator 배포

다음 절차에서는 OpenShift 클러스터의 모든 네임스페이스에서 AMQ Streams 리소스를 조사하기 위해 Cluster Operator를 배포하는 방법을 설명합니다.

이 모드에서 실행하면 Cluster Operator가 생성된 새 네임스페이스의 클러스터를 자동으로 관리합니다.

사전 요구 사항

  • 이 절차를 수행하려면 CustomResourceDefinitions,ClusterRolesClusterRoleBindings 를 생성할 수 있는 OpenShift 사용자 계정을 사용해야 합니다. OpenShift 클러스터에서 RBAC(역할 기본 액세스 제어)를 사용하는 것은 일반적으로 system:admin 과 같은 OpenShift 클러스터 관리자만 생성, 편집 및 삭제할 수 있는 권한이 있음을 의미합니다.

절차

  1. AMQ Streams 설치 파일을 편집하여 Cluster Operator가 설치될 네임스페이스를 사용합니다.

    예를 들어 이 절차에서는 Cluster Operator가 < my_cluster_operator_namespace>에 설치됩니다.

    Linux에서 다음을 사용합니다.

    sed -i 's/namespace: .*/namespace: <my_cluster_operator_namespace>/' install/cluster-operator/*RoleBinding*.yaml
    Copy to Clipboard Toggle word wrap

    MacOS에서 다음을 사용합니다.

    sed -i '' 's/namespace: .*/namespace: <my_cluster_operator_namespace>/' install/cluster-operator/*RoleBinding*.yaml
    Copy to Clipboard Toggle word wrap
  2. install/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/amq7/amq-streams-rhel8-operator:2.2.2
            imagePullPolicy: IfNotPresent
            env:
            - name: STRIMZI_NAMESPACE
              value: "*"
            # ...
    Copy to Clipboard Toggle word wrap
  3. 모든 네임스페이스에 대한 클러스터 전체 액세스 권한을 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-entity-operator-delegation --clusterrole=strimzi-entity-operator --serviceaccount <my_cluster_operator_namespace>:strimzi-cluster-operator
    Copy to Clipboard Toggle word wrap

    & lt;my_cluster_operator_namespace >를 Cluster Operator를 설치할 네임스페이스로 바꿉니다.

  4. OpenShift 클러스터에 Cluster Operator를 배포합니다.

    oc create -f install/cluster-operator -n <my_cluster_operator_namespace>
    Copy to Clipboard Toggle word wrap
  5. 배포 상태를 확인합니다.

    oc get deployments -n <my_cluster_operator_namespace>
    Copy to Clipboard Toggle word wrap

    출력에 배포 이름과 준비 상태가 표시됩니다.

    NAME                      READY  UP-TO-DATE  AVAILABLE
    strimzi-cluster-operator  1/1    1           1
    Copy to Clipboard Toggle word wrap

    READY 에는 준비되거나 예상된 복제본 수가 표시됩니다. AVAILABLE 출력에 1 이 표시되면 배포가 성공적으로 수행됩니다.

6.1.4. Kafka 배포

Apache Kafka는 내결함성 실시간 데이터 피드를 위한 오픈 소스 분산 게시-구독 메시징 시스템입니다.

이 섹션의 절차에서는 다음을 설명합니다.

Kafka를 설치할 때 AMQ Streams는 ZooKeeper 클러스터를 설치하고, Kafka를 ZooKeeper와 연결하는 데 필요한 구성을 추가합니다.

6.1.4.1. Kafka 클러스터 배포

다음 절차에서는 Cluster Operator를 사용하여 Kafka 클러스터를 OpenShift 클러스터에 배포하는 방법을 설명합니다.

배포에서는 YAML 파일을 사용하여 Kafka 리소스를 생성하는 사양을 제공합니다.

AMQ Streams는 구성 파일 예제 를 제공합니다. Kafka 배포의 경우 다음 예제가 제공됩니다.

kafka-persistent.yaml
3개의 ZooKeeper 및 3개의 Kafka 노드로 영구 클러스터를 배포합니다.
kafka-jbod.yaml
3개의 ZooKeeper 및 3개의 Kafka 노드로 영구 클러스터를 배포합니다(각각 여러 영구 볼륨을 사용).
kafka-persistent-single.yaml
단일 ZooKeeper 노드와 단일 Kafka 노드로 영구 클러스터를 배포합니다.
kafka-ephemeral.yaml
3개의 ZooKeeper 및 3개의 Kafka 노드로 임시 클러스터를 배포합니다.
kafka-ephemeral-single.yaml
3개의 ZooKeeper 노드와 단일 Kafka 노드로 임시 클러스터를 배포합니다.

이 절차에서는 임시 및 영구 Kafka 클러스터 배포에 대한 예제를 사용합니다.

임시 클러스터
일반적으로 임시(또는 임시) Kafka 클러스터는 프로덕션이 아닌 개발 및 테스트 목적으로 적합합니다. 이 배포에서는 브로커 정보(축소용) 및 주제 또는 파티션( Kafka용)을 저장하는 데 emptyDir 볼륨을 사용합니다. emptyDir 볼륨을 사용하면 콘텐츠가 Pod 라이프 사이클과 엄격하게 관련되어 있으며 Pod가 중단되면 삭제됩니다.
영구 클러스터

영구 Kafka 클러스터는 영구 볼륨을 사용하여 ZooKeeper 및 Kafka 데이터를 저장합니다. PersistentVolumePersistentVolumeClaim 을 사용하여 실제 유형의 PersistentVolume 과 독립적되도록 합니다. PersistentVolumeClaimStorageClass 를 사용하여 자동 볼륨 프로비저닝을 트리거할 수 있습니다. StorageClass 를 지정하지 않으면 OpenShift에서 기본 StorageClass 를 사용하려고 합니다.

다음 예제에서는 몇 가지 일반적인 유형의 영구 볼륨을 보여줍니다.

  • OpenShift 클러스터가 Amazon AWS에서 실행되는 경우 OpenShift는 Amazon EBS 볼륨을 프로비저닝할 수 있습니다.
  • OpenShift 클러스터가 Microsoft Azure에서 실행되는 경우 OpenShift는 Azure Disk Storage 볼륨을 프로비저닝할 수 있습니다.
  • OpenShift 클러스터가 Google Cloud에서 실행되는 경우 OpenShift는 영구 디스크 볼륨을 프로비저닝할 수 있습니다.
  • OpenShift 클러스터가 베어 메탈에서 실행되는 경우 OpenShift는 로컬 영구 볼륨을 프로비저닝할 수 있습니다.

예제 YAML 파일은 지원되는 최신 Kafka 버전을 지정하고 지원되는 로그 메시지 형식 버전 및broker 간 프로토콜 버전에 대한 구성을 지정합니다. Kafka 구성에 대한 inter.broker.protocol.version 속성은 지정된 Kafka 버전 (spec.kafka.version)에서 지원하는 버전이어야합니다. 속성은 Kafka 클러스터에서 사용되는 Kafka 프로토콜 버전을 나타냅니다.

Kafka 3.0.0에서 inter.broker.protocol.version3.0 이상으로 설정되면 log.message.format.version 옵션이 무시되고 설정할 필요가 없습니다.

Kafka를 업그레이드 할 때 inter.broker.protocol.version 에 대한 업데이트가 필요합니다.

예제 클러스터의 이름은 기본적으로 my-cluster 로 지정됩니다. 클러스터 이름은 리소스 이름으로 정의되며 클러스터를 배포한 후에는 변경할 수 없습니다. 클러스터를 배포하기 전에 클러스터 이름을 변경하려면 관련 YAML 파일에서 Kafka 리소스의 Kafka.metadata.name 속성을 편집합니다.

기본 클러스터 이름 및 지정된 Kafka 버전

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    version: 3.2.3
    #...
    config:
      #...
      log.message.format.version: "3.2"
      inter.broker.protocol.version: "3.2"
  # ...
Copy to Clipboard Toggle word wrap

절차

  1. 임시 또는 영구 클러스터를 생성하고 배포합니다.

    개발 또는 테스트의 경우 임시 클러스터를 사용하는 것이 좋습니다. 어떠한 경우에도 영구 클러스터를 사용할 수 있습니다.

    • 임시 클러스터를 생성하고 배포하려면 다음을 수행합니다.

      oc apply -f examples/kafka/kafka-ephemeral.yaml
      Copy to Clipboard Toggle word wrap
    • 영구 클러스터를 생성하고 배포하려면 다음을 수행합니다.

      oc apply -f examples/kafka/kafka-persistent.yaml
      Copy to Clipboard Toggle word wrap
  2. 배포 상태를 확인합니다.

    oc get pods -n <my_cluster_operator_namespace>
    Copy to Clipboard Toggle word wrap

    출력에는 Pod 이름과 준비 상태가 표시됩니다.

    NAME                        READY   STATUS    RESTARTS
    my-cluster-entity-operator  3/3     Running   0
    my-cluster-kafka-0          1/1     Running   0
    my-cluster-kafka-1          1/1     Running   0
    my-cluster-kafka-2          1/1     Running   0
    my-cluster-zookeeper-0      1/1     Running   0
    my-cluster-zookeeper-1      1/1     Running   0
    my-cluster-zookeeper-2      1/1     Running   0
    Copy to Clipboard Toggle word wrap

    my-cluster 는 Kafka 클러스터의 이름입니다.

    기본 배포를 사용하면 Entity Operator 클러스터, Kafka Pod 3개 및 3 ZooKeeper Pod를 설치합니다.

    READY 에는 준비되거나 예상된 복제본 수가 표시됩니다. STATUSRunning 으로 표시되면 배포가 성공적으로 수행됩니다.

6.1.4.2. Cluster Operator를 사용하여 Topic Operator 배포

다음 절차에서는 Cluster Operator를 사용하여 Topic Operator를 배포하는 방법을 설명합니다.

topicOperator 를 포함하도록 Kafka 리소스의 entityOperator 속성을 구성합니다. 기본적으로 Topic Operator는 Cluster Operator가 배포한 Kafka 클러스터의 네임스페이스에서 KafkaTopic 리소스를 감시합니다. 주제 Operator 사양에서 watchedNamespace 를 사용하여 네임스페이스를 지정할 수도 있습니다. 단일 Topic Operator는 단일 네임스페이스를 조사할 수 있습니다. 하나의 네임스페이스는 하나의 Topic Operator에서만 조사해야 합니다.

AMQ Streams를 사용하여 여러 Kafka 클러스터를 동일한 네임스페이스에 배포하는 경우 하나의 Kafka 클러스터에 대해서만 Topic Operator를 활성화하거나 watchedNamespace 속성을 사용하여 다른 네임스페이스를 조사하도록 Topic Operator를 구성합니다.

AMQ Streams에서 관리하지 않는 Kafka 클러스터에서 Topic Operator를 사용하려면 Topic Operator를 독립 실행형 구성 요소로 배포 해야 합니다.

entityOperatortopicOperator 속성 구성에 대한 자세한 내용은 Entity Operator 구성을 참조하십시오.

절차

  1. topicOperator 를 포함하도록 Kafka 리소스의 entityOperator 속성을 편집합니다.

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
    spec:
      #...
      entityOperator:
        topicOperator: {}
        userOperator: {}
    Copy to Clipboard Toggle word wrap
  2. EntityTopicOperatorSpec 스키마 참조에 설명된 속성을 사용하여 Topic Operator 사양 을 구성합니다.

    모든 속성이 기본값을 사용하려면 빈 오브젝트({})를 사용합니다.

  3. 리소스를 생성하거나 업데이트합니다.

    oc apply 를 사용합니다.

    oc apply -f <kafka_configuration_file>
    Copy to Clipboard Toggle word wrap
  4. 배포 상태를 확인합니다.

    oc get pods -n <my_cluster_operator_namespace>
    Copy to Clipboard Toggle word wrap

    출력에 Pod 이름과 준비 상태가 표시됩니다.

    NAME                        READY   STATUS    RESTARTS
    my-cluster-entity-operator  3/3     Running   0
    # ...
    Copy to Clipboard Toggle word wrap

    my-cluster 는 Kafka 클러스터의 이름입니다.

    READY 에는 준비되거나 예상된 복제본 수가 표시됩니다. STATUSRunning 으로 표시되면 배포가 성공적으로 수행됩니다.

6.1.4.3. Cluster Operator를 사용하여 User Operator 배포

다음 절차에서는 Cluster Operator를 사용하여 User Operator를 배포하는 방법을 설명합니다.

userOperator 를 포함하도록 Kafka 리소스의 entityOperator 속성을 구성합니다. 기본적으로 User Operator는 Kafka 클러스터 배포의 네임스페이스에서 KafkaUser 리소스를 감시합니다. User Operator 사양에서 watchedNamespace 를 사용하여 네임스페이스를 지정할 수도 있습니다. 단일 User Operator는 단일 네임스페이스를 조사할 수 있습니다. 하나의 네임스페이스는 User Operator 한 개만 조사해야 합니다.

AMQ Streams에서 관리하지 않는 Kafka 클러스터에서 User Operator를 사용하려면 User Operator를 독립 실행형 구성 요소로 배포 해야 합니다.

entityOperatoruserOperator 속성 구성에 대한 자세한 내용은 Entity Operator 구성을 참조하십시오.

절차

  1. userOperator 를 포함하도록 Kafka 리소스의 entityOperator 속성을 편집합니다.

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
    spec:
      #...
      entityOperator:
        topicOperator: {}
        userOperator: {}
    Copy to Clipboard Toggle word wrap
  2. EntityUserOperatorSpec 스키마 참조에 설명된 속성을 사용하여 User Operator 사양 을 구성합니다.

    모든 속성이 기본값을 사용하려면 빈 오브젝트({})를 사용합니다.

  3. 리소스를 생성하거나 업데이트합니다.

    oc apply -f <kafka_configuration_file>
    Copy to Clipboard Toggle word wrap
  4. 배포 상태를 확인합니다.

    oc get pods -n <my_cluster_operator_namespace>
    Copy to Clipboard Toggle word wrap

    출력에 Pod 이름과 준비 상태가 표시됩니다.

    NAME                        READY   STATUS    RESTARTS
    my-cluster-entity-operator  3/3     Running   0
    # ...
    Copy to Clipboard Toggle word wrap

    my-cluster 는 Kafka 클러스터의 이름입니다.

    READY 에는 준비되거나 예상된 복제본 수가 표시됩니다. STATUSRunning 으로 표시되면 배포가 성공적으로 수행됩니다.

6.1.5. AMQ Streams Operator의 다른 독립 실행형 배포 옵션

Topic Operator 및 User Operator의 독립 실행형 배포를 수행할 수 있습니다. Cluster Operator에서 관리하지 않는 Kafka 클러스터를 사용하는 경우 이러한 Operator의 독립 실행형 배포를 고려하십시오.

OpenShift에 Operator를 배포합니다. Kafka는 OpenShift 외부에서 실행할 수 있습니다. 예를 들어 Kafka를 관리 서비스로 사용할 수 있습니다. Kafka 클러스터의 주소와 일치하도록 독립 실행형 Operator의 배포 구성을 조정합니다.

6.1.5.1. 독립 실행형 주제 Operator 배포

다음 절차에서는 주제 관리를 위해 Topic Operator를 독립 실행형 구성 요소로 배포하는 방법을 설명합니다. Cluster Operator에서 관리하지 않는 Kafka 클러스터에서 독립 실행형 Topic Operator를 사용할 수 있습니다.

독립 실행형 배포는 모든 Kafka 클러스터에서 작동할 수 있습니다.

독립 실행형 배포 파일은 AMQ Streams에서 제공됩니다. 05-Deployment-strimzi-topic-operator.yaml 배포 파일을 사용하여 Topic Operator를 배포합니다. Kafka 클러스터에 연결하는 데 필요한 환경 변수를 추가하거나 설정합니다.

주제 Operator는 단일 네임스페이스에서 KafkaTopic 리소스를 감시합니다. Topic Operator 구성에서 조사할 네임스페이스와 Kafka 클러스터에 대한 연결을 지정합니다. 단일 Topic Operator는 단일 네임스페이스를 조사할 수 있습니다. 하나의 네임스페이스는 하나의 Topic Operator에서만 조사해야 합니다. 둘 이상의 Topic Operator를 사용하려면 각 네임스페이스를 모니터링하도록 구성합니다. 이렇게 하면 여러 Kafka 클러스터가 있는 Topic Operator를 사용할 수 있습니다.

사전 요구 사항

  • Topic Operator가 연결할 Kafka 클러스터를 실행하고 있습니다.

    독립 실행형 Topic Operator가 연결에 맞게 올바르게 구성된 경우 Kafka 클러스터는 베어 메탈 환경, 가상 머신 또는 관리형 클라우드 애플리케이션 서비스에서 실행될 수 있습니다.

절차

  1. install/topic-operator/05-Deployment-strimzi-topic-operator.yaml 독립 실행형 배포 파일에서 env 속성을 편집합니다.

    독립 실행형 주제 Operator 배포 구성의 예

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: strimzi-topic-operator
      labels:
        app: strimzi
    spec:
      # ...
      template:
        # ...
        spec:
          # ...
          containers:
            - name: strimzi-topic-operator
              # ...
              env:
                - name: STRIMZI_NAMESPACE 
    1
    
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.namespace
                - name: STRIMZI_KAFKA_BOOTSTRAP_SERVERS 
    2
    
                  value: my-kafka-bootstrap-address:9092
                - name: STRIMZI_RESOURCE_LABELS 
    3
    
                  value: "strimzi.io/cluster=my-cluster"
                - name: STRIMZI_ZOOKEEPER_CONNECT 
    4
    
                  value: my-cluster-zookeeper-client:2181
                - name: STRIMZI_ZOOKEEPER_SESSION_TIMEOUT_MS 
    5
    
                  value: "18000"
                - name: STRIMZI_FULL_RECONCILIATION_INTERVAL_MS 
    6
    
                  value: "120000"
                - name: STRIMZI_TOPIC_METADATA_MAX_ATTEMPTS 
    7
    
                  value: "6"
                - name: STRIMZI_LOG_LEVEL 
    8
    
                  value: INFO
                - name: STRIMZI_TLS_ENABLED 
    9
    
                  value: "false"
                - name: STRIMZI_JAVA_OPTS 
    10
    
                  value: "-Xmx=512M -Xms=256M"
                - name: STRIMZI_JAVA_SYSTEM_PROPERTIES 
    11
    
                  value: "-Djavax.net.debug=verbose -DpropertyName=value"
                - name: STRIMZI_PUBLIC_CA 
    12
    
                  value: "false"
                - name: STRIMZI_TLS_AUTH_ENABLED 
    13
    
                  value: "false"
                - name: STRIMZI_SASL_ENABLED 
    14
    
                  value: "false"
                - name: STRIMZI_SASL_USERNAME 
    15
    
                  value: "admin"
                - name: STRIMZI_SASL_PASSWORD 
    16
    
                  value: "password"
                - name: STRIMZI_SASL_MECHANISM 
    17
    
                  value: "scram-sha-512"
                - name: STRIMZI_SECURITY_PROTOCOL 
    18
    
                  value: "SSL"
    Copy to Clipboard Toggle word wrap

    1
    KafkaTopic 리소스를 조사할 Topic Operator의 OpenShift 네임스페이스입니다. Kafka 클러스터의 네임스페이스를 지정합니다.
    2
    Kafka 클러스터의 모든 브로커를 검색하고 연결하는 부트스트랩 브로커 주소의 호스트 및 포트 쌍입니다. 서버가 중단된 경우 쉼표로 구분된 목록을 사용하여 두 개 또는 세 개의 브로커 주소를 지정합니다.
    3
    Topic Operator에서 관리하는 KafkaTopic 리소스를 식별하는 레이블입니다. Kafka 클러스터의 이름이 될 필요는 없습니다. KafkaTopic 리소스에 할당된 레이블일 수 있습니다. 둘 이상의 Topic Operator를 배포하는 경우 레이블은 각각에 대해 고유해야 합니다. 즉, Operator는 동일한 리소스를 관리할 수 없습니다.
    4
    ZooKeeper 클러스터에 연결할 주소의 호스트 및 포트 쌍입니다. Kafka 클러스터가 사용 중인 것과 동일한 ZooKeeper 클러스터여야 합니다.
    5
    ZooKeeper 세션 시간 초과(밀리초)입니다. 기본값은 18000 (18초)입니다.
    6
    정기적인 조정 간격(밀리초)입니다. 기본값은 120000 (2분)입니다.
    7
    Kafka에서 주제 메타데이터를 가져오는 시도 횟수입니다. 각 시도 사이의 시간은 지수 백오프로 정의됩니다. 파티션 또는 복제본 수로 인해 주제 생성에 시간이 더 걸리면 이 값을 늘리는 것이 좋습니다. 기본값은 6 번 시도입니다.
    8
    로깅 메시지를 출력하는 수준입니다. 수준을 ERROR,WARNING,INFO,DEBUG, TRACE 로 설정할 수 있습니다.
    9
    Kafka 브로커와의 암호화된 통신에 대한 TLS 지원을 활성화합니다.
    10
    (선택 사항) Topic Operator를 실행하는 JVM에서 사용하는 Java 옵션입니다.
    11
    (선택 사항) Topic Operator에 설정된 디버깅(-D) 옵션입니다.
    12
    (선택 사항) TLS가 STRIMZI_TLS_ENABLED 를 통해 활성화되는 경우 신뢰 저장소 인증서 생성에 영향을 미칩니다. 이 환경 변수가 활성화된 경우 브로커는 TLS 인증서에 신뢰할 수 있는 공개 인증 기관을 사용해야 합니다. 기본값은 false입니다.
    13
    (선택 사항) 상호 TLS 인증을 위해 키 저장소 인증서를 생성합니다. 이를 false 로 설정하면 TLS를 통한 클라이언트 인증을 Kafka 브로커로 비활성화합니다. 기본값은 true입니다.
    14
    (선택 사항) Kafka 브로커에 연결할 때 클라이언트 인증에 대해 SASL 지원을 활성화합니다. 기본값은 false입니다.
    15
    (선택 사항) 클라이언트 인증을 위한 SASL 사용자 이름입니다. STRIMZI_SASL_ENABLED 를 통해 SASL이 활성화된 경우에만 필수 항목입니다.
    16
    (선택 사항) 클라이언트 인증을 위한 SASL 암호입니다. STRIMZI_SASL_ENABLED 를 통해 SASL이 활성화된 경우에만 필수 항목입니다.
    17
    (선택 사항) 클라이언트 인증을 위한 SASL 메커니즘입니다. STRIMZI_SASL_ENABLED 를 통해 SASL이 활성화된 경우에만 필수 항목입니다. 값을 plain,scram-sha-256 또는 scram-sha-512 로 설정할 수 있습니다.
    18
    (선택 사항) Kafka 브로커와의 통신에 사용되는 보안 프로토콜입니다. 기본값은 "PLAINTEXT"입니다. 이 값을 PLAINTEXT,SSL,SASL_PLAINTEXT, SASL_SSL 로 설정할 수 있습니다.
  2. 공개 인증 기관의 인증서를 사용하는 Kafka 브로커에 연결하려면 STRIMZI_ECDHELIC_CAtrue 로 설정합니다. 이 속성을 true 로 설정합니다(예: Amazon AWS MSK 서비스를 사용하는 경우).
  3. STRIMZI_TLS_ENABLED 환경 변수를 사용하여 TLS를 활성화하면 Kafka 클러스터에 대한 연결을 인증하는 데 사용되는 키 저장소 및 신뢰 저장소를 지정합니다.

    TLS 구성 예

    # ....
    env:
      - name: STRIMZI_TRUSTSTORE_LOCATION 
    1
    
        value: "/path/to/truststore.p12"
      - name: STRIMZI_TRUSTSTORE_PASSWORD 
    2
    
        value: "TRUSTSTORE-PASSWORD"
      - name: STRIMZI_KEYSTORE_LOCATION 
    3
    
        value: "/path/to/keystore.p12"
      - name: STRIMZI_KEYSTORE_PASSWORD 
    4
    
        value: "KEYSTORE-PASSWORD"
    # ...
    Copy to Clipboard Toggle word wrap

    1
    신뢰 저장소에는 Kafka 및 ZooKeeper 서버 인증서에 서명하는 데 사용되는 인증 기관의 공개 키가 포함되어 있습니다.
    2
    신뢰 저장소에 액세스하기 위한 암호입니다.
    3
    키 저장소에는 TLS 클라이언트 인증을 위한 개인 키가 포함되어 있습니다.
    4
    키 저장소에 액세스하기 위한 암호입니다.
  4. Topic Operator를 배포합니다.

    oc create -f install/topic-operator
    Copy to Clipboard Toggle word wrap
  5. 배포 상태를 확인합니다.

    oc get deployments
    Copy to Clipboard Toggle word wrap

    출력에 배포 이름과 준비 상태가 표시됩니다.

    NAME                    READY  UP-TO-DATE  AVAILABLE
    strimzi-topic-operator  1/1    1           1
    Copy to Clipboard Toggle word wrap

    READY 에는 준비되거나 예상된 복제본 수가 표시됩니다. AVAILABLE 출력에 1 이 표시되면 배포가 성공적으로 수행됩니다.

6.1.5.2. 독립 실행형 사용자 Operator 배포

다음 절차에서는 사용자 관리를 위한 독립 실행형 구성 요소로 User Operator를 배포하는 방법을 설명합니다. Cluster Operator에서 관리하지 않는 Kafka 클러스터와 함께 독립 실행형 User Operator를 사용할 수 있습니다.

독립 실행형 배포는 모든 Kafka 클러스터에서 작동할 수 있습니다.

독립 실행형 배포 파일은 AMQ Streams에서 제공됩니다. 05-Deployment-strimzi-user-operator.yaml 배포 파일을 사용하여 User Operator를 배포합니다. Kafka 클러스터에 연결하는 데 필요한 환경 변수를 추가하거나 설정합니다.

User Operator는 단일 네임스페이스에서 KafkaUser 리소스를 감시합니다. User Operator 구성에서 조사할 네임스페이스와 Kafka 클러스터에 대한 연결을 지정합니다. 단일 User Operator는 단일 네임스페이스를 조사할 수 있습니다. 하나의 네임스페이스는 User Operator 한 개만 조사해야 합니다. User Operator를 두 개 이상 사용하려면 각각 다른 네임스페이스를 조사하도록 구성합니다. 이렇게 하면 여러 Kafka 클러스터가 있는 User Operator를 사용할 수 있습니다.

사전 요구 사항

  • User Operator가 연결할 Kafka 클러스터를 실행하고 있습니다.

    독립 실행형 User Operator가 연결에 맞게 올바르게 구성된 경우 Kafka 클러스터는 베어 메탈 환경, 가상 머신 또는 관리형 클라우드 애플리케이션 서비스에서 실행될 수 있습니다.

절차

  1. install/user-operator/05-Deployment-strimzi-user-operator.yaml 독립 실행형 배포 파일에서 다음 env 속성을 편집합니다.

    독립 실행형 User Operator 배포 구성 예

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: strimzi-user-operator
      labels:
        app: strimzi
    spec:
      # ...
      template:
        # ...
        spec:
          # ...
          containers:
            - name: strimzi-user-operator
              # ...
              env:
                - name: STRIMZI_NAMESPACE 
    1
    
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.namespace
                - name: STRIMZI_KAFKA_BOOTSTRAP_SERVERS 
    2
    
                  value: my-kafka-bootstrap-address:9092
                - name: STRIMZI_CA_CERT_NAME 
    3
    
                  value: my-cluster-clients-ca-cert
                - name: STRIMZI_CA_KEY_NAME 
    4
    
                  value: my-cluster-clients-ca
                - name: STRIMZI_LABELS 
    5
    
                  value: "strimzi.io/cluster=my-cluster"
                - name: STRIMZI_FULL_RECONCILIATION_INTERVAL_MS 
    6
    
                  value: "120000"
                - name: STRIMZI_LOG_LEVEL 
    7
    
                  value: INFO
                - name: STRIMZI_GC_LOG_ENABLED 
    8
    
                  value: "true"
                - name: STRIMZI_CA_VALIDITY 
    9
    
                  value: "365"
                - name: STRIMZI_CA_RENEWAL 
    10
    
                  value: "30"
                - name: STRIMZI_JAVA_OPTS 
    11
    
                  value: "-Xmx=512M -Xms=256M"
                - name: STRIMZI_JAVA_SYSTEM_PROPERTIES 
    12
    
                  value: "-Djavax.net.debug=verbose -DpropertyName=value"
                - name: STRIMZI_SECRET_PREFIX 
    13
    
                  value: "kafka-"
                - name: STRIMZI_ACLS_ADMIN_API_SUPPORTED 
    14
    
                  value: "true"
                - name: STRIMZI_MAINTENANCE_TIME_WINDOWS 
    15
    
                  value: '* * 8-10 * * ?;* * 14-15 * * ?'
    Copy to Clipboard Toggle word wrap

    1
    KafkaUser 리소스를 조사할 User Operator의 OpenShift 네임스페이스입니다. 하나의 네임스페이스만 지정할 수 있습니다.
    2
    Kafka 클러스터의 모든 브로커를 검색하고 연결하는 부트스트랩 브로커 주소의 호스트 및 포트 쌍입니다. 서버가 중단된 경우 쉼표로 구분된 목록을 사용하여 두 개 또는 세 개의 브로커 주소를 지정합니다.
    3
    TLS 클라이언트 인증을 위해 새 사용자 인증서에 서명하는 인증 기관의 공개 키(ca.crt) 값이 포함된 OpenShift Secret
    4
    TLS 클라이언트 인증을 위해 새 사용자 인증서에 서명하는 인증 기관의 개인 키(ca.key) 값이 포함된 OpenShift Secret.
    5
    User Operator가 관리하는 KafkaUser 리소스를 식별하는 레이블입니다. Kafka 클러스터의 이름이 될 필요는 없습니다. KafkaUser 리소스에 할당된 레이블일 수 있습니다. 둘 이상의 User Operator를 배포하는 경우 레이블은 각각에 대해 고유해야 합니다. 즉, Operator는 동일한 리소스를 관리할 수 없습니다.
    6
    정기적인 조정 간격(밀리초)입니다. 기본값은 120000 (2분)입니다.
    7
    로깅 메시지를 출력하는 수준입니다. 수준을 ERROR,WARNING,INFO,DEBUG, TRACE 로 설정할 수 있습니다.
    8
    가비지 컬렉션(GC) 로깅을 활성화합니다. 기본값은 true입니다.
    9
    인증 기관의 유효 기간입니다. 기본값은 365 일입니다.
    10
    인증 기관의 갱신 기간입니다. 갱신 기간은 현재 인증서의 만료 날짜에서 역으로 측정됩니다. 기본값은 이전 인증서가 만료되기 전에 인증서 갱신을 시작하는 30 일입니다.
    11
    (선택 사항) User Operator를 실행하는 JVM에서 사용하는 Java 옵션입니다.
    12
    (선택 사항) User Operator에 설정된 디버깅(-D) 옵션
    13
    (선택 사항) User Operator가 생성한 OpenShift 시크릿의 이름에 대한 접두사입니다.
    14
    (선택 사항) Kafka 클러스터가 Kafka Admin API를 사용하여 권한 부여 ACL 규칙 관리를 지원하는지 여부를 나타냅니다. false 로 설정하면 User Operator는 간단한 권한 부여 ACL 규칙이 있는 모든 리소스를 거부합니다. 이는 Kafka 클러스터 로그에서 불필요한 예외를 방지하는 데 도움이 됩니다. 기본값은 true입니다.
    15
    (선택 사항) 만료 사용자 인증서가 갱신되는 동안 유지 관리 시간 창을 정의하는 Cron 표현식의 반 연속으로 구분된 목록입니다.
  2. TLS를 사용하여 Kafka 클러스터에 연결하는 경우 연결을 인증하는 데 사용되는 시크릿을 지정합니다. 그렇지 않으면 다음 단계로 이동합니다.

    TLS 구성 예

    # ....
    env:
      - name: STRIMZI_CLUSTER_CA_CERT_SECRET_NAME 
    1
    
        value: my-cluster-cluster-ca-cert
      - name: STRIMZI_EO_KEY_SECRET_NAME 
    2
    
        value: my-cluster-entity-operator-certs
    # ..."
    Copy to Clipboard Toggle word wrap

    1
    TLS 클라이언트 인증을 위해 Kafka 브로커 인증서에 서명하는 인증 기관의 공개 키(ca.crt) 값이 포함된 OpenShift Secret 입니다.
    2
    Kafka 클러스터에 대한 TLS 인증을 위해 개인 키 및 인증서가 있는 키 저장소(entity-operator.p12)가 포함된 OpenShift Secret 입니다. 시크릿에 키 저장소에 액세스하기 위한 암호(entity-operator.password)도 포함되어야 합니다.
  3. User Operator를 배포합니다.

    oc create -f install/user-operator
    Copy to Clipboard Toggle word wrap
  4. 배포 상태를 확인합니다.

    oc get deployments
    Copy to Clipboard Toggle word wrap

    출력에 배포 이름과 준비 상태가 표시됩니다.

    NAME                   READY  UP-TO-DATE  AVAILABLE
    strimzi-user-operator  1/1    1           1
    Copy to Clipboard Toggle word wrap

    READY 에는 준비되거나 예상된 복제본 수가 표시됩니다. AVAILABLE 출력에 1 이 표시되면 배포가 성공적으로 수행됩니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2026 Red Hat