
MinIO — сервер хранения объектов, выпущенный под Apache License v2.0, который совместим с облачным сервисом хранения Amazon S3. Он лучше всего подходит для хранения неструктурированных данных, таких как фотографии, видео, файлы журналов, резервные копии и образы контейнеров/виртуальных машин. Размер объекта может варьироваться от нескольких КБ до 5ТБ максимум.
Установка Minio через Docker в Unix/Linux
Один из самых простых способов запустить Minio — это использовать Docker. Но для начала, установим докер:
Установка Docker в Debian/Ubuntu
Установка Docker в CentOS/RedHat/Fedora
Забираем стабильный имедж:
$ docker pull minio/minio
Запускаем:
$ docker run -p 9000:9000 minio/minio server /data
Для простоты использования, можно заюзать docker-compose файл, например:
minio:
image: minio/minio
hostname: minio
container_name: minio
command: server /data
volumes:
- /opt/minio:/data
ports:
- 9000:9000
Для запуска служит команда:
$ docker-compose up -d
Сервис будет доступен на:
http://localhost:9000
Если все сделали правильно, то увидите web-интерфейс для входа введите логин и пароль. Данные будет сгенерированы автоматом и найти их можно /opt/minio.
Установка Minio через Kubernetes в Unix/Linux
Устанавливаем через kubectl, для этого создаем:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
# This name uniquely identifies the PVC. Will be used in deployment below.
name: minio-pv-claim
labels:
app: minio-storage-claim
spec:
# Read more about access modes here: https://kubernetes.io/docs/user-guide/persistent-volumes/#access-modes
accessModes:
- ReadWriteOnce
resources:
# This is the request for storage. Should be available in the cluster.
requests:
storage: 500Gi
# Uncomment and add storageClass specific to your requirements below. Read more https://kubernetes.io/docs/concepts/storage/persistent-volumes/#class-1
#storageClassName:
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
# This name uniquely identifies the Deployment
name: minio-deployment
spec:
strategy:
type: Recreate
template:
metadata:
labels:
# Label is used as selector in the service.
app: minio
spec:
# Refer to the PVC created earlier
volumes:
- name: storage
persistentVolumeClaim:
# Name of the PVC created earlier
claimName: minio-pv-claim
containers:
- name: minio
# Pulls the default MinIO image from Docker Hub
image: minio/minio
args:
- server
- /storage
env:
# MinIO access key and secret key
- name: MINIO_ACCESS_KEY
value: "MINIO_ACCESS_KEY"
- name: MINIO_SECRET_KEY
value: "MINIO_SECRET_KEY"
ports:
- containerPort: 9000
# Mount the volume into the pod
volumeMounts:
- name: storage # must match the volume name, above
mountPath: "/storage"
---
apiVersion: v1
kind: Service
metadata:
name: minio-service
spec:
type: LoadBalancer
ports:
- port: 9000
targetPort: 9000
protocol: TCP
selector:
app: minio
Если нужно запустить в дистрибут-моде:
apiVersion: v1
kind: Service
metadata:
name: minio
labels:
app: minio
spec:
clusterIP: None
ports:
- port: 9000
name: minio
selector:
app: minio
---
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: minio
spec:
serviceName: minio
replicas: 4
template:
metadata:
labels:
app: minio
spec:
containers:
- name: minio
env:
- name: MINIO_ACCESS_KEY
value: "MINIO_ACCESS_KEY"
- name: MINIO_SECRET_KEY
value: "MINIO_SECRET_KEY"
image: minio/minio
args:
- server
- http://minio-{0...3}.minio.default.svc.cluster.local/data
ports:
- containerPort: 9000
# These volume mounts are persistent. Each pod in the PetSet
# gets a volume mounted based on this field.
volumeMounts:
- name: data
mountPath: /data
# These are converted to volume claims by the controller
# and mounted at the paths mentioned above.
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 500Gi
# Uncomment and add storageClass specific to your requirements below. Read more https://kubernetes.io/docs/concepts/storage/persistent-volumes/#class-1
#storageClassName:
---
apiVersion: v1
kind: Service
metadata:
name: minio-service
spec:
type: LoadBalancer
ports:
- port: 9000
targetPort: 9000
protocol: TCP
selector:
app: minio
Запускаем:
$ kubectl create -f minio-deployment.yaml
Устанавливаем через helm:
$ helm install stable/minio
Или запуск в distributed моде:
$ helm install --set mode=distributed,replicas=4 stable/minio
Вот и все.
Установка Minio на MacOS
Для начала ставим HOMEBREW, и потом, выполняем:
$ brew install minio/stable/minio
PS: Можно выполнить следующую команду:
$ sudo wget -O /usr/local/bin/minio https://dl.min.io/server/minio/release/darwin-amd64/minio && \
sudo chmod 755 /usr/local/bin/minio
Для запуска выполняем:
$ minio server /data
Так же, можно установить minio клиент, для этого выполните:
$ brew install minio/stable/mc
Вот и все!
Установка Minio в Linux
Чтобы установить Minio в Linux ОС, выполните:
$ sudo wget -O /usr/local/bin/minio https://dl.min.io/server/minio/release/linux-amd64/minio && \
sudo chmod +x /usr/local/bin/minio
Так же, можно установить minio клиент:
$ sudo wget -O /usr/local/bin/mc https://dl.min.io/client/mc/release/linux-amd64/mc && \
sudo chmod +x /usr/local/bin/mc
Замечание: Если нужно использовать ppc64le архитектуру:
$ sudo wget -O /usr/local/bin/minio https://dl.min.io/server/minio/release/linux-ppc64le/minio && \
sudo chmod +x /usr/local/bin/minio
Для запуска выполняем:
$ minio server /data
Вот и все!
Использование Minio в Unix/Linux
Можно minio использовать для различных юзкйсов. Приведу несколько примеров.
Использование Minio с Terraform в Unix/Linux
Делаем бэкенд для Терраформа следующим образом:
terraform {
backend "s3" {
bucket = "terraform-state"
key = "dev/terraform.tfstate"
region = "us-east-1"
access_key = "MINIO_ACCESS_KEY"
secret_key = "MINIO_SECRET_KEY"
endpoint = "http://localhost:9000"
skip_credentials_validation = true
force_path_style = true
}
}
Можно юзать.
Вот и все, статья «Установка Minio в Unix/Linux» завершена!