4장. OpenShift 클러스터 외부에서 Kafka 액세스
외부 리스너를 사용하여 AMQ Streams Kafka 클러스터를 OpenShift 환경 외부의 클라이언트에 노출합니다.
외부 리스너 구성에 Kafka를 노출할 연결 유형을
지정합니다.
-
NodePort
에서서비스
사용 -
LoadBalancer
는Loadbalancer
유형서비스를
사용합니다. -
Ingress
는 KubernetesIngress
및 Kubernetes용 NGINX Ingress 컨트롤러를사용합니다. -
경로는
OpenShift경로
와 HAProxy 라우터를 사용합니다.
리스너 구성에 대한 자세한 내용은 GenericKafkaListener
스키마 참조를 참조하십시오.
각 연결 유형의 장단점에 대해 자세히 알아보려면 Strimzi에서 Apache Kafka 액세스를 참조하십시오.
경로는
OpenShift에서만 지원됩니다.
4.1. 노드 포트를 사용하여 Kafka에 액세스
다음 절차에서는 노드 포트를 사용하여 외부 클라이언트에서 AMQ Streams Kafka 클러스터에 액세스하는 방법을 설명합니다.
브로커에 연결하려면 Kafka 부트스트랩 주소 의 호스트 이름 및 포트 번호와 인증에 사용되는 인증서가 필요합니다.
사전 요구 사항
- OpenShift 클러스터
- 실행중인 Cluster Operator
절차
nodeport
유형으로 설정된 외부 리스너를 사용하여Kafka
리소스를 구성합니다.예를 들면 다음과 같습니다.
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka spec: kafka: # ... listeners: - name: external port: 9094 type: nodeport tls: true authentication: type: tls # ... # ... zookeeper: # ...
리소스를 생성하거나 업데이트합니다.
oc apply -f <kafka_configuration_file>
NodePort
유형 서비스는 각 Kafka 브로커 및 외부 부트스트랩 서비스에 대해 생성됩니다. 부트스트랩 서비스는 외부 트래픽을 Kafka 브로커로 라우팅합니다. 연결에 사용되는 노드 주소는 Kafka 사용자 정의 리소스의상태로
전파됩니다.kafka 브로커의 ID를 확인하는 클러스터 CA 인증서도 시크릿 <
cluster_name> -cluster-ca-cert
에 생성됩니다.Kafka
리소스의 상태에서 Kafka 클러스터에 액세스하는 데 사용할 수 있는 부트스트랩 주소를 검색합니다.oc get kafka <kafka_cluster_name> -o=jsonpath='{.status.listeners[?(@.name=="<listener_name>")].bootstrapServers}{"\n"}'
예를 들면 다음과 같습니다.
oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.name=="external")].bootstrapServers}{"\n"}'
TLS 암호화가 활성화된 경우 브로커 인증 기관의 공개 인증서를 추출합니다.
oc get secret KAFKA-CLUSTER-NAME-cluster-ca-cert -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crt
Kafka 클라이언트에서 추출된 인증서를 사용하여 TLS 연결을 구성합니다. 인증을 활성화한 경우 SASL 또는 TLS 인증도 구성해야 합니다.