스키마 레지스트리를 EKS환경에서 사용할 수 있도록 구성한다
해당 문서에서는 schema registry를 SR
로 명명한다
💡 SR에서는 EKS Ingress 설정을 하지 않는다. 해당 이유는 Ingress설정시 지속적인 헬스 체크가 강요되고 SRU를 통해서 내역을 볼수 있고,
또한 EKS Forward 기능으로 Localhost로 접근하여 REST-API로 수동 컨트롤이 가능하므로 Ingress를 통한 외부 접근 설정은 SRU만 한다
EKS에서 구동하기 위한 docker 이미지가 있어야 한다. 해당 이미지는
컨플루언트에서 제공하고 있는 이미지를 사용한다
💡 현재 날짜 기준 (2022. 01. 21) 가장 최신 버전이 **7.0.1** 이다.
confluentinc/cp-schema-registry:7.0.1
도커에서 SR을 구동시킬때 필요한 옵션은 다음과 같다
연결하고자 하는 카프카 브로커의 주소를 입력한다. 해당 인자값은 콤마(,)를 기준으로 N개 입력이 가능
해당 서비스의 명칭을 입력하는 Alias라고 추측
외부 입력 도메인 ( EKS에서 관리되므로 모두 허용 )
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
외부로 구성될 schema-registry-ui와의 연동으로 필요한 내부 도메인이 초기에는 port를 8081
로 설정하였다. 그럼 초기 연결은 되는것처럼 보이나 약 30초뒤 CONNECTIVITY ERROR
가 발생하였다( 애초에 연결이 안되었으면 해당 문제를 알 수 있었을 텐데 연결이 되었다가 해제되는 케이스)
서비스 진입 포트가 80
이여야 예외가 발생하지 않는다
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
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