15.4. 노드 포트를 사용하여 Kafka에 액세스
노드 포트를 사용하여 OpenShift 클러스터 외부의 외부 클라이언트에서 Kafka 클러스터에 액세스합니다.
브로커에 연결하려면 Kafka 부트스트랩 주소에 대한 호스트 이름 및 포트 번호와 TLS 암호화에 사용되는 인증서를 지정합니다.
이 절차에서는 기본 nodeport 리스너 구성을 보여줍니다. 리스너 속성을 사용하여 TLS 암호화(tls)를 활성화하고 클라이언트 인증 메커니즘(인증)을 지정할 수 있습니다. 구성 속성을 사용하여 추가 구성 을 추가합니다. 예를 들어 nodeport 리스너와 함께 다음 구성 속성을 사용할 수 있습니다.
preferredNodePortAddressType- 노드 주소로 확인되는 첫 번째 주소 유형을 지정합니다.
externalTrafficPolicy- 서비스가 외부 트래픽을 node-local 또는 클러스터 전체 엔드포인트로 라우팅하는지 여부를 지정합니다.
nodePort- 부트 스트랩 및 브로커 서비스에 할당된 노드 포트 번호를 덮어씁니다.
리스너 구성에 대한 자세한 내용은 GenericKafkaListener 스키마 참조를 참조하십시오.
사전 요구 사항
- 실행중인 Cluster Operator
이 절차에서 Kafka 클러스터 이름은 my-cluster 입니다. 리스너 이름은 external4 입니다.
프로세스
nodeport유형으로 설정된 외부 리스너를 사용하여Kafka리소스를 구성합니다.예를 들면 다음과 같습니다.
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: labels: app: my-cluster name: my-cluster annotations: strimzi.io/node-pools: enabled strimzi.io/kraft: enabled namespace: myproject spec: kafka: # ... listeners: - name: external4 port: 9094 type: nodeport tls: true authentication: type: tls # ... # ...리소스를 생성하거나 업데이트합니다.
oc apply -f <kafka_configuration_file>kafka 브로커의 ID를 확인하기 위한 클러스터 CA 인증서가 시크릿
my-cluster-cluster-ca-cert에 생성됩니다.NodePort유형 서비스는 각 Kafka 브로커 및 외부 부트스트랩 서비스에 대해 생성됩니다.부트스트랩 및 브로커용으로 생성된 노드 포트 서비스
NAME TYPE CLUSTER-IP PORT(S) my-cluster-kafka-external4-0 NodePort 172.30.55.13 9094:31789/TCP my-cluster-kafka-external4-1 NodePort 172.30.250.248 9094:30028/TCP my-cluster-kafka-external4-2 NodePort 172.30.115.81 9094:32650/TCP my-cluster-kafka-external4-bootstrap NodePort 172.30.30.23 9094:32650/TCP클라이언트 연결에 사용되는 부트스트랩 주소는
Kafka리소스의상태로전파됩니다.부트스트랩 주소의 상태 예
status: clusterId: Y_RJQDGKRXmNF7fEcWldJQ conditions: - lastTransitionTime: '2023-01-31T14:59:37.113630Z' status: 'True' type: Ready kafkaVersion: 4.0.0 listeners: # ... - addresses: - host: ip-10-0-224-199.us-west-2.compute.internal port: 32650 bootstrapServers: 'ip-10-0-224-199.us-west-2.compute.internal:32650' certificates: - | -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- name: external4 observedGeneration: 2 operatorLastSuccessfulVersion: 3.0 # ...Kafka리소스의 상태에서 Kafka 클러스터에 액세스하는 데 사용할 수 있는 부트스트랩 주소를 검색합니다.oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.name=="external4")].bootstrapServers}{"\n"}' ip-10-0-224-199.us-west-2.compute.internal:32650클러스터 CA 인증서를 추출합니다.
oc get secret my-cluster-cluster-ca-cert -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crt브로커에 연결하도록 클라이언트를 구성합니다.
-
Kafka 클라이언트에 연결할 부트스트랩 주소로 부트스트랩 호스트 및 포트를 지정합니다. 예를 들어
ip-10-0-224-199.us-west-2.compute.internal:32650입니다. 추출된 인증서를 Kafka 클라이언트의 신뢰 저장소에 추가하여 TLS 연결을 구성합니다.
클라이언트 인증 메커니즘을 활성화한 경우 클라이언트에서도 구성해야 합니다.
-
Kafka 클라이언트에 연결할 부트스트랩 주소로 부트스트랩 호스트 및 포트를 지정합니다. 예를 들어
자체 리스너 인증서를 사용하는 경우 클라이언트의 신뢰 저장소 구성에 CA 인증서를 추가해야 하는지 확인합니다. 공용(외부) CA인 경우 일반적으로 추가할 필요가 없습니다.