Настройка Minio, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡŽΠ·Π΅Ρ€ ΠΌΠΎΠ³ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ со своим bucket

Minio это простоС, быстроС ΠΈ совмСстимоС с AWS S3 Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Minio создан для размСщСния нСструктурированных Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ, видСозаписи, Ρ„Π°ΠΉΠ»Ρ‹ ΠΆΡƒΡ€Π½Π°Π»ΠΎΠ², Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹Π΅ ΠΊΠΎΠΏΠΈΠΈ. Π’ minio Ρ‚Π°ΠΊΠΆΠ΅ поддСрТиваСтся распрСдСлСнный Ρ€Π΅ΠΆΠΈΠΌ (distributed mode), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ сСрвСру хранСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² мноТСства дисков, Π² Ρ‚ΠΎΠΌ числС располоТСнных Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ….

ЦСль этого поста Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ minio Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΡŽΠ·Π΅Ρ€ ΠΌΠΎΠ³ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ со своим bucket.

Π’ Ρ†Π΅Π»ΠΎΠΌ, Minio ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… случаСв:

  • Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π±Π΅Π· Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ²Π΅Ρ€Ρ… Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы с доступом ΠΏΠΎ S3 (ΠΌΠ°Π»Ρ‹Π΅ ΠΈ срСдниС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹Π΅ Π½Π° NAS ΠΈ SAN);
  • Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π±Π΅Π· Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ²Π΅Ρ€Ρ… Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы с доступом ΠΏΠΎ S3 (для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ тСстирования);
  • Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ с Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ Π½Π° нСбольшой Π³Ρ€ΡƒΠΏΠΏΠ΅ сСрвСров Π² ΠΎΠ΄Π½ΠΎΠΉ стойкС с доступом ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ S3 (отказоустойчивоС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ с Π΄ΠΎΠΌΠ΅Π½ΠΎΠΌ ΠΎΡ‚ΠΊΠ°Π·Π° Ρ€Π°Π²Π½Ρ‹ΠΌ стойкС).

На RedHat систСмах ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π½Π΅ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Minio.

yum -y install yum-plugin-copr
yum copr enable -y lkiesow/minio
yum install -y minio minio-mc

Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈ добавляСм Π² MINIO_ACCESS_KEY ΠΈ MINIO_SECRET_KEY Π² /etc/minio/minio.conf.

# Custom username or access key of minimum 3 characters in length.
MINIO_ACCESS_KEY=

# Custom password or secret key of minimum 8 characters in length.
MINIO_SECRET_KEY=

Если Π²Ρ‹ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ nginx ΠΏΠ΅Ρ€Π΅Π΄ Minio, Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.

--address 127.0.0.1:9000

Π½Π°

--address 0.0.0.0:9000

ЗапускаСм Minio.

systemctl start minio

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Minio ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ myminio.

minio-mc config host add myminio http://localhost:9000 MINIO_ACCESS_KEY 
MINIO_SECRET_KEY

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ bucket user1bucket.

minio-mc mb myminio/user1bucket

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ bucket user2bucket.

minio-mc mb myminio/user2bucket

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ user1-policy.json.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:PutBucketPolicy",
        "s3:GetBucketPolicy",
        "s3:DeleteBucketPolicy",
        "s3:ListAllMyBuckets",
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::user1bucket"
      ],
      "Sid": ""
    },
    {
      "Action": [
        "s3:AbortMultipartUpload",
        "s3:DeleteObject",
        "s3:GetObject",
        "s3:ListMultipartUploadParts",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::user1bucket/*"
      ],
      "Sid": ""
    }
  ]
}

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ user2-policy.json.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:PutBucketPolicy",
        "s3:GetBucketPolicy",
        "s3:DeleteBucketPolicy",
        "s3:ListAllMyBuckets",
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::user2bucket"
      ],
      "Sid": ""
    },
    {
      "Action": [
        "s3:AbortMultipartUpload",
        "s3:DeleteObject",
        "s3:GetObject",
        "s3:ListMultipartUploadParts",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::user2bucket/*"
      ],
      "Sid": ""
    }
  ]
}

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ user1 с ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ test12345.

minio-mc admin user add myminio user1 test12345

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ user2 с ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ test54321.

minio-mc admin user add myminio user2 test54321

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ Π² Minio ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ user1-policy ΠΈΠ· Ρ„Π°ΠΉΠ»Π° user1-policy.json.

minio-mc admin policy add myminio user1-policy user1-policy.json

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ Π² Minio ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ user2-policy ΠΈΠ· Ρ„Π°ΠΉΠ»Π° user2-policy.json.

minio-mc admin policy add myminio user2-policy user2-policy.json

ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ user1-policy ΠΊ ΡŽΠ·Π΅Ρ€Ρƒ user1.

minio-mc admin policy set myminio user1-policy user=user1

ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ user2-policy ΠΊ ΡŽΠ·Π΅Ρ€Ρƒ user2.

minio-mc admin policy set myminio user2-policy user=user2

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊ ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ

minio-mc admin user list myminio

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊ ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ такая

enabled    user1                 user1-policy
enabled    user2                 user2-policy

Для наглядности Π·Π°Ρ…ΠΎΠ΄ΠΈΠΌ Ρ‡Π΅Ρ€Π΅Π· Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΏΠΎ адрСсу http://ip-сСрвСра-Π³Π΄Π΅-Π·Π°ΠΏΡƒΡ‰Π΅Π½-minio:9000/minio/

Π’ΠΈΠ΄ΠΈΠΌ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈΡΡŒ ΠΊ Minio ΠΏΠΎΠ΄ MINIO_ACCESS_KEY=user1. Для нас доступСн bucket user1bucket.

Настройка Minio, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡŽΠ·Π΅Ρ€ ΠΌΠΎΠ³ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ со своим bucket

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ bucket Π½Π΅ получится, Ρ‚Π°ΠΊ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Action Π² ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ΅ Π½Π΅Ρ‚.

Настройка Minio, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡŽΠ·Π΅Ρ€ ΠΌΠΎΠ³ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ со своим bucket

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ„Π°ΠΉΠ» Π² bucket user1bucket.

Настройка Minio, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡŽΠ·Π΅Ρ€ ΠΌΠΎΠ³ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ со своим bucket

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌΡΡ ΠΊ Minio ΠΏΠΎΠ΄ MINIO_ACCESS_KEY=user2. Для нас доступСн bucket user2bucket.

И Π½Π΅ Π²ΠΈΠ΄ΠΈΠΌ Π½ΠΈ user1bucket Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ· user1bucket.

Настройка Minio, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡŽΠ·Π΅Ρ€ ΠΌΠΎΠ³ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ со своим bucket

Π‘ΠΎΠ·Π΄Π°Π» Telegram Ρ‡Π°Ρ‚ ΠΏΠΎ Minio https://t.me/minio_s3_ru

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com