Minio
Minio는 쿠버네티스 네이티브 오브젝트 스토리지 서버로서, 하이브리드 클라우드 환경의 요구사항에 부합하도록 설계되었다. 오픈소스로서 AWS S3 api와 호환되어 쉽게 사용할 수 있으며, go로 작성되어 가벼운 단일 바이너리로 배포 가능하다. mc라는 자체 클라이언트를 제공한다. 빠른 입출력 성능을 갖고 있어 고성능을 요구하는 Spark, TensorFlow, Presto 등의 스토리지로 사용 가능하며 Hadoop HDFS를 대체할 수 있다.
docker-compose로 minio 배포하기
docker-compose로 minio 서버를 배포하고 mc로 테스트 버킷을 생성한다.
version: "3" volumes: minio_data: {} services: object-storage: image: minio/minio restart: unless-stopped volumes: - ./.minio/data:/test-bucket environment: MINIO_ROOT_USER: minio MINIO_ROOT_PASSWORD: minioadmin command: server /test-bucket expose: - "9000" ports: - "9000:9000" create-bucket: image: minio/mc depends_on: - object-storage entrypoint: > /bin/sh -c " /usr/bin/mc config host add minio http://object-storage:9000 minio minioadmin; /usr/bin/mc mb minio/test-bucket; exit 0; "
minio web 접속
docker-compose로 minio 서버를 띄우고 지정한 포트로 접속한다.
$ docker-compose up -d [±main ●] Creating network "minio_default" with the default driver Creating minio_object-storage_1 ... done Creating minio_create-bucket_1 ... done
로그인하면 생성한 버킷이 확인된다.
mc(minio client) 설치
mc를 설치한다. (brew install mc를 치면 midnight-commander가 설치된다.)
$ brew install minio/stable/mc [±main ●] Updating Homebrew... ==> Auto-updated Homebrew! Updated 1 tap (homebrew/core). ==> Updated Formulae Updated 1 formula. ==> Tapping minio/stable .....
minio 서버 접속 정보를 설정한다.
$ mc config host add minio http://localhost:9000 minio minioadmin [±main ●] Added `minio` successfully. $ mc config host list [±main ●] ...... minio URL : http://localhost:9000 AccessKey : minio SecretKey : minioadmin API : s3v4 Path : auto ......
파일 업로드
aws s3 cli를 사용해서 파일을 업로드하듯 mc 명령어를 사용한다.
$ mc cp docker-compose.yml minio/test-bucket [±main ●] docker-compose.yml: 604 B / 604 B ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 33.58 KiB/s 0s $ mc ls minio/test-bucket [±main ●] [2021-03-21 19:42:59 KST] 604B docker-compose.yml [2021-03-21 19:37:13 KST] 2.1KiB test.json