در این مقاله نحوه ایجاد یک محیط ایمیل سرور با کوبرنتیز در گوگل کلود را به شما آموزش میدهیم. دلایل انتخاب گوگل کلود از بین سایر پلتفرمهای ابر عبارتند از:
- گوگل مهمترین شرکتی است که کار توسعه کوبرنتیز و همچنین Golang را پیش میبرد (که این زبان در حال تبدیل شدن به زبان اصلی برای پلتفرمهای ابر مدرن است)؛
- گوگل کلود یک سرویس رایگان یک ساله با امکانات ذخیره و پردازش دارد و برای کسب مهارت در حوزه استقرار و عملیات در بستر ابر بسیار مفید است.
توجه: این مقاله، بخش دوم از یک سری مطلب درباره نصب ایمیل سرور داکر روی یک کلاستر کوبرنتیز است. هدف از ارائه این مطالب، اشتراکگذاری اطلاعات مفید با جامعه توسعهدهندگان و معرفی کلی پکیجهای RPM استاندارد و نحوه تبدیلشان به یک برنامه کاربردی مخصوص ابر است.
در مقاله «، نسخه مخزنی پکیج Axigen را ایجاد کردیم. حالا دوباره پکیج نرمافزار را ایجاد میکنیم تا امکان نصب آن در محیط ابر فراهم شود. پس از آن یک نمونه از نرمافزار را در محیط ابر اجرا میکنیم. »
انتشار نرمافزار ایمیل سرور با استفاده از داکر هاب
پیش از این مخزن را به صورت محلی از روی RPM ایجاد کردیم. برای اینکه نرمافزار از طریق ابر هم قابل دسترس (و قابل نصب) باشد، باید آن را برای توزیع به محل مشخصی بارگذاری کنیم.
مکانیزم داکر برای توزیع، استفاده از ایمیجی به نام رجیستری داکر است. این رجیستری، یک مخزن کاملاً ادغام شده با خط فرمان داکر است که فهرستی از ایمیجهای داکر در آن ثبت میشود و امکان فراخوانی مخازن بر اساس این ایمیجها را فراهم میکند.
رجیستری اصلی (و پیش فرض) داکر، داکر هاب است که توسط داکر مدیریت و نگهداری میشود و در دسترس همه قرار دارد. اگرچه میتوانیم از یک رجیستری داکر خصوصی استفاده کنیم اما تنظیم آن فراتر از حوزه این مقاله است. بنابراین از داکر هاب عمومی استفاده میکنیم.
در داکر هاب، به هر ایمیج «مخزن» گفته میشود. برای استفاده از مخازن عمومی نیازی به احراز هویت وجود ندارد اما استفاده از مخازن خصوصی محدود به کاربران احراز هویت شده است. انتشار ایمیج در داکر هاب برای توزیع آن، تنها توسط یک کاربر احراز هویت شده قابل انجام است.
برای ساختن و مدیریت مخازن نیاز به شناسه داکر (Docker ID) داریم. ثبتنام برای مخازن عمومی، رایگان است. در این مقاله از شناسه ionnistor استفاده میکنیم. اول به داکر هاب لاگین میکنیم (ابزار کاربردی داکر، اطلاعات اعتبارنامههای کاربری را حفظ میکند):
ion@IN-MBP ~ % docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don’t have a Docker ID, head over to https://hub.docker.com to create one.
Username: ionnistor
Password:
Login Succeeded
حالا اولین ایمیجهایی که به صورت محلی در اختیار داریم را مشاهده میکنیم:
ion@IN-MBP ~ % docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
my_2nd_new_and_shiny_axigen_image latest ef7ce0fd9a47 13 days ago 1.43GB
my_new_and_shiny_axigen_image latest e7ca09e1933b 13 days ago 1.43GB
برای push کردن (انتشار) یک ایمیج محلی به یک رجیستری داکر، باید آن را با یک نام مناسب برچسبگذاری کنیم. برای داکر هاب، این نام قالب <dockerID>/<repositoryName> دارد. برای رجیسترهای خصوصی، از قالب <dockerRegistryHostname/repositoryName> استفاده میشود.
on@IN-MBP ~ % docker tag my_2nd_new_and_shiny_axigen_image ionnnistor/my_2nd_new_and_shiny_axigen_image
ion@IN-MBP ~ % docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
ionnnistor/my_2nd_new_and_shiny_axigen_image latest ef7ce0fd9a47 13 days ago 1.43GB
my_2nd_new_and_shiny_axigen_image latest ef7ce0fd9a47 13 days ago 1.43GB
my_new_and_shiny_axigen_image latest e7ca09e1933b 13 days ago 1.43GB
نام جدید (inistor/my_2nd_new_and_shiny_axigen_image) برای ارجاع به همان ایمیجی که قبلاً ایجاد کرده بودیم (id ef7ce0fd9a47) استفاده میشود. به این برچسب برای انتشار در داکر هاب نیاز داریم چون فرمان push ترکیب پارامتر منبع/مقصد (‘source’ / ‘destination’) را دریافت نمیکند بلکه از خود نام برای شناسایی رجیستری داکر مقصد استفاده میشود.
پس از آماده شدن مقدمات، ایمیج را در داکر هاب منتشر میکنیم:
ion@IN-MBP ~ % docker push ionnistor/my_2nd_new_and_shiny_axigen_image
The push refers to repository [docker.io/ionnistor/my_2nd_new_and_shiny_axigen_image]
733c5df06d93: Pushed
0683de282177: Pushed
latest: digest: sha256:95e43e1f6cb87d3fcfadb97dbab4ba9789da80953ebd0d7118a1e4ecdcba6747 size: 742
در این مرحله، پرتال داکر هاب مخزن تازه ایجاد شده/ منتشر شده را نمایش میدهد:
حالا یک مخزن عمومی حاوی ایمیج Axigen ساخته شده بنام ionnistor/my_2nd_new_and_shiny_axigen_image داریم و در محیط ابر، با استفاده از همین نام و مسیر به آن دسترسی داریم.
استفاده از ایمیج داکر برای ساختن یک محیط ایمیل سرور با کوبرنتیز در گوگل کلود (GCP)
حالا کلاستر کوبرنتیز GCP را آماده میکنیم. همه عملیات در بخش Compute / Kubernetes Engine انجام میشوند. بنابراین در ادامه این مورد را حذف میکنیم.
کنسول GCP امکان ایجاد کلاستر کوبرنتیز را به ما میدهد. از منوی Clusters گزینه Create Cluster را انتخاب کنید.
سریعترین راه ایجاد یک خوشه، استفاده از My first cluster است که به صورت آماده در GCP وجود دارد:
با استفاده از تنظیمات پیش فرض، ساختن کلاستر چند دقیقه طول میکشد:
به این ترتیب ما کلاستر را ایجاد کردیم و حالا یک نمونه ایجاد میکنیم. به منوی Workloads رفته و گزینه Deploy را انتخاب کنید. در بخش Container گزینه Existing container image را انتخاب کرده و برای مسیر ایمیج، “ionnistor/my_2nd_new_and_shiny_axigen_image” را درج میکنیم. اگر یک مخزن Axigen منتشر کردهاید، باید ionnistor را به شناسه داکر خودتان تغییر دهید.
در بخش Configuration یک نام برای برنامه کاربردی انتخاب کنید (که نام نمونه ایجاد شده خواهد بود) و روی Deploy کلیک کنید.
پس از چند دقیقه، برنامه کاربردی ما مستقر شده و در GCP شروع به کار میکند. از آنجا که میخواهیم مطمئن شویم برنامهمان قابل اجرا است، آن را از طریق پورت WebAdmin HTTPS در معرض دسترسی از طریق اینترنت قرار میدهیم.
پس از ایجاد برنامه کاربردی خودمان، روی نام آن در بخش Workloads کلیک میکنیم تا صفحه Deployment Details باز شود. از منوی دراپ داون Actions بالای صفحه، گزینه Expose را انتخاب میکنیم.
مقدار Port و Target port را روی 9443 تنظیم میکنیم، نوع سرویس را Load Balancer انتخاب کرده و روی Expose کلیک میکنیم.
صبر میکنیم تا سرویس ایجاد شود و سپس از آدرس آیپی Load Balancer که در اینجا 35.188.224.202 است، یادداشت برداری میکنیم.
مرورگر را به مسیر https://<Load Balancer IP>:9443/ هدایت کنید. حالا باید ویزارد WebAdmin نمایش داده شود.
جمعبندی
با تبدیل یک RPM به یک ایمیج داکر، انتشار آن در داکر هاب، ایجاد و کلاسترسازی در پلتفرم ابر گوگل کلود و نصب ایمیج خودمان، به انتهای مسیرمان در زمینه آموزشهای ابر رسیدیم.
همانطور که قبلاً اشاره شد، نمونه ایجاد شده بخشی از یک آزمایش است بنابراین هنوز کاربردی نیست. موارد زیر از جمله موضوعاتی هستند که باید برای ایجاد یک نمونه ابر کاربردی مورد بررسی قرار گیرند:
- دامنه شبکه
- نگاشت پورتها و آدرسها به سرویسها برای ترافیک ورودی
- کانکشنهای خروجی برای تحویل ترافیک SMTP
- تنظیمات DNS
- دامنه ذخیره اطلاعات
- دائم کردن دادههای دامنه
- فرایندهای پشتیبان گیری
منبع: axigen