概述
docker-compose를 사용하여 Linux 환경에서 ETCD를 설치하고 구성하는 방법을 설명한다. ETCD는 분산 키-값 저장소로, Kubernetes 등의 클러스터링 솔루션에서 널리 사용된다.
- 디렉토리 생성
ETCD 데이터와 설정 파일을 저장할 디렉토리를 생성한다.
mkdir -p /home/service/etcd/data
mkdir -p /home/service/etcd/conf
- ETCD 설정 파일 작성
/home/service/etcd/conf/etcd.yml 파일을 생성하고 다음 내용을 입력한다.
# ETCD 멤버 이름
name: etcd01
# 데이터 저장 경로
data-dir: /data
# 클라이언트 연결용 주소
listen-client-urls: http://0.0.0.0:2379
# 피어 간 통신용 주소
listen-peer-urls: http://0.0.0.0:2380
# 클라이언트에 광고할 URL (주석 해제 후 사용 가능)
# advertise-client-urls: http://etcd01:2379
자세한 설정 옵션은 공식 ETCD 설정 샘플을 참조한다.
- docker-compose 파일 작성
/home/service/etcd/docker-compose.yaml 파일을 생성한다.
version: "3.5"
services:
etcd:
hostname: etcd
image: bitnami/etcd:3.5.9
container_name: etcd
restart: always
privileged: true
volumes:
- "/home/service/etcd/data:/data"
- "/home/service/etcd/conf:/opt/bitnami/etcd/conf"
environment:
- "ALLOW_NONE_AUTHENTICATION=yes"
- "ETCD_CONFIG_FILE=/opt/bitnami/etcd/conf/etcd.yml"
ports:
- "2379:2379"
- "2380:2380"
networks:
- etcdnet
networks:
etcdnet:
name: etcdnet
- 컨테이너 실행
docker-compose 파일이 있는 디렉토리에서 다음 명령어로 컨테이너를 실행한다.
cd /home/service/etcd
docker-compose up -d
컨테이너 실행 상태를 확인한다.
docker ps
- 사용자 및 인증 설정
컨테이너 내부로 접속하여 사용자 관리와 권한 인증을 설정한다.
docker exec -it <컨테이너_ID> sh
ETCD 클라이언트 도구(etcdctl)를 사용하여 다음과 같이 설정한다.
# 루트 역할 생성
etcdctl role add root
# 루트 사용자 생성
etcdctl user add root
# 사용자에게 역할 할당
etcdctl user grant-role root root
# 사용자 정보 확인
etcdctl user get root
# 역할에 키 권한 부여 ( "/"는 모든 키에 대한 읽기/쓰기 권한)
etcdctl role grant-permission root readwrite /
# 인증 활성화
etcdctl auth enable
인증이 활성화된 후에는 대부분의 명령어에 자격 증명을 포함해야 한다.
# 인증 비활성화
etcdctl auth disable --user=root --password=비밀번호
# 비밀번호 변경
etcdctl user passwd root --user=root --password=현재비밀번호
- 기본 사용 명령어
# 키-값 저장
etcdctl put key value
# 키-값 조회
etcdctl get key
# 접두사를 포함한 조회
etcdctl get --prefix "prefix"
# 모든 키-값 쌍 조회
etcdctl get --prefix ""
# 키 삭제
etcdctl del key
인증이 활성화된 상태에서는 --user=username --password=password 옵션을 명령어에 추가해야 한다.