DevOps Expert
3.36K subscribers
170 photos
3 videos
8 files
276 links
✔️ کانال آموزش دوآپس به فارسی

Contact:
@BobyCloud
@H_TESLA_S
@Majid_Aghamohamad
Download Telegram
راه اندازی پروژه جنگو با دیتابیس Postgresql بر بستر داکر

بهترین راه برای ادامه توسعه پروژه جنگو اینه که حتما یک dockerfile و docker-compose در دایرکتوری قرار بدین. در پست زیر تمام کار ها بصورت دستی انجام شده که خیلی توصیه نمیشه اما برای آشنایی با مفاهیم داکرایز کردن در جنگو و اینکه دقیقا چه اتفاقی در کانتینر میوفته میتونه گزینه خوبی باشه.

https://quberty.pythonanywhere.com/authors/@lnxpy/Local%20Django%20Project%20with%20Postgres%20Docker%20Container/

〰️〰️〰️〰️〰️〰️〰️
© @DevOpsEx
👍1
در کوبرنتیز هنگام عملیات Port Forwarding برای Expose کردن Service ها باید نام انتخاب کنیم. (در داکر اینطور نیست)
جالب‌ است که بدانیم در هنگام عملیات Port Forwarding در کوبرنتیز، می‌توانیم نام‌های اختصاصی برای Port پادهای کوبرنتیز انتخاب کنیم و سرویس کوبرنتیز را به پورت‌هایی بر اساس نام (نه پورت نامبر) به پادها متصل کنیم و فایل yaml تر و تمیزتری داشته باشیم. :)

در تصویر، پورت ۸۰ سرویس کوبرنتیز درخواست‌ها را به پورت http کانتینر forward میکند و پورت ۴۴۳ سرویس به پورت https کانتینر.
#کوبرنتیز #Kubernetes #k8s #k3s #نکته #pod #services
〰️〰️〰️〰️〰️〰️〰️
© @DevOpsEx
DevOps Expert
در کوبرنتیز هنگام عملیات Port Forwarding برای Expose کردن Service ها باید نام انتخاب کنیم. (در داکر اینطور نیست) جالب‌ است که بدانیم در هنگام عملیات Port Forwarding در کوبرنتیز، می‌توانیم نام‌های اختصاصی برای Port پادهای کوبرنتیز انتخاب کنیم و سرویس کوبرنتیز…
ممکنه از خودتون بپرسین کدوم آدم عاقلی پورت‌هارو اسم گذاری میکنه وقتی همه جاها از port number استفاده میشه؟ :)

سناریو: ممکنه شما هزاران پاد کوبرنتیز داشته باشید که روی پورت ۸۰ سرویس دهی می‌کنند، پادها دچار تغییراتی میشوند و سرویس جدیدی روی پورت ۸۰۸۰ اجرا میشود و سرویس قبلی روی پورت ۸۰ از کار می‌افتد، حالا اگر از نام گذاری پورت‌ها استفاده کرده باشید در لایه انتزاع pod های کوبرنتیز لازم هست pod spec را تغییر بدید، اما اگر از روش نام گذاری پورت‌ها استفاده نکرده باشید مجبور هستید علاوه بر آن service spec های کوبرنتیز را نیز برای این تطابق با این تغییر، تغییر دهید.
حذف تغییرات غیرضروری = زندگی راحت‌تر :)

#کوبرنتیز #Kubernetes #k8s #k3s #نکته #pod #services
〰️〰️〰️〰️〰️〰️〰️
© @DevOpsEx
شیوه اکسپورت کردن کانتینر های داکر از docker.io به quay.io.

با این ترفند میشه کانتینر ها رو روی Cloud Provider ها هم اکسپوز کرد و دسترسی ها رو حسابی ایمن کرد.

https://www.redhat.com/sysadmin/moving-openstack-containers

#داکر #docker

〰️〰️〰️〰️〰️〰️〰️
© @DevOpsEx
Kubernetes Learning Path | Version 2.0.pdf
2.6 MB
مسیر یادگیری کوبرنتیز از دید مایکروسافت.

در عرض 50 روز، مباحث مهم و بیسیک کوبرنیتز رو با استفاده از کورس های مایکروسافت یاد بگیرید!

اطلاعات بیشتر در ریپازیتوری زیر:
https://github.com/microsoft/kubernetes-learning-path

#kubernetes #docker #Microsoft #github #گیت_هاب #داکر #کوبرنتیز

〰️〰️〰️〰️〰️〰️〰️
© @DevOpsEx
راه اندازی گیت‌لب شخصی با استفاده از داکر. در این پست از تعریف مفاهیم پایه ای تا راه اندازی، توضیحاتی مختصر داده شده است.

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

پست از احمد رفیعی.

https://vrgl.ir/xTvW7

#docker #gitlab #virgool #داکر #گیت_لب #ویرگول

〰️〰️〰️〰️〰️〰️〰️
© @DevOpsEx
تفاوت Unit Test و Integration Test و Function Test

در Unit Test، بخش هایی از کد که بصورت مستقل کاری انجام میدن تست میشه. برای مثال می‌توان به توابع یا ماژول هایی اشاره کرد که فقط یک اپریشن کوچک انجام میدن تا یک دیتای استاتیک رو برگردونن و هیچ وابستگی به ماژول ها یا اسکریپت های دیگه ندارن.

در Integration Test، تست ها بصورت کلی تر و جامع تر انجام میشه. تست ها بشکلی انجام میشن که عملکرد چندین تابع که با هم در تعامل هستن مورد بررسی قرار میگیره.

در Function Test عملکرد پروژه مورد بررسی قرار میگیره. نمیشه گفت با مفهوم توابعی که در برنامه نویسی داریم یکی هست اما بیشتر معنی اون مهمه. در این تست، تعدادی تسک آماده میکنید و سیستم خودش رو به عنوان یوزر قرار میده و اون تسک ها رو انجام میده. میدونم یکم گیج شدین. به مثال زیر دقت کنین. 😅

فرض کنید یک محصول ساختید مثل تبلت. در Unit Test شما تست میکنید آیا دوربین به خوبی کار میکنه؟ آیا ماژول صدا اوکی هست؟ هر کدوم از این تست ها در واحد های مختلف نوشته و انجام میشن.

در بخش Integration Test، تست میکنید آیا در موقع ضبط ویدئو، دوربین و میکروفن با هم به خوبی کار میکنن؟ آیا سیم کارت با درایور شبکه تبلت به خوبی در ارتباط هستن؟ آیا الکتریسیته از باتری به خوبی به ماژول های سخت افزاری میرسه؟

در Function Test هم یک سری تسک ها برای سیستم در نظر میگیرم تا اونا رو انجام بده و اگر به مشکلی خورد سریع سرویس رو اصلاح کنیم. مثلا تست میکنیم آیا سلامتی باتری و سیم کارت به خطر میوفته؟‌ آیا وقتی ضبط صدا تمام شد، فایل به خوبی در دایرکتوری خودش سیو میشه؟



خلاصه: در یونیت تست، ما اجزای برنامه رو بصورت تکی تست میکنیم اما در Integration Test میایم ارتباط اون اجزا و functionality رو در مقایس بزرگتر مورد بررسی قرار میدیم. در فانکشن تست هم تنها تسک هایی رو میسازیم تا بصورت کلی، عملکرد محصول رو بسنجیم.


امیدورام مفید واقع شده باشه. به زودی در وبلاگم مثال های عملی و ملموس تری از انواع تست ها قرار میدم و همینجا واستون به اشتراک میذارم. ❤️👌

#testing #function_test #integration_test #unit_test #تست

〰️〰️〰️〰️〰️〰️〰️
© @DevOpsEx
An Angry Docker Whale Whos Attacking The Iptables
داشتم مقاله‌ای رو مطالعه می‌کردم از اینکه چرا داکر با فایروال به خوبی کنار نمیاد برام جالب بود چون آخر مقاله یک لینک از داکیومنت اصلی داکر قرار داد و گفت که تمام مشکلات از چه چیزی هست و روش درست کردنش هم گفته جمله هم این بود
"Prevent Docker From Manipulating IPtables"
حتما مطالعه کنید:
Link1: https://medium.com/@erfansahaf/why-docker-and-firewall-dont-get-along-with-each-other-ddca7a002e10
2️⃣Link2: https://docs.docker.com/network/iptables/
#container #docker #firewall #opensource #devops #devsecops
〰️〰️〰️〰️〰️〰️
© @DevOpsEx
برای نوشتن داکرفایل، شما باید هر ایمیج رو به روی یک بیس ایمیج پیاده کنید. اگر دقت کرده باشین اکثر ایمیج ها، از ایمیج اسکرچ (scratch) بعنوان base image استفاده میکنن.

این ایمیج دقیقا چیه؟ محتوای ایمیج چیه؟

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

وقتی شما در داکرفایلتون مینویسید From scratch درواقع داکر این خط رو یک لایه در نظر نمیگیره، بلکه بعنوان اولین پوینت در نوشتن ایمیجتون از 0 در نظر میگیره و دومین کامندی که در داکرفایل نوشتین درواقع اولین لایه ایمیج شماست.

پس اگر داکرفایلی داشته باشین که 3 خط باشه در اصل دو لایه هست. به همین دلیله که شما نمی‌تونید این ایمیج رو از داکرهاب پول کنید و یا ازش کانتینری بسازید.

به مثال های زیر دقت کنید. یک ایمیج خیلی ساده ساختیم با بیس ایمیج اسکرچ. (3 خط، 2 لایه)

FROM scratch
COPY hello /
CMD ["/hello"]


این هم یک ایمیج بر پایه پایتون. (3 خط، 3 لایه)

FROM python:3.9.0
WORKDIRD /test
COPY ./* .



#docker #scratch #python #داکر #اسکرچ #پایتون

〰️〰️〰️〰️〰️〰️〰️
© @DevOpsEx
هر زمان که فکر کردید کوبرنتیز به دردتون میخوره، یک سر به این سایت بزنید:
https://kubernetes.works
Now let’s lay down our admin hats and put our developer hats back on.
〰️〰️〰️〰️〰️〰️〰️
© @DevOpsEx
چطور یک ایمیج رو در داکر آپدیت کنیم؟

فرض کنید یک ایمیج Ubuntu نسخه 18 دارید و پروژتون درش قرار داره. همه چیز اوکیه و حالا میخواید اون Ubuntu 18 رو اپدیت کنید به نسخه 20.

شاید خیلیا تون فکر کنید که خب کاری نداره. میریم توی کانتینر این خط ها رو ران میکنیم:

$ sudo apt-get upgrade
$ sudo dist-upgrade


اما.. نه!! به 2 دلیل.

1. شما الان در یک کانتینر قرار داری و تغییراتی که اعمال میکنی به روی کانتینر اعمال میشه. (مگر اینکه ای کانتینر یک ایمیج دیگه بسازین)

2. ممکنه در روند اپدیت، تعدادی از پکیج های اساسی اپدیت نشن که ممکنه واستون مشکل ساز شه.

خب چیکار کنیم؟ معمولا افرادی که یکم حرفه ای تر دنبال میکنن، از docker-compose برای ران گرفتن از ایمیج هاشون استفاده میکنن. یک سری هم هستن که دستی اینکارو میکنن و فرقی نداره.

شما باید Dockerfile خودتون رو ادیت کنید. همونطور که قبلا گفتیم، هر ایمیج از بیس ایمیجی استفاده میکنه. کافیه نسخه base image رو تغییر بدیم و یک بار دیگه بیلد کنیم.

FROM ubuntu:18
👇
FROM ubuntu:20

و اولین بار که میخواین ران کنین به این شکل کانتینر ها رو بسازین:

Simple Way:
$ docker build && docker run -d -t ...

Using docker-compose:
$ docker-compose up -d --build

حالا لایه اول ایمیج شما rebuild شده و از ایمیجتون یک کانتر در حال ران هست.

#docker #ubuntu #update #upgrade #image #compose

〰️〰️〰️〰️〰️〰️〰️
© @DevOpsEx
معرفی وبسایت ping.eu

ممکنه در خیلی از مواقع، هنگام Trouble Shoot به ابزاری نیاز داشته باشید تا از یک جای دیگه به سرویس‌های شما متصل بشه و مواردی مثل Port های باز یا Ping یا Traceroute یا Reverse lookup و ... رو چک بکنه.

وبسایت https://ping.eu گزینه خوبی برای این کار هست، برای مثال ممکنه بخواهید بدونید آیا سرویس داکری که روی پورت ۸۰۸۰ بالا آوردید،‌ پورت سرور از بیرون به درستی open هست یا نه؟ میتونید در https://ping.eu/port-chk این مورد رو چک کنید.
شما هم اگر ابزارهای خوبی میشناسید معرفی کنید. ✌️

#معرفی #معرفی_ابزار #docker #داکر

〰️〰️〰️〰️〰️〰️〰️
© @DevOpsEx
تفاوت Proxy و Reverse Proxy به زبان ساده (با مثال)

پروکسی سرور ها، ریورس پروکسی ها و لود بلنسر ها از مفاهیم مهم آرشیتکت client/server هستن که در اکثر توپولوژی های پیشرفته میبینید.

در پست زیر به تفاوت این دو مبحث مهم می پردازیم. کمی هم درباره Load Balancer ها و ارتباط لود بلنسر با ریورس پراکسی رو درک میکنیم.


https://quberty.pythonanywhere.com/authors/@lnxpy/Proxy%20vs%20Reverse%20Proxy/

#proxy #reverse_proxy #quberty #load_balancer #architect #infrastructure

〰️〰️〰️〰️〰️〰️〰️
© @DevOpsEx
💥وبینار ملی چارچوب انطباق پذیر فناوری اطلاعات با رویکرد DevOps‌‎

🔹به اهتمام شاخه دانشجویی انجمن رمز ایران و باشگاه فن آفرینی آپاچی دانشگاه صنعتی اصفهان

♦️‌سخنران: علی ناظم رعایا
‌معمار و مشاور ارشد فناوری اطلاعات و ارتباطات - متخصص توسعه زیرساخت شبکه، مراکز داده و رایانش ابری - ‌‎استاد رسمی و بین المللی Microsoft و LPI

🔸زمان: جمعه- ۳۰ آبان ماه ۱۳۹۹ ۱۸ الی ۲۱
🔸‌ثبت نام و برگزاری وبینار از طریق ایوند:
https://evnd.co/x0BG2
توجه: تمامی هزینه های دریافتی از این رویداد به نفع خیریه آشیانه رحمت الهی می باشد.
البته شرکت در این رویداد می‌تواند برای شما رایگان باشد❗️
#docker #devops #devsecops #agile #scrum
‌‎#لینوکس #فناوری_اطلاعات #استارتاپ #وبینار #نرم_افزار
〰️〰️〰️〰️〰️〰️〰️
© @DevOpsEx
Forwarded from DLeX: AI Python (Farzad 🦅)
گفتگو مجید آقامحمد و محمد بابا زاده

🔰 موضوع گفتگو:

فریمورک Django و چالشهای آن

🔸 در تاریخ پنجشنبه ساعت ۲۰ به وقت تهران

در پیج اینستاگرام زیر برگزار میگردد.

https://instagram.com/ai_python_podcast


❇️ @AI_Python
مباحث مهم و حیاتی در Infrastructure و System Design

چند مدت پیش یک پست به اشتراک گذاشتم که تفاوت Proxy و Reverse Proxy رو همراه با مثال توضیح می داد. در این ریپازیتوری با مفاهیم اصلی اینفرااستراکچر و سیستم دیزاین آشنا میشین. تقریبا تمامی تاپیک های مهم پوشش داده شدن. (همراه با مثال)

خبر خوب!‌
اگه به کانتریبیوت کردن و ترجمه کردن علاقه دارین، میتونین از همین حالا ترجمه این داکیومنت رو شروع کنین. 👍

https://github.com/donnemartin/system-design-primer

#github #system_design #infrastructure #proxy #reverse_proxy

〰️〰️〰️〰️〰️〰️〰️
© @DevOpsEx