DevOps End-to-end: اجرای یک برنامه .NET در Kubernetes با Docker ، ACR و AKS

ما با استفاده از هسته dotnet با هر IDE یک برنامه وب نمونه در حال ساخت خواهیم بود اما در مورد من ، من از VS Code استفاده خواهم کرد. این برنامه قبل از استقرار این کار در سرویس Azure Kubernetes (AKS) در یک خوشه محلی Kubernetes آزمایش می شود. شما همچنین می توانید از هر زبان مورد نظر خود استفاده کنید تا زمانی که بتوانید آن را در یک تصویر کانتینر بپیچید. ما برای این پروژه از C# استفاده خواهیم کرد.
- در مقابل کد
- اسکله
- لاجورد کلی
- حساب لاجورد
- .NET SDK
- کلون نمونه ای از این مخزن برای این پروژه با اجرای دستور:
git clone https://github.com/hpranav/kodekloud.git
- تغییر به فهرست مخزن
cd kodekloud/AKS/KodeKloudApp
قبل از تست برنامه خود ، اطمینان حاصل کنید که .NET SDK با بررسی ابتدا با استفاده از دستور نصب شده است
dotnet --list-sdks
اگر قبلاً نصب نشده است ، با کلیک روی برگه View به Command Pallete بروید و Command Pallete را انتخاب کنید. از طرف دیگر ، می توانید دکمه های Command+P را با هم فشار دهید.
نصب New .net SDK را جستجو یا انتخاب کنید
برای تکمیل و بررسی با اجرا صبر کنید تا نصب شود
dotnet --version
- اکنون که دات نت SDK را نصب کرده اید ، با اجرای برنامه خود را بسازید
dotnet build
من پیام هشدار دهنده را دریافت می کنم زیرا نسخه dotnet من نسخه 8 است در حالی که نسخه مورد استفاده در مخزن 7.0 است. برای اصلاح این موضوع ، من نسخه را در چارچوب هدف خود از 7.0 به 8.0 تغییر می دهم
- دویدن
dotnet run
دستور اجرای برنامه
- آدرس IP LocalHost (http: // localhost: 5142) را کپی کرده و آن را در یک مرورگر جدید چسبانده اید تا برنامه را تأیید کنید.
- در حین اجرای برنامه ، می توانید مقدار پیام را در پرونده AppSettings.json تغییر دهید. مرورگر را تازه کنید و خواهید دید که پیام تغییر کرده است
- با فشار دادن Ctrl+C می توانید برنامه را متوقف کنید
- اطمینان حاصل کنید که داکر در حال اجرا است.
- با اجرای دستور ، تصویر Docker را بسازید
docker build -t mywebapp:v1 .
توجه:اگر این خطا را بدست آورید ، این بدان معنی است که نسخه dotnet در dockerfile شما با نسخه نصب شده در دستگاه محلی شما متفاوت است. نسخه را در dockerfile خود ویرایش کنید
- تصویر Docker را با اجرا لیست کنید
docker images
- ما از این دستور استفاده خواهیم کرد:
docker run -d -p 8080:80 [name of your image]
این دستور تصویر را به عنوان یک Daemon با استفاده از سوئیچ -d اجرا می کند و آن را در پورت 8080 قرار می دهد و آن را مطابق با پورت 80 با استفاده از سوئیچ -p
- با اجرا وضعیت ظرف را بررسی کنید
docker container ls
- به مرورگر خود بروید و LocalHost را مرور کنید: 8080
ما از ابزار Kubectl برای استقرار برنامه خود در Kubernetes محلی استفاده خواهیم کرد. ساده ترین راه برای پیکربندی یک خوشه گره Kubernetes از Docker.
- دسک تاپ Docker خود را باز کنید
- علامت تنظیمات را انتخاب کنید
- برگه Kubernetes را انتخاب کنید
- برای فعال کردن Kubernetes روی ضامن کلیک کنید
- روی اعمال و راه اندازی مجدد کلیک کنید
- روی نصب کلیک کنید.
- پس از اتمام نصب ، با اجرای دستور ، زمینه فعلی را بررسی کنید
kubectl config current-context
- اگر زمینه فعلی روی Docker-Desktop تنظیم نشده است ، با اجرای دستور آن را تغییر دهید:
kubectl config use-context docker-desktop
- نسخه Kubectl را با اجرا تأیید کنید
kubectl --version
- با اجرای این دستور ضروری ، یک استقرار جدید ایجاد کنید:
kubectl create deployment [deployment-name] --image:[your-image-name] --replicas=[number-of-replicas]
- بیایید تأیید کنیم که استقرار با استفاده از آن ایجاد شده است
kubectl get deployment
می بینید که ماکت های 2/2 در حال اجرا هستند.
- برای اتصال به استقرار خود ، باید با استفاده از دستور آن را در یک سرویس افشا کنید:
kubectl expose deployment [deployment-name] --type:LoadBalancer --port=8080 --target-port=80
- خدمات را با اجرا تأیید کنید
kubectl get svc
- اگر به LocalHost: 8080 بروید ، خواهید دید که برنامه شما در حال اجرا است.
- به یاد داشته باشید که دو غلاف در خوشه خود در حال اجرا هستید تا تأیید کنید. کدام یک از آنها به شما خدمت می کند ، ویندوزهای جدید دیگری را در حالت ناشناس باز کنید و از LocalHost: 8080 بازدید کنید و نام سیستم را مقایسه کنید. دو غلاف با دویدن مشاهده می شوند
kubectl get pod
- اگر نام POD و نام سیستم را مقایسه کنید ، صفحه اول توسط غلاف دوم سرو می شود.
- صفحه دوم (باز شده در حالت ناشناس) توسط اولین غلاف ارائه می شود.
- برای نصب در CLI از AZ-CLI دیدن کنید
- دویدن
az --version
برای بررسی نسخه
- دویدن
az login
اگر این کار را نکرده اید ، CLI خود را به پورتال لاجورد خود وصل کنید.
- شما همچنین می توانید اجرا کنید
az account show
برای مشاهده حسابی که به آن وصل شده اید
- پس از ورود به حساب خود ، با اجرای برنامه پیش فرض را برای گروه منابع AKS خود تنظیم کنید
az configure --defaults group=[resource-group-name]
- دویدن
az aks get-Credentials --name [AKS name]
برای بارگیری اعتبار و ادغام آن در زمینه کاربر فعلی خود.
- تأیید کنید اگر Kubectl می تواند با اجرا به خوشه دسترسی پیدا کند
kubectl config current-context
- دویدن
kubectl get node
برای مشاهده گره (AgentPool) که هنگام ایجاد خوشه AKS انتخاب کردید.
- همچنین می توانید این موضوع را با پیمایش به پورتال لاجورد خود تأیید کنید ، خوشه ایجاد شده را باز کنید ، استخر گره را در زیر تنظیمات انتخاب کرده و برگه گره ها را انتخاب کنید.
اگر هم اکنون استقرار ایجاد کنید ، وضعیت غلاف شما errimagepull خواهد بود زیرا تصویر روی داک محلی شما است و به AK ها دسترسی پیدا نمی کنید. فشار دادن آن به Docker Hub باعث می شود تا ایجاد استقرار در دسترس باشد. برای فشار آوردن به تصویر خود ، این مراحل را دنبال کنید:
- تصویر را با اجرا برچسب بزنید
docker build -t
/ : .
- با دویدن تصویر را به Docker Hub فشار دهید
docker push
/ :
می توانید با ورود به Docker خود از طریق مرورگر ، تصویر را در مرکز Docker خود تأیید کنید و مخازن را انتخاب کنید
- اکنون که تصویر خود را در مرکز Docker خود قرار داده اید ، می توانید از آن برای ایجاد استقرار استفاده کنید.
- می توانید از غلاف نیز استفاده کنید
kubectl get po
همچنین می توانید استقرار و غلاف را در پورتال لاجورد خود بررسی کنید
- برای دسترسی به استقرار خود از خارج ، با ایجاد سرویس با استفاده از دستور ، آن را در معرض دید خود قرار دهید:
kubectl expose deployment [deployment-name] --type:LoadBalancer --port=80 --target-port=80
- دویدن
kubectl get svc
برای دستیابی به آدرس IP خارجی برای دسترسی به استقرار خود
- IP خارجی را به یک مرورگر جدید بچسبانید تا بررسی شود.
- برای مقیاس استقرار خود ، اجرا کنید
kubectl scale deployment [deployment-name] --replicas=5
- تعداد غلافها را بررسی کنید
می بینید که با توجه به تعداد مقیاس ، 5 غلاف در خوشه وجود دارد
شما هنگام ایجاد AK یک ACR ایجاد کرده اید و می خواهید تصویر Docker خود را به آن فشار دهید.
- به پورتال لاجورد بروید و ثبت و انتخاب کانتینر را انتخاب کنید
- رجیستری کانتینر خود را انتخاب کنید.
دو چیز وجود دارد که برای گره AKS شما لازم است تا تصویری را از ACR بکشید: - اتصال شبکه – از آنجا که SKU انتخاب شده در هنگام ایجاد ACR شما اصول اولیه بود ، دسترسی پیش فرض شبکه عمومی است و قابل تغییر نیست.
- خط مشی IAM – مجوز Acrpull به طور پیش فرض اختصاص داده شده است زیرا شما ACR خود را به همراه AKS ایجاد کرده اید
- برای فشار آوردن تصویر محلی خود به ACR ، تصویر را با اجرای دستور برچسب بزنید
docker tag local-image-name:tag ACR-login-server/image-name:tag
توجه: شما می توانید Acr-Login-Server خود را از صفحه نمای کلی ACR دریافت کنید
- برای ورود به ACR از کد VS من ، دستور را اجرا کنید:
az acr login --name ACR-login-server
- پس از موفقیت ورود به سیستم ، اجرا کنید
docker push ACR-login-server/image-name:tag
با انتخاب مخازن در داخل ACR شما تأیید کنید
- نکته بعدی استفاده از این تصویر برای ایجاد استقرار است.
- استقرار را در معرض دید قرار داده و IP خارجی را دریافت کنید
- IP خارجی را در یک مرورگر جدید بچسبانید تا بررسی کنید
شما با موفقیت تصویر خود را به ACR هل داده اید و آزمایش کرده اید که در حال کار است.
با تشکر از شما برای ماندن تا پایان