Iman Jowkar
Iman Jowkar
خواندن ۴ دقیقه·۳ سال پیش

آموزش نصب ArgoCD بر روي کلاستر کوبرنتيس

در اين سري از پست ها قصد دارم تا شما را با ArgoCD آشنا کنم.

مواردي که در اين پست به آن مي پردازيم به شرح زير است:

  • معرفي ArgoCD
  • نصب argocd بر روي cluster کوبرنتيس

معرفي ArgoCD:



اين روزها کمتر کسي است که در حوزه ي برنامه نويسي کار کند و اسمي از واژه ي devops را نشنيده باشد.

در اين پست قصد تعريف و مفاهيم دواپس را ندارم زيرا کسي که در حال مطالعه ي اين پست است حتما با اين مفاهيم آشنايي دارد.

همانطور که مي دانيد يکي از مفاهيم خيلي مهم در زمينه ي DevOps فرايند CI/CD مي باشد که در تصوير زير اين فرآيند به خوبي به تصوير کشيده شده است.


با توجه به تصوير بالا مشاهده مي شود که يکي از بخش هاي مهم بخش deploy کردن app به صورت مداوم مي باشد، يعني هروقت ورژن جديدي از نرم افزار توليد شد و نرم افزار build شد نوبت به deploy کردن آن بر روي سرور Production مي شود که در اين قسمت ArgoCD اين عمليات را انجام ميدهد.

در اصل کاري که ArgoCD انجام مي دهد اين است که به صورت پيوسته يک repo را برروسي ميکند که آيا ورژن جديدي از نرم افزار توليد شده يا خير، اگر توليد شده آن را برداشته و در سرور Prodcution پياده سازي مي کند(البته اگر نسخه ي جديد با مشکلي روبه رو شد ArgoCD به صورت خودکار به روي ورژن قبلي rollback مي کند).

نصب ArgoCD:

براي نصب ArgoCD ما احتياج به يک کلاستر کوبرنتيس داريم. کلاستر ما تشکيل شده از شش نود مي باشد که سه تاي آنها در نقش master node و سه تاي ديگر در نقش worker عمل مي کنند.

اگر در سرور master دستور زير را وارد کنيد اطلاعات کلي نود ها و وضعيت کلاستر را به شما نشان مي دهد.


kubectl get nodes -o wide

همانطور که مشاهده مي کنيد کلاستري ما تشکيل شده از 6 نود مي باشد که از kubelet 1.24 استفاده ميکند و به عنوان container run time بجاي docker از containerd استفاده ميکند (زيرا از ورژن 1.24 کوبرنتيس ديگر از docker پشتيباني نمي کند).


براي نصب ArgoCD از وبسايت آن استفاده کرده ايم.

براي نصب ArgoCD در ابتدا يک namespace به همين نام ايجاد مي کنيم

kubectl create namespace argocd

سپس يک directory به نام argocd بسازيد و وارد آن شويد.

mkdir argocd cd argocd/

در مرحله بعد لينکي که در وبسايت است را با دستور wget دريافت کنيد(دقت کنيد هميشه از همان وبسايت که در بالا معرفي کرديم فايل را دانلود کنيد شايد تغييراتي در yaml فايل ايجاد شده باشد ).

wget https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

با اجراي اين دستور فايل yaml اي براي شما در همين مسير دانلود مي شود. که نام فايل install.yaml است.

حال با دستور زير آن را پياده سازي کنيد

kubectl apply -f install.yaml -n argocd

براي مانيتور کردن وضعيت اين که پادها در چه وضعيتي هستند از دستور زير کمک بگيريد

watch kubectl get all -n argocd

بسته به سرعت اينترنت پادها بعد از مدتي روي سرورها پياده سازي ميشوند(به دليل دانلود کردن image ها) که در نهايت خروجي دستور بالا به شرح زير است.



همانطور که مشاهده مي کنيد تمام پاد ها در حالت running هستند. حال اگر بخواهيم از طريق web ui به اين ArgoCD دسترسي داشته باشيم بايد سرويس argocd-server را به صورت NodePort تعريف کنيم تا بتوانيم از بيرون به اين app دسترسي داشته باشيم.

با دستور زير اين عمليات را انجام دهيد:

kubectl patch svc argocd-server -n argocd -p '{&quotspec&quot: {&quottype&quot: &quotNodePort&quot}}'

حال با دستور زير پورتي که براي argocd باز شده را ميتوانيد مشاهده کنيد:

kubectl get svc -n argocd

که خروجي به صورت زير است که خط قرمز نشان دهنده ي پورتي است که ميتوانيم از بيرون به آن دسترسي داشته باشيم

مشاهده کنيد که ميتوان از پورت 30033 به argocd دسترسي پيدا کرد.(دقت کنيد که اين پورت به صورت random مي باشد و ممکن است براي شما متفاوت باشد).

حال وارد يک مرورگر شويد و با زدن IP يکي از worker ها(مهم نيست که کدام worker است) و پورت به محيط گرافيکي ArgoCD دست پيدا کرد. براي مثال ما از IP زير استفاده ميکنيم

https://192.168.9.50:30033

اگر همه مراحل قبل را به درستي رفته باشيد بايد صحفه ي اول argocd به صورت زير براي شما به نمايش در آيد

به صورت پيش فرض يوزر argocd با نام admin تعريف شده است و براي پيدا کردن پسورد کافي است که دستور زير را در سرور master وارد کنيد


kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath=&quot{.data.password}&quot | base64 -d; echo

خروجي اين دستور رمز argocd مي باشد. (حتما بعد از login کردن پسورد را از قسمت User Info تغيير دهيد).


در قسمت هاي بعد قصد دارم تا يک app که به صورت containerized توسعه يافته است را با argocd را پياده سازي کنم و شما را با فرايند CD و همچنين قابليت هاي ArgoCD آشنا کنم.

اميدوارم که اين براتون مفيد بوده باشه و بتونيد در محيط هاي عملياتيتون از ArgoCDاستفاده کنيد

امیدوارم با خوندن این مقاله مسير پيشرفت در اين حوزه براتون راحت تر بشه . اگر نظری یا سوالی دارین زیر همین پست پاسخگو هستم.



نرم افزارkubernetesdevopsci cd
iman jowkar
شاید از این پست‌ها خوشتان بیاید