NATS 설치 – Docker, Kubernetes

NATS는 고성능의 오픈 소스 메시징 시스템으로, 마이크로서비스, IoT, 클라우드 네이티브 애플리케이션 등 다양한 분야에서 활용되고 있습니다. 이 블로그에서는 Docker-ComposeHelm을 이용하여 NATS를 설치하고 실행하는 방법을 자세히 설명합니다. 이 가이드를 통해 로컬 개발 환경부터 Kubernetes 클러스터까지 손쉽게 NATS를 설정할 수 있습니다.

사전 준비 사항:

  • DockerDocker-Compose가 설치된 환경
  • Kubernetes 클러스터 접근 권한
  • Helm이 설치된 환경

전체 내용:

  1. Docker Compose로 설치:
    • Localhost에 Docker를 이용하여 설치.
  2. Kubernetes에 설치:
    • Helm을 이용하여 설치.

* Local에 Docker Compose 이용

* 예제에서 데이터 파일을 저장할 로컬경로를 “/data/nats”로 지정 했습니다. 실행을 위한 설정파일인 nats.conf 파일은 외부에서 만들어 컨테이너에 전달 합니다.
				
					user:~$ sudo mkdir -p /data/nats
user:~$ cd /data/nats
user:/data/nats$ vi nats.conf
### NATS Clients Port ###############################################
port: 4222
# PID file shared with configuration reloader.
# pid_file: "/var/run/nats/nats.pid"

### Monitoring  #####################################################
http: 8222
server_name: nats-0
server_tags: [
    "mem:4Gi",
]

### NATS JetStream ##################################################
jetstream {
    max_mem:2G
    store_dir: "/data"
    max_file:10Gi
    unique_tag: "natsuniquetag"
}

### NATS Full Mesh Clustering Setup #################################
# cluster {
#     name: natscluster
#     port: 6222
#     routes = [
#     nats://nats-0.nats.nats.svc.cluster.local:6222
#     nats://nats-1.nats.nats.svc.cluster.local:6222
#     nats://nats-2.nats.nats.svc.cluster.local:6222

#     ]
#     cluster_advertise: $CLUSTER_ADVERTISE
#     connect_retries: 120
# }
lame_duck_grace_period: 10s
lame_duck_duration: 30s
				
			
docker-compose.yml
				
					services:
# define nats container
  nats:
    image: nats:alpine
    restart: unless-stopped
    container_name: nats
    ports:
      - "4222:4222" # client port
      - "8222:8222" # monitoring port
    volumes:
      - /data/nats/nats.conf:/etc/nats/nats.conf
      - /data/nats:/data
    command: -c /etc/nats/nats.conf
				
			
실행 & 제거
				
					# start container
user:~$ docker compose up nats -d

# stop container
user:~$ docker container stop <container hash value>

# remove container
user:~$ docker container rm <container hash value>

				
			

* Kubernetes에 HELM 이용

Kubernetes 환경에서 NATS을 설치할 때 Helm을 활용하면 간단하고 효율적으로 설치 및 관리를 할 수 있습니다. 이번 방법은 NATS 공식 Helm Chart와 Docker 이미지를 활용해 설치하는 가장 간단한 방법을 소개합니다.
repository 등록
				
					user:~$ helm repo add nats https://nats-io.github.io/k8s/helm/charts/
user:~$ helm repo update
				
			
설정 옵션 확인
				
					user:~$ helm show values nats/nats > nats-values.yaml
				
			
* Helm에 values에서 설정할 수 있는 옵션과 각 옵션들의 정확한 위치를 확인하기 위해 values.yaml 파일로 저장 합니다.
* 공식문서를 통해 확인할 수도 있습니다. : https://artifacthub.io/packages/helm/nats/nats
설치
				
					user:~$ helm install nats nats/nats --namespace nats --create-namespace \
  --set config.jetstream.enabled=true \
  --set config.jetstream.fileStore.pvc.size=5Gi \
  --set config.jetstream.fileStore.pvc.storageClassName=local-path
				
			
* NATS를 외부에서 접속할 수 있도록 하기 위해 loadBalancer 타입의 service를 만들어 줍니다.
				
					# export port (optional)
user:~$ cat << EOF | kubectl apply -f -
apiVersion: v1
kind: Service
metadata:
  name: nats
  namespace: nats
spec:
  type: LoadBalancer
  ports:
    - port: 4222
      targetPort: 4222
      protocol: TCP
  selector:
    app.kubernetes.io/instance: nats
    app.kubernetes.io/name: nats
EOF
				
			
* 실행 확인
				
					# Check if it is installed and running properly.
user:~$ kubectl get all -n nats
				
			

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다