[Schema Registry] EKS 구성

JunMyung Lee·2022년 7월 7일
0

데이터

목록 보기
10/14

스키마 레지스트리를 EKS환경에서 사용할 수 있도록 구성한다
해당 문서에서는 schema registry를 SR로 명명한다

💡 SR에서는 EKS Ingress 설정을 하지 않는다. 해당 이유는 Ingress설정시 지속적인 헬스 체크가 강요되고 SRU를 통해서 내역을 볼수 있고,
또한 EKS Forward 기능으로 Localhost로 접근하여 REST-API로 수동 컨트롤이 가능하므로 Ingress를 통한 외부 접근 설정은 SRU만 한다

스키마 레지스트리 구성하기

Docker 이미지

EKS에서 구동하기 위한 docker 이미지가 있어야 한다. 해당 이미지는

컨플루언트에서 제공하고 있는 이미지를 사용한다

confluentinc/cp-schema-registry:7.0.1

💡 현재 날짜 기준 (2022. 01. 21) 가장 최신 버전이 **7.0.1** 이다.

지정 옵션

도커에서 SR을 구동시킬때 필요한 옵션은 다음과 같다

SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS

연결하고자 하는 카프카 브로커의 주소를 입력한다. 해당 인자값은 콤마(,)를 기준으로 N개 입력이 가능

SCHEMA_REGISTRY_HOST_NAME

해당 서비스의 명칭을 입력하는 Alias라고 추측

SCHEMA_REGISTRY_LISTENERS

외부 입력 도메인 ( EKS에서 관리되므로 모두 허용 )

로컬호스트 Docker 구동 예시

docker run -p 2181:2181 -p 9092:9092 -p 8000:8000 -p 8081:8081 \
-e SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS=b-1.dev-lific-msk.w3yo3o.c2.kafka.ap-northeast-2.amazonaws.com:9092,b-2.dev-lific-msk.w3yo3o.c2.kafka.ap-northeast-2.amazonaws.com:9092 \
-e SCHEMA_REGISTRY_HOST_NAME=schema-registry \
-e SCHEMA_REGISTRY_LISTENERS=http://0.0.0.0:8081 \
-d confluentinc/cp-schema-registry:latest

쿠버네티스 설정

서비스 설정

💡 **SR ↔  SRU 연동 오류에 관한 이슈**

외부로 구성될 schema-registry-ui와의 연동으로 필요한 내부 도메인이 초기에는 port를 8081 로 설정하였다. 그럼 초기 연결은 되는것처럼 보이나 약 30초뒤 CONNECTIVITY ERROR 가 발생하였다( 애초에 연결이 안되었으면 해당 문제를 알 수 있었을 텐데 연결이 되었다가 해제되는 케이스)

서비스 진입 포트가 80이여야 예외가 발생하지 않는다

service.yml

apiVersion: v1
kind: Service
metadata:
  name: dev-schema-registry-service
  namespace: dev
spec:
  selector:
    app: schema-registry
  type: NodePort
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8081

deployment.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: schema-registry
  namespace: dev
  labels:
    app: schema-registry
spec:
  replicas: 1
  selector:
    matchLabels:
      app: schema-registry
  template:
    metadata:
      labels:
        app: schema-registry
    spec:
      containers:
        - name: schema-registry
          image: confluentinc/cp-schema-registry:7.0.1
          imagePullPolicy: Always
          resources:
            requests:
              cpu: 250m
              memory: 512Mi
            limits:
              cpu: 500m
              memory: 1024Mi
          env:
            - name: SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS
              value: b-1.dev-lific-msk.w3yo3o.c2.kafka.ap-northeast-2.amazonaws.com:9092,b-2.dev-lific-msk.w3yo3o.c2.kafka.ap-northeast-2.amazonaws.com:9092
            - name: SCHEMA_REGISTRY_HOST_NAME
              value: schema-registry
            - name: SCHEMA_REGISTRY_LISTENERS
              value: http://0.0.0.0:8081
          ports:
            - containerPort: 8081

0개의 댓글