متن خبر

آزادسازی قدرت ArgoCD با ساده کردن استقرار Kubernetes

آزادسازی قدرت ArgoCD با ساده کردن استقرار Kubernetes

شناسهٔ خبر: 877606 -




کلیدهای آماده

ArgoCD (ابزار سی دی DeFacto برای Kubernetes) با استفاده از GIT به عنوان منبعی از حقیقت، انتشارات را روان می کند. می توانید وضعیت برنامه خود را در Git تعریف کنید و ArgoCD کلاستر را در حالت دلخواه نگه می دارد.

برخلاف رویکرد مبتنی بر فشار سنتی، ArgoCD در داخل خوشه اجرا می‌شود و تغییرات را از GIt می‌کشد، که تضمین می‌کند کلیدها و اسرار API فاش نمی‌شوند، و آن را به انتخاب ایمن‌تر و مطمئن‌تر برای شرکت‌های بزرگ تبدیل می‌کند.

شرکت‌های بزرگی مانند LoveHolidays و CVTE از ArgoCD برای مدیریت استقرار در مقیاس عظیم استفاده کردند. به عنوان مثال، LoviHoliday تریلیون ها درخواست و بیش از 1500 استقرار را در یک ماه انجام می دهد که همه اینها به لطف ArgoCD است.

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

این وبلاگ شامل یک نسخه نمایشی عملی است که نشان می دهد چقدر آسان است که ArgoCD را بر روی یک خوشه minikube تنظیم کنید و همگام سازی تغییرات را در زمان واقعی تماشا کنید.

مقدمه

Kubernetes بیش از یک دهه است که وجود داشته است و از آن زمان تاکنون کاربرد آن در حال افزایش است. Kubernetes (K8s) در سال 2014 توسط گوگل شروع به کار کرد، یک سیستم کانتینر-ارکستراسیون منبع باز است که استقرار، مقیاس‌بندی و مدیریت نرم‌افزار را خودکار می‌کند.

در ابتدا توسط Google توسعه داده شد، به بنیاد محاسبات Cloud-Native (CNCF) منتقل شد، که آن را با جامعه ای با بیش از 80 هزار مشارکت کننده حفظ و توسعه می دهد. این برنامه استقرار یکپارچه ای را برای ما فراهم می کند، اما برای اطمینان از تحویل مداوم و خودکار نسخه های کد جدید، از توسعه تا تولید، بدون دخالت دستی، به تحویل مداوم (CD) در Kubernetes نیاز داریم.

ابزارهای CD زیادی برای Kubernetes در بازار وجود دارد، اما محبوب‌ترین آنها عبارتند از ArgoCD، FluxCD، JenkinsX و GitHub Actions. در میان آنها، ArgoCD به یک انتخاب محبوب برای شرکت های بزرگ برای سیستم کنترلی و کنترل نسخه خود تبدیل شد. طبق اسناد رسمی:

ArgoCD یک ابزار تحویل مداوم GitOps برای Kubernetes است.

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

ArgoCD چگونه کار می کند؟

ArgoCD از الگوی GitOps پیروی می کند. از مخازن Git به عنوان منبع حقیقت برای تعریف حالت برنامه مورد نظر استفاده می کند. برای توصیف مانیفست Kubernetes ما گزینه های مختلفی را در اختیار ما قرار می دهد:

شخصی سازی برنامه ها

نمودارهای هلم

فایل های Jsonnet

مانیفست ساده و مستقیم YAML/JSON

هر ابزار مدیریت پیکربندی سفارشی که به عنوان یک افزونه مدیریت پیکربندی پیکربندی شده است

حالت مورد نظر یک برنامه را در محیط های هدف مشخص شده خودکار می کند. می‌توانید استقرار برنامه‌های خود را با شاخه‌ها و برچسب‌ها ردیابی کنید یا به نسخه خاصی از مانیفست‌ها در Git Commit پین شوید.

ArgoCD به عنوان یک کنترلر Kubernetes پیاده سازی شده است که به طور مداوم برنامه های در حال اجرا را نظارت می کند و وضعیت فعلی را با وضعیت مطلوب (همانطور که در مخزن Git مشخص شده است) مقایسه می کند. پیکربندی موجود در مخزن Git تنها منبع حقیقت است.

هنگامی که حالت مورد نظر با وضعیت فعلی متفاوت است، برنامه OutOfSync است. برای این، ArgoCD تفاوت ها را گزارش و تجسم می کند و در عین حال امکاناتی را برای همگام سازی خودکار یا دستی حالت زنده به حالت هدف مورد نظر فراهم می کند. هر گونه تغییر در مخزن Git وضعیت مطلوب برنامه را تغییر می دهد.

فشار V/S کشش مبتنی بر CI/CD

پیاده‌سازی‌های قبلی CI/CD بر رفتار فشار محور متکی بودند، که خوشه شما را به پلتفرم CI/CD شما متصل می‌کند و از ابزارهایی مانند Kubectl و HELM در خط لوله شما برای اعمال تغییرات Kubernetes استفاده می‌کند.

ArgoCD یک سیستم CI/CD مبتنی بر کشش است. در داخل خوشه Kubernetes شما اجرا می شود و منابع را از مخازن شما می کشد. سپس Argo تغییرات را بدون یک خط لوله پیکربندی دستی برای شما اعمال می کند.

این مدل نسبت به گردش های کاری مبتنی بر فشار ایمن تر است. لازم نیست سرور API خوشه خود را افشا کنید یا اعتبار Kubernetes را در پلتفرم CI/CD خود ذخیره کنید. به خطر انداختن مخزن منبع، تنها به مهاجم اجازه می دهد به جای کد، به کد شما دسترسی داشته باشد و مسیری برای استقرار زنده شما داشته باشد.

معماری

منبع: ArgoCD Official Docs

اجزاء:

ArgoCD دارای سه جزء است: API Server، Repository Server و Application Controller. هر یک نقش تعیین کننده ای ایفا می کند. اگر هر کدام از کار بیفتد، برنامه از کار خواهد افتاد. بیایید آنها را عمیقاً درک کنیم:

API Server : سرور API یک سرور gRPC/REST است که API مصرف شده توسط Web UI، CLI و سیستم CI/CD را نشان می دهد. وظایف زیر را بر عهده دارد:

مدیریت برنامه و گزارش وضعیت

شامل عملیات برنامه (به عنوان مثال، همگام سازی، بازگشت)

مدیریت مخزن و کلاستر

Auth و ارائه دهنده هویت خارجی آن

اجرای RBAC

شنونده Webhooks of git

Repository Server : یک سرور داخلی یک کش محلی از git repo نگه می دارد که مانیفست برنامه را نگه می دارد. مسئولیت‌های اصلی شامل تولید و برگرداندن مانیفست‌های Kubernetes در صورت ارائه ورودی‌های زیر است:

آدرس Repo

تجدید نظر (تعهد، برچسب، شاخه)

مسیر برنامه

تنظیمات خاص الگو: پارامترها ، helm values.yaml

Application Controller : یک کنترلر Kubernetes به طور مداوم برنامه های در حال اجرا را نظارت می کند و وضعیت فعلی را با وضعیت مطلوب (همانطور که در git repo مشخص شده است) مقایسه می کند. وضعیت برنامه OutOfSync را تشخیص می دهد و به صورت اختیاری اقدامات اصلاحی انجام می دهد. در اصل مسئول فراخوانی قلاب های تعریف شده توسط کاربر برای رویدادهای چرخه حیات، از جمله P re-Sync، Sync، و Post-Sync است.

چالش های با تحویل مداوم

Argo CD با اجرای یک رویکرد GitOps برای استقرار با چندین چالش تحویل مداوم مبارزه می کند. این استقرار را با مدیریت دریفت‌های مداوم، ساده‌سازی عملیات، و اطمینان از انتشار سازگارتر و قابل اطمینان‌تر، خودکار می‌کند. در زیر برخی از چالش های کلیدی حل شده توسط آرگو سی دی آورده شده است:

Configuration Drift : Argo CD تضمین می کند که استقرارها وضعیت مطلوب برنامه تعریف شده در Git (منبع منفرد حقیقت) را منعکس می کند و از پیکربندی نادرست در خوشه جلوگیری می کند.

اتوماسیون و قابلیت اطمینان : با حذف مراحل دستی و کاهش خطا، استقرارها را خودکار می کند.

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

مدیریت چند خوشه : با ساده‌سازی استقرار در بسیاری از خوشه‌های Kubernetes در محیط‌های توزیع‌شده، از مدیریت چند خوشه‌ای پشتیبانی می‌کند.

عملیات ساده شده : با ارائه یک رابط کاربر پسند، عملیات را ساده می کند و کارهایی مانند بازگشت به عقب را تنها با یک کلیک خودکار می کند.

ویژگی های ArgoCD

استقرار خودکار برنامه ها در محیط های هدف مشخص شده

پشتیبانی از چندین ابزار مدیریت پیکربندی / قالب (Kustomize، Helm، Jsonnet، plain-YAML)

توانایی مدیریت و استقرار در خوشه های مختلف

سیاست های چند اجاره ای و RBAC برای مجوز

Rollback/Roll-anywhere به هر پیکربندی برنامه کاربردی در مخزن Git

همگام سازی خودکار یا دستی برنامه ها در حالت دلخواه

رابط کاربری وب که نمای لحظه ای از فعالیت برنامه را ارائه می دهد

CLI برای اتوماسیون و ادغام CI، ادغام Webhook (GitHub، BitBucket، GitLab)

برای اتوماسیون به نشانه ها دسترسی پیدا کنید

مسیرهای حسابرسی برای رویدادهای برنامه و تماس های API

Prometheus Metrics Parameter برای نادیده گرفتن پارامترهای فرمان در Git نادیده گرفته می شود

مطالعات موردی: چگونه شرکت های بزرگی مانند LoveHolidays، CVTE و BabyLon از ArgoCD برای افزایش بهره وری استفاده می کنند؟

ArgoCD در 26 مارس 2020 در CNCF در سطح بلوغ جوجه کشی پذیرفته شد و سپس در 6 دسامبر 2022 به سطح بلوغ Graduated منتقل شد. به بسیاری از شرکت‌ها مانند Love Holidays و CVTE کمک کرده است تا گردش‌های کاری را اجرا کنند، خوشه‌ها را مدیریت کنند و GitOps را به درستی انجام دهند.

LoveHolidays یکی از سریع ترین آژانس های مسافرتی آنلاین در بریتانیا و ایرلند است. در سال 2023 به بازار آلمان گسترش یافت تا به مشتریان خود انتخاب های نامحدودی را با سهولت بی نظیر و ارزش غیرقابل چشم پوشی ارائه دهد و تجربه تعطیلات عالی را ارائه دهد. از آنجایی که پایگاه کاربران آنها افزایش یافته است، بهبود قابلیت مشاهده و تشخیص حادثه برای آنها دشوار است.

برای حل این مشکل، LoveHolidays LinkerD را به عنوان شبکه سرویس Kubernetes خود به همراه ARGOCD برای GitOps و Argo Rollouts برای تقویت استقرار قناری ها استفاده کرد. براساس اعداد، LoveHolidays تریلیون‌ها ترکیب هتل و پرواز در روز را مدیریت می‌کند، بیش از 1500+ استقرار تولید در ماه را مستقر می‌کند و حدود 5000 پاد را با حدود 300 Deployments/StatefulSets در حال تولید است.

اخیراً آنها از Flux به Argo CD مهاجرت کردند و با استقرارهای مبتنی بر Gitops، بیش از 1500 بار در یک ماه به تولید رسیدند.

CVTE ، مستقر در چین، یک شرکت الکترونیکی است که فناوری‌های بومی ابری را پذیرفته و سال‌ها خدمات را در Kubernetes اجرا می‌کند. اکثر برنامه های آنها بر روی خوشه های فلزی و لبه های خالی در یک محیط خصوصی اجرا می شوند و دسترسی به این برنامه های کاربردی خارج از خوشه را چالش برانگیز می کند.

برای حل این مشکل، آنها از OpenELB استفاده کردند که با استفاده از حالت Layer 2، خدمات متعادل کننده بار را بر روی فلز خالی نشان داد. آنها از ArgoCD برای ساخت خطوط لوله خودکار و Nginx Ingress برای رسیدگی به درخواست های لایه 7 استفاده می کنند. در دامنه خود، هنگامی که آنها از سرور ArogCD خود بازدید می کنند، سیستم درخواست را به روتری که درخواست آنها را پخش می کند، ارسال می کند.

با استفاده از ARGOCD و openELB، این شرکت پیچیدگی زیرساخت های خود را کاهش داده، قابلیت های خود درمانی خود را افزایش داده و قابلیت های نظارتی خود را بهبود بخشیده است.

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

برای حل این مشکل، آنها برنامه کاربری خود را در سال 2018 با استفاده از Kubeflow به پلتفرم Kubernetes منتقل کردند و این تغییر باورنکردنی بوده است! تیم‌ها می‌توانند به‌جای اینکه ساعت‌ها یا روزها برای محاسبه منتظر بمانند، فوراً دسترسی داشته باشند. اعتبارسنجی بالینی که قبلاً 10 ساعت طول می کشید، اکنون در کمتر از 20 دقیقه انجام می شود. با استفاده از ArgoCD برای GitOps، تیم می‌تواند این فرآیند را به طور گسترده مقیاس‌بندی کند.

بهترین روش ها برای استفاده از آرگو سی دی

در اینجا برخی از بهترین اقداماتی که هنگام کار با Argo CD باید در نظر داشته باشید آورده شده است:

از ApplicationSets برای مدیریت پویا برنامه استفاده کنید — ApplicationSets را برای خودکار کردن استقرار برنامه های مشابه (مثلاً به ازای هر مستاجر یا خوشه) از الگوها، کاهش مداخلات دستی و دیگ بخار استفاده کنید.

پین کردن نسخه‌های سی‌دی Argo و CRD - از ارتقا خودکار Argo CD یا تعاریف منابع سفارشی آن اجتناب کنید. برای جلوگیری از شکستن تغییرات یا رفتار غیرمنتظره در برنامه، نسخه‌ها را صریحاً پین کنید.

حذف منابع را اعمال کنید و تفاوت ها را نادیده بگیرید - حذف منابع یا تنظیمات مختلف را پیکربندی کنید (مثلاً نادیده گرفتن فیلدهای وضعیت ) برای جلوگیری از تشخیص رانش مثبت کاذب.

برنامه‌های کاربردی را برای اتوماسیون و ممیزی برچسب‌گذاری و برچسب‌گذاری کنید- از ابرداده‌های ثابت در برنامه‌های ArgoCD خود برای فعال کردن فیلتر کردن، گزارش‌دهی یا مدیریت چرخه عمر خودکار استفاده کنید.

ArgoCD را در یک فضای نام یا کلاستر اختصاصی اجرا کنید - Argo CD را به یک فضای نام یا خوشه خاص جدا کنید تا کنترل دسترسی را ساده کنید، از تضادها جلوگیری کنید و وضوح عملیاتی را بهبود بخشید.

یک نمایش عملی

پس از آشنایی با Argo CD و کاربردهای آن، اجازه دهید یک دمو عملی داشته باشیم و ببینیم چگونه کار می کند. ما یک سی دی Argo را در یک خوشه minikube نصب می کنیم و جادو را مشاهده می کنیم. مراحل را دنبال کنید:

اگر minikube را نصب نکرده اید، آن را از وب سایت رسمی آن نصب کنید و دستور زیر را اجرا کنید:

شروع minikube

ArgoCD را با استفاده از دستور زیر نصب کنید:

Kubectl ایجاد فضای نام argocd

kubectl application -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

رمز اولیه را با استفاده از دستور زیر دریافت کنید:

kubectl -n argocd دریافت مخفی argocd-initial-admin-secret -o jsonpath='{.data.password}' | base64 -d

خروجی را کپی کرده و برای مرحله بعد ذخیره کنید.

سرور ArgoCD API را با استفاده از ارسال پورت در معرض دید قرار دهید:

kubectl port-forward svc/argocd-server -n argocd 8081:443

اکنون به localhost:8081 خود بروید، یک هشدار به شما ارائه می شود، خطر را بپذیرید و ادامه دهید.

در نام کاربری، "admin" را وارد کنید. رمز عبور خروجی ذخیره شده از مرحله قبل است.

پس از ارائه مدارک، داشبورد ArgoCD به شما نمایش داده می شود. بر روی Create Application کلیک کنید و تنظیمات زیر را ارائه دهید:

نام برنامه: argo-cd-demo

نام پروژه: پیش فرض

خط مشی همگام سازی: خودکار

زیر منبع، پیکربندی زیر را ارائه دهید

در قسمت مقصد، پیکربندی زیر را ارائه دهید

و Create را بزنید. 2-3 دقیقه صبر کنید تا غلاف ها به خوبی اجرا شوند.

اکنون در ترمینال، دستور زیر را برای تغییر تعداد کپی‌های nginx-deployment اجرا کنید:

 kubectl scale --replicas=2 deployment/nginx-deployment

متوجه خواهید شد که تعداد پادها به 2 عدد افزایش می یابد و وضعیت برنامه OutOfSync خواهد بود. با این حال، هنگامی که روی همگام سازی کلیک کنید، به طور خودکار به نسخه قبلی باز می گردد، همانطور که در git repo ما، جایی که ما سه نسخه را مشخص کردیم. برای انجام خودکار این کار می توانید خود درمانی را فعال کنید.

از آنجایی که خط‌مشی همگام‌سازی ما روی Automatic تنظیم شده است، بیایید تغییراتی را در git repo ایجاد کنیم و ببینیم آیا تغییرات در برنامه را منعکس می‌کنند یا خیر. در deploy.yml، ماکت ها را به جای 3، هشت ساخته و تغییر را انجام دهید. پس از چند ثانیه، خواهید دید که ArgoCD تغییرات را در برنامه ما کشیده و منعکس می کند.

پس از اتمام کار، کافیست دستور زیر را برای پاکسازی منابع اجرا کنید:

minikube حذف کنید

مراجع

خبرکاو

ارسال نظر




تبليغات ايهنا تبليغات ايهنا

تمامی حقوق مادی و معنوی این سایت متعلق به خبرکاو است و استفاده از مطالب با ذکر منبع بلامانع است