برنامه نویسی

استقرار EKS و ArgoCD را با Terraform به صورت خودکار انجام دهید

ما می دانیم که سال 2024 دیوانه کننده بوده است و، راستش را بخواهید، آنقدر که دوست داشتیم وقت نداشته ایم تا آن ساعات اضافی را به جامعه اختصاص دهیم. اما با استفاده از اولین روزهای سال 2025، فضایی را که برای ادامه کار روی این سریال در نظر داشتیم، پیدا کردیم.

در فصل قبل، دیدیم که چگونه ArgoCD به ما کمک می کند تا برنامه های خود را در EKS با رویکرد GitOps که بسیار دوست داریم مدیریت کنیم. با این حال، ما می دانیم که تئوری همیشه کوتاه است 🥶. بنابراین، در این فصل می‌خواهیم یک خوشه EKS را با ArgoCD با استفاده از Terraform مستقر کنیم. ما در مورد الزامات، نحوه اتصال مخازن و نحوه تأیید اعتبار همه چیز صحبت خواهیم کرد تا بتوانید آزمایش خود را شروع کنید.

در این مناسبت، ما قرار نیست خودمان را با خطوط لوله استقرار پیچیده کنیم و بیش از حد بر روی بهترین شیوه ها، مدیریت مخفی یا بهینه سازی کد تمرکز نخواهیم کرد. آنچه ما در اینجا به دنبال آن هستیم این است که بفهمیم چگونه ArgoCD می تواند استقرارهای ما را چابک تر کند و مزایایی که به همراه دارد. اما نگران نباشید، اگر زمان (و انگیزه 😅) به ما اجازه دهد، دامنه این پست ها را گسترش خواهیم داد تا بعداً همه آن موضوعات را پوشش دهیم.

🛠️نیازها🛠️

همانطور که قبلاً اشاره کردیم، خوشه EKS را با ArgoCD با استفاده از Terraform مستقر خواهیم کرد. برای اینکه بتوانید خودتان آن را امتحان کنید، کد را در مخزن زیر آپلود کرده ایم:
https://github.com/rnanudevops/eks-argocd-awsespanol

ما قبلاً از این ماژول در پست قبلی برای استقرار و آزمایش Karpenter استفاده کردیم (به اینجا نگاه کنید: https://dev.to/aws-espanol/optimiza-tu-cluster-eks-con-karpenter-3mk1).
این بار، ما پیکربندی لازم را برای گنجاندن استقرار ArgoCD اضافه کرده‌ایم.

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

  • برچسب ها: برچسب ها را تغییر دهید تا نمایشگر مطابق با نیاز شما سفارشی شود.
  • S3 Bucket: مطمئن شوید که سطلی را که در آن حالت Terraform ذخیره می شود، پیکربندی کنید.

این ماژول تمام خدمات لازم برای استقرار یک خوشه EKS از جمله پیکربندی شبکه را مستقر می کند.

پس از استقرار کد Terraform، بیایید نحوه دسترسی به خوشه EKS و ArgoCD را ببینیم.

در مورد ما، ما خوشه را awtwins-cluster نامیده ایم:

EX

برای دسترسی به خوشه، باید زمینه kubectl را با استفاده از دستور زیر به روز کنیم:

aws eks --region eu-west-1 update-kubeconfig --name awtwins-cluster

برای تأیید اینکه اتصال به درستی برقرار شده است، می توانیم موارد زیر را اجرا کنیم:

kubectl get pods -A

این به ما باز خواهد گشت:

NAMESPACE     NAME                                                READY   STATUS    RESTARTS   AGE
argocd        argocd-application-controller-0                     1/1     Running   0          6m23s
argocd        argocd-applicationset-controller-5db4d64b99-72k5m   1/1     Running   0          6m23s
argocd        argocd-dex-server-67d695d958-4p4dt                  1/1     Running   0          6m23s
argocd        argocd-notifications-controller-5795d744fd-sxhjz    1/1     Running   0          6m23s
argocd        argocd-redis-5688bd4c9f-hg7zk                       1/1     Running   0          6m23s
argocd        argocd-repo-server-84d9d8fcfb-dsnfj                 1/1     Running   0          6m23s
argocd        argocd-server-d5f5767b6-4ffw8                       1/1     Running   0          6m23s
kube-system   aws-node-kzx4v                                      2/2     Running   0          7m28s
kube-system   aws-node-wwn2g                                      2/2     Running   0          7m23s
kube-system   coredns-844dbb9f6f-52lv9                            1/1     Running   0          9m53s
kube-system   coredns-844dbb9f6f-7khjt                            1/1     Running   0          9m53s
kube-system   kube-proxy-2dm9t                                    1/1     Running   0          7m23s
kube-system   kube-proxy-zn2lv                                    1/1     Running   0          7m28s
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله بعدی به دست آوردن آدرس ArgoCD است که با استفاده از LoadBalancer موجود در کد Terraform در معرض نمایش قرار می گیرد. برای این کار اجرا می کنیم:

kubectl -n argocd get svc argocd-server

NAME            TYPE           CLUSTER-IP       EXTERNAL-IP                                                               PORT(S)                      AGE
argocd-server   LoadBalancer   172.20.193.200   ab577983472254f28a7ae93e22a478af-2061443254.eu-west-1.elb.amazonaws.com   80:30482/TCP,443:30189/TCP   10m
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مقدار EXTERNAL-IP را کپی می کنیم و از مرورگر به این آدرس دسترسی پیدا می کنیم.

به طور پیش فرض، ArgoCD یک کاربر مدیر (admin) و یک رمز عبور اولیه ایجاد می کند. برای به دست آوردن این رمز عبور، دستور زیر را اجرا کنید:
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d

با این اعتبارنامه ها (کاربر: admin و رمز عبور تولید شده)، به ArgoCD دسترسی پیدا می کنیم.
🚨این کاربر هرگز نباید در محیط های تولیدی استفاده شود و توصیه می شود آن را غیرفعال کنید.🚨

ArgoCD 2

پس از ورود به ArgoCD، اولین قدم پیکربندی مخزن است که در آن برنامه های خود را ذخیره می کنیم. برای ساده کردن سناریو، از ArgoCD CLI استفاده خواهیم کرد. این به ما امکان می دهد پیکربندی را به روشی ساده و کارآمد انجام دهیم.

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

argocd login ab577983472254f28a7ae93e22a478af-2061443254.eu-west-1.elb.amazonaws.com --insecure
Username: admin
Password:
'admin:login' logged in successfully
Context 'ab577983472254f28a7ae93e22a478af-2061443254.eu-west-1.elb.amazonaws.com' updated
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در این مثال، ما از GitHub به عنوان مخزن استفاده خواهیم کرد، اما شما می توانید از موارد دیگر مانند BitBucket یا GitLab استفاده کنید. شما باید یک مخزن و یک کاربر با مجوزهای لازم ایجاد کنید.

پس از آماده شدن، مخزن را به ArgoCD با استفاده از:

argocd repo add --username --password

به ArgoCD دسترسی پیدا کنید و بررسی کنید که مخزن در قسمت Settings > Repositories ظاهر شود و تأیید کنید که به درستی متصل شده است.

توضیحات تصویر

با این کار، ما اکنون محیط EKS و ArgoCD خود را پیکربندی کرده ایم و یک مخزن را برای شروع مدیریت برنامه های خود وصل کرده ایم. 🚀

در پست بعدی خواهیم دید که چگونه اپلیکیشن ها را در ArgoCD مستقر کنیم و از چه استراتژی ها و شیوه های خوبی می توانیم برای استقرار خود استفاده کنیم.

💬 و به یاد داشته باشید، نظرات و نظرات شما قابل استقبال است. 😝

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا