5장. OpenShift 클러스터 외부에서 Kafka에 액세스
외부 리스너를 사용하여 OpenShift 환경 외부의 클라이언트에 AMQ Streams Kafka 클러스터를 노출합니다.
외부 리스너 구성에서 Kafka를 노출할 연결 유형을 지정합니다.
-
NodePort에서 NodePort 유형서비스를사용 -
LoadBalancer는Loadbalancer유형서비스를사용 -
Ingress는 KubernetesIngress및 Kubernetes에 Ingress NGINX 컨트롤러를사용 -
route는 OpenShift경로및 HAProxy 라우터 사용
리스너 구성에 대한 자세한 내용은 GenericKafkaListener 스키마 참조 를 참조하십시오.
각 연결 유형의 장단점에 대해 자세히 알아보려면 Strimzi에서 Apache Kafka 액세스를 참조하십시오.
OpenShift에서만 route 가 지원됨
5.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>각 Kafka 브로커 및 외부 부트스트랩 서비스에 대해
NodePort유형 서비스가 생성됩니다. 부트스트랩 서비스는 외부 트래픽을 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.crtKafka 클라이언트에서 추출된 인증서를 사용하여 TLS 연결을 구성합니다. 인증을 활성화한 경우 클라이언트에서도 구성해야 합니다.