Print
카테고리: [ Cloud Computing & MSA ]
조회수: 25631

 

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