MinIO Modern

Minio

اگر شما به دنبال راه حلی برای ذخیره‌سازی داده‌های متفاوت هستید بهتر است از Object Storageها استفاده کنید. یکی از این Object Storageها MinIO است.
MinIO یک Cloud Storage سازگار با Amazon S3 است که به شما این امکان را می دهد تا فایل‌های خود را بر روی آن ذخیره کنید و سرویس‌ها از طریق ارتباط API به آن‌ها دسترسی داشته باشند.

نکته

توجه داشته باشید maximum اندازه یک فایل برای یک Object نمیتواند بیشتر از ۵ ترابایت باشد.

برای اینکه بتوانید این سرویس را دیپلوی کنید، پارامتر‌های زیر را می‌توانید مشخص کنید:

کانفیگنوعپیش‌فرضتوضیح
service_namestringminioنامی که برای سرویس مایلید در نظر گرفته شود
minio_access_keystringمقدار access key
minio_secret_keystringمقدار secret key
volume_namestringنام volumeای که به سرویس وصل می شود
volume_browser_enabledbooleanfalseآیا سرویس مدیریت Dedicated Volume برای این سرویس ساخته شود یا خیر
نکته

توجه داشته باشید طول minio_access_key و minio_secret_key باید بیشتر از ۱۲ کاراکتر باشد، در غیر این صورت با خطای سرور مواجه خواهید شد.

توجه

توجه داشته باشید برای استفاده از قابلیت Volume Browser سرویس شما باید به یک Dedicated Volume متصل باشد؛ در غیر این صورت با خطای سرور مواجه خواهید شد.

برای دیپلوی کردن یک سرویس MinIO می‌توانیم به شکل زیر عمل کنیم:

fandogh managed-service deploy minio modern \
-c service_name=test-minio \
-c minio_access_key=12charchters \
-c minio_secret_key=12charchters \
-c volume_name=VOLUME_NAME \
-m 512Mi

این دستور یک سرویس MinIO ایجاد می‌کند که:

  • نام آن test-minio )یعنی در شبکه داخلی فضانام شما باقی سرویس‌ها از طریق نام test-minio و بر روی پورت 80 می‌توانند به آن متصل شوند( است.
  • میزان رم آن 512 مگابایت.
  • minio_access_key آن 12charchters
  • minio_secret_key آن 12charchters
  • و نام volume که داده‌های minio بر روی آن ذخیره می‌شود VOLUME_NAME است.

بعد از آن که سرویس MinIO ساخته شد، از طریق لینکی که در اختیار شما قرار می‌گیرد می‌توانید وارد داشبورد مدیریتی MinIO شده و access_key و secret_key را وارد نمایید و از سرویس استفاده کنید.

Deploy With Manifest

شما همچنین می توانید برای اجرای راحت تر سرویس های مدیریت شده از مانیفست همانند مثال زیر استفاده کنید.

  • مانیفست MinIO
minio_deployment.yml
kind: ManagedService
name: test-minio
spec:
service_name: minio
version: modern
parameters:
- name: minio_access_key
value: 12charachters
- name: minio_secret_key
value: 12charachters
- name: volume_name
value: VOLUME_NAME
resources:
memory: 512Mi

MinIO Console (Dashboard)

بعد از استقرار سرویس مدیریت شده MinIO سکوی ابری فندق تعدادی دامنه در اختیار شما قرار می‌دهد. برای دسترسی به داشبورد سرویس MinIO، دامنه با فرمت زیر را در مرورگر خود وارد نمایید:

MinIO Console (Dashboard) Address
https://console-service_name-namespace_name.fandogh.cloud

برای ورود به داشبورد در صفحه ورود از شما نام کاربری و رمز عبور درخواست خواهد شد؛ این مقادیر به ترتیب به شرح زیر هستند:

  • username: برای این بخش مقدار minio_access_key را وارد نمایید.
  • password: برای این بخش مقدار minio_secret_key را وارد نمایید.

MinIO Server

در اصل MinIO Server همان آدرس مستقیم برای برقراری ارتباط به سرویس MinIO از طریق API است.

MinIO Server Address
https://service_name-namespace_name.fandogh.cloud
توجه

اگر شما دامنه دلخواه به سرویس MinIO اضافه کرده باشید، این دامنه جایگزین آدرس پیشفرض فندقی خواهد شد.

افزودن دامنه دلخواه

اگر قصد داشته باشید دامنه دلخواهتان را به سرویس مدیریت شده مورد نظر متصل نمایید، میتوانید به صورت زیر عمل کنید.

مهم

توجه داشته باشید شما فقط یک دامنه می‌توانید به سرویس مدیریت شده MinIO متصل نمایید و این آدرس جایگزین آدرس سرور خواهد شد؛ برای استفاده از داشبورد MinIO همچنان باید به آدرس پیشفرضی که سکو در اختیار شما قرار می‌دهد مراجعه نمایید.

برای مثال فرض کنید تمایل دارید سرویس مدیریت شده مورد نظر شما روی domain.com در دسترس باشد:

domains:
- name: domain.com
...

بدین شکل بخش دامنه را به مانیفست سرویس خود اضافه کرده و آن را مستقر نمایید:

minio_deployment.yml
kind: ManagedService
name: test-minio
spec:
service_name: minio
version: modern
parameters:
- name: minio_access_key
value: 12charachters
- name: minio_secret_key
value: 12charachters
- name: volume_name
value: VOLUME_NAME
domains:
- name: domain.com
resources:
memory: 512Mi

تغییر تنظیمات امنیتی

اگر قصد داشته باشید secret key و access key که قبلا بر روی سرویس MinIO خود ایجاد کرده‌اید را تغییر دهید، تنها کافی است مقادیر minio_access_key و minio_secret_key را تغییر دهید.

بعد از این تغییر و تایید، سکو سرویس شما را دوباره ساخته و مقادیر جدید بر روی سرویس MinIO قرار خواهد گرفت.

نکته

اگر قصد تغییر مقادیر minio_access_key و minio_secret_key را دارید، باید به این نکته توجه داشته باشید که تمامی سرویس‌هایی که از طریق آدرس سرور با MinIO در تماس هستند باید مقادیر جدید را داشته باشند تا اختلالی در ارتباط بوجود نیاید.

برای مثال فرض کنید سرویس MinIO شما در ابتدا با مانیفست زیر ایجاد شده باشد:

minio_deployment.yml
kind: ManagedService
name: test-minio
spec:
service_name: minio
version: modern
parameters:
- name: minio_access_key
value: 12charachters
- name: minio_secret_key
value: 12charachters
- name: volume_name
value: VOLUME_NAME
resources:
memory: 512Mi

حال قصد داریم مقادیر minio_access_key و minio_secret_key را بنا به دلایلی تغییر دهیم؛ حال مانیفست بالا را به صورت زیر ویرایش می‌کنیم:

minio_deployment.yml
kind: ManagedService
name: test-minio
spec:
service_name: minio
version: modern
parameters:
- name: minio_access_key
value: 12charachtersnew
- name: minio_secret_key
value: 12charachtersnew
- name: volume_name
value: VOLUME_NAME
resources:
memory: 512Mi

کار با MC

برای بررسی و استفاده از MinIO خارج از محیط سکوی ابری فندق شما می‌توانید از ابزار mc که یک Client رسمی از MinIO است استفاده کنید.

برای نصب این ابزار به روش‌های زیر می‌توانید عمل کنید:

brew install minio/stable/mc
mc --help


بعد از اینکه MinIO Client را نصب کردید باید تنظیمات امنیتی آن را تکمیل کنید تا mc بتواند به Object Storage شما متصل شود؛ برای این کار به ترتیب زیر عمل کنید:

mc config minio MINIO_SERVER_DOMAIN

در این دستور MINIO_SERVER_DOMAIN همان دامنه‌ای است که فندق در انتهای ساخت، به سرویس شما تخصیص می‌دهد.

Enter Access Key: MINIO_ACCESS_KEY_FROM_MANIFEST
Enter Secret Key: MINIO_SECRET_KEY_FROM_MANIFEST

در انتها زمانی که همه چیز به درستی انجام شود باید پیغام زیر برای شما نمایش داده شود:

Added `minio` successfully.

حال برای آنکه متوجه شوید mc به درستی کار می‌کند ابتدا وارد داشبورد Minio شوید و از طریق گزینه پایین سمت راست یک Bucket با نام دلخواه ایجاد نمایید.

بعد از آنکه Bucket را ایجاد کردید، داخل CLI دستور زیر را وارد کنید:

mc minio ls

خروجی این دستور حاوی لیستی از Bucketهای موجود در Object Storage شما خواهد بود.

MinIO Client حاوی دستورات دیگری ‌است که می‌توانید از طریق مستندات، آن را مطالعه نموده و استفاده نمایید.

مهاجرت از Legacy به Modern

اگر شما از آن دسته کاربرانی هستید که نسخه Legacy)قدیمی( سرویس MinIO استفاده می‌کنید، می‌توانید به ترتیب زیر عمل کنید.

مهم

در صورت مشاهده خطا در هر یک از قدم‌های بیان شده در ادامه مستندات، می‌توانید موضوع را به صورت تیکت با پشتیبانی سکو مطرح کنید تا در اسرع وقت مشکل شما حل شود.

۱- بکاپ مانیفست

قبل از هر کاری ابتدا یک نسخه پشتیبان از مانیفست سرویس خود دریافت نمایید. شما به دو روش می‌توانید این کار را انجام دهید:

Fandogh CLI

با دستور زیر می‌توانید مانفست سرویس خود را دریافت کنید.

fandogh service dump --service service_name

بعد از آنکه مانیفست را مشاهده کردید، آن را در یک فایل با فرمت yaml ذخیره نمایید.

Fandogh Dashboard

ابتدا وارد حساب کاربری خود شوید، سپس از منو سمت راست سرویس‌ها را انتخاب نمایید. سپس در لیست سرویس‌های خود، روی سرویس MinIO مورد نظر کلیک نمایید. بعد از آنکه وارد صفحه جزئیات سرویس شدید، روی دکمه دانلود مانیفست کلیک نمایید تا فایل مانیفست به صورت خودکار دانلود شود.

۲- ذخیره Access Key و Secret Key

بعد از ذخیره مانیفست، مقادیر زیر را تا پایان پروسه مهاجرت ذخیره نمایید.

  • minio_access_key
  • minio_secret_key
  • service_name

۳- حذف سرویس فعلی

سرویس MinIO فعلی را حذف نمایید.

توجه

در صورت حذف سرویس فعلی داده‌های شما حذف نمی‌شوند، فقط سرویس از Dedicated Volume جدا شده و حذف می‌گردد.

۴- ساخت سرویس جدید

حال که سرویس قبلی حذف شده است، با مشخصات زیر یک سرویس MinIO جدید ایجاد کرده به Dedicated Volume که داشتید متصل نمایید.

  • service_name
  • minio_access_key
  • minio_secret_key
  • volume_name
راهنمایی

توجه داشته باشید همانطور که قبلا هم بیان شد، مقادیر بالا باید کاملا همان مقادیر سرویس MinIO قبلی باشند.