Click-to-Cluster: ارائه Gitops EKS-جامعه dev

یک سناریو را تصور کنید که در آن باید محیط های اختصاصی Kubernetes را برای کاربران یا تیم های خاص در صورت تقاضا فراهم کنید. ایجاد و مدیریت دستی این خوشه ها می تواند وقت گیر و مستعد خطا باشد. در این آموزش ، ما نحوه اتوماسیون این فرآیند را با استفاده از ترکیبی قدرتمند از ARGOCD ، SVELTOS و CLUSTERAPI نشان می دهیم. ما یک گردش کار GITOPS را تنظیم خواهیم کرد که اضافه کردن یک کاربر جدید از طریق درخواست کشش باعث می شود تهیه خودکار یک خوشه اختصاصی EKS ایجاد شود. ARGOCD وضعیت مورد نظر خوشه مدیریت ما را حفظ خواهد کرد ، Sveltos تغییرات و ایجاد خوشه ارکسترات را تشخیص می دهد ، و Clusterapi با تهیه خوشه های EKS اداره می کند. این آموزش یک تجربه مفید در ساخت یک خط لوله تهیه خوشه ای قوی و مقیاس پذیر ارائه می دهد.
قله
Argo CD یک ابزار منبع باز و تحویل مداوم (CD) برای Kubernetes است که به طور خودکار استقرار ، نظارت و بازپرداخت برنامه ها را خودکار می کند. این یک ابزار اعلانی است که از اصول GITOPS استفاده می کند تا اطمینان حاصل شود که وضعیت مطلوب یک برنامه همیشه در وضعیت واقعی مدیریت یا خوشه بار کاری Kubernetes منعکس می شود.
سرعت
Sveltos مجموعه ای از کنترل کننده های Kubernetes است که در یک خوشه مدیریتی فعالیت می کنند. از این نقطه مرکزی ، Sveltos مدیریت افزودنی ها و برنامه های کاربردی را در یک ناوگان از خوشه های Kubernetes مدیریت می کند. این روش از یک رویکرد اعلانی استفاده می کند ، و اطمینان می دهد که حالت مورد نظر به طور مداوم در این محیط های مدیریت شده منعکس می شود.
خوشه
Clusterapi (CAPI) یک پروژه فرعی Kubernetes است که API های اعلامی ، Kubernetes را به ایجاد خوشه ، پیکربندی و مدیریت می رساند. این امکان را به شما می دهد تا با استفاده از همان رویکرد اعلامیه ای که برای مدیریت برنامه ها استفاده می کنید ، چرخه عمر خوشه های Kubernetes را مدیریت کنید.
مرحله 1: ClusterApi را در خوشه مدیریت نصب کنید
ما به عنوان خوشه مدیریت خود از یک خوشه مهربان استفاده خواهیم کرد. برای شروع ، ما باید ClusterApi را با ارائه دهنده زیرساخت AWS مستقر کنیم.
ابتدا اعتبار AWS خود را پیکربندی کنید:
export AWS_ACCESS_KEY_ID=
export AWS_SECRET_ACCESS_KEY=
clusterawsadm bootstrap iam create-cloudformation-stack --region us-east-1
export AWS_B64ENCODED_CREDENTIALS=$(clusterawsadm bootstrap credentials encode-as-profile)
سپس ، Clusterapi را اولیه کنید:
export AWS_REGION=us-east-1
export EKS=true
export EXP_MACHINE_POOL=true
export CAPA_EKS_IAM=true
export AWS_CONTROL_PLANE_MACHINE_TYPE=t3.large
export AWS_NODE_MACHINE_TYPE=t3.large
export AWS_REGION=us-east-1
export AWS_SSH_KEY_NAME=capi-eks
clusterctl init --infrastructure aws
مرحله 2: argocd را در خوشه مدیریت نصب کنید
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
kubectl config set-context --current --namespace=argocd
kubectl port-forward svc/argocd-server -n argocd 8080:443
رمز عبور مدیر برای اتصال به داشبورد ArgoCD در راز نامگذاری شده است argocd-initial-admin-secret
در فضای نام argocd.
مرحله 3: SVELTOS را مستقر کنید
ما از CD Argo استفاده خواهیم کرد تا به طور خودکار استقرار Sveltos را بر روی خوشه مدیریت Kubernetes شما انجام دهیم.
argocd app create sveltos --repo https://github.com/projectsveltos/helm-charts.git --path charts/projectsveltos --dest-server https://kubernetes.default.svc --dest-namespace projectsveltos
این کار CD Argo را برای ایجاد برنامه ای به نام Sveltos ، بازیابی نمودار Helm Sveltos از مخزن GitHub مشخص شده و استقرار آن به projectsveltos
فضای نام در خوشه مدیریت. در مرحله بعد ، تنظیمات Sveltos را با استفاده از CD Argo مستقر خواهیم کرد.
argocd app create sveltos-configuration --repo https://github.com/gianlucam76/devops-tutorial.git --path argocd-sveltos-clusterapi-eks --dest-server https://kubernetes.default.svc
پیکربندی Sveltos که ما در حال استقرار هستیم ، یک فرآیند ایجاد خوشه پویا را ایجاد می کند. ابتدا ، یک پیکربندی به نام را کنترل می کند existing-users
در فضای نام پیش فرض. این پیکربندی لیستی از کاربران را در اختیار دارد که هر ورودی به صورت فرمت شده است user-id: cluster-type
، جایی که از نوع خوشه ای نیز تعیین می کند production
یا staging
بشر پس از آن ، هر زمان که یک کاربر جدید در این پیکربندی شناسایی شود ، Sveltos باعث استقرار یک پیکربندی ClusterApi می شود ، که به نوبه خود ایجاد یک خوشه EKS جدید را آغاز می کند. نکته مهم این است که هر خوشه ای که به تازگی ایجاد شده است با نوع: خوشه ای از نوع ، برچسب گذاری می شود ، به Sveltos اجازه می دهد تا بر اساس برچسب خوشه ، پیکربندی مناسب ، چه برای محیط های تولید و چه برای مرحله بندی را اعمال کنند.
قبل از ادامه کار ، خوشه مدیریت را با آن برچسب بزنید type: mgmt
kubectl label sveltoscluster -n mgmt mgmt type=mgmt
مرحله 4: برای اضافه کردن یک کاربر جدید ، یک PR را فشار دهید
برای افزودن یک کاربر جدید و ایجاد یک خوشه EKS مربوطه ، ما یک گردش کار GitOps ساده را پیاده سازی خواهیم کرد. ابتدا ، ما یک درخواست کشش (PR) ارسال می کنیم که اصلاح می کند existing-users.yaml
پیکربندی در مخزن ما. به طور خاص ، این روابط عمومی یک ورودی کاربر جدید را معرفی می کند ، user1: production
، در بخش داده پیکربندی ، همانطور که در تفاوت ارائه شده نشان داده شده است. پس از ادغام روابط عمومی ، ما به Argo CD دستور می دهیم که این تغییرات را در خوشه مدیریت همگام سازی کند. این هماهنگ سازی پیکربندی به روز شده را اعمال می کند ، از این طریق سیگنالینگ SVELTOS برای شروع تهیه ClusterApi محور از یک خوشه تولید جدید EKS برای “User1”.
diff --git a/argocd-sveltos-clusterapi-eks/existing-users.yaml b/argocd-sveltos-clusterapi-eks/existing-users.yaml
index ab0d862..10987b3 100644
--- a/argocd-sveltos-clusterapi-eks/existing-users.yaml
+++ b/argocd-sveltos-clusterapi-eks/existing-users.yaml
@@ -3,3 +3,5 @@ kind: ConfigMap
metadata:
name: existing-users
namespace: default
+data:
+ user1: production
مرحله 5: Sveltos باعث ایجاد یک خوشه جدید EKS می شود
Sveltos بلافاصله ورودی کاربر جدید را تشخیص می دهد ، user1: production
بشر این تشخیص باعث می شود Sveltos بتواند تمام منابع لازم ClusterApi را به خوشه مدیریت مستقر کند و به طور مؤثر ایجاد یک خوشه جدید EKS را ایجاد کند. همانطور که در شکل زیر نشان داده شده است ، اجرای افزونه های نمایش sveltosctl ، منابع مستقر شده را نشان می دهد:
sveltosctl show addons
+-----------+-------------------------------------------------------+-----------+------------------------------+---------+-------------------------------+---------------------------------+
| CLUSTER | RESOURCE TYPE | NAMESPACE | NAME | VERSION | TIME | PROFILES |
+-----------+-------------------------------------------------------+-----------+------------------------------+---------+-------------------------------+---------------------------------+
| mgmt/mgmt | cluster.x-k8s.io:Cluster | user1 | capi-eks-user1 | N/A | 2025-03-04 12:10:02 +0100 CET | ClusterProfile/deploy-resources |
| mgmt/mgmt | infrastructure.cluster.x-k8s.io:AWSManagedCluster | user1 | capi-eks-user1 | N/A | 2025-03-04 12:10:02 +0100 CET | ClusterProfile/deploy-resources |
| mgmt/mgmt | controlplane.cluster.x-k8s.io:AWSManagedControlPlane | user1 | capi-eks-control-plane-user1 | N/A | 2025-03-04 12:10:02 +0100 CET | ClusterProfile/deploy-resources |
| mgmt/mgmt | cluster.x-k8s.io:MachinePool | user1 | capi-eks-pool-0-user1 | N/A | 2025-03-04 12:10:02 +0100 CET | ClusterProfile/deploy-resources |
| mgmt/mgmt | infrastructure.cluster.x-k8s.io:AWSManagedMachinePool | user1 | capi-eks-pool-0-user1 | N/A | 2025-03-04 12:10:02 +0100 CET | ClusterProfile/deploy-resources |
+-----------+-------------------------------------------------------+-----------+------------------------------+---------+-------------------------------+---------------------------------+
مرحله ششم: Sveltos سیاست های تولید را مستقر می کند
هنگامی که ClusterApi تهیه خوشه جدید EKS را تکمیل کرد ، Sveltos به طور خودکار افزودنیهای پیکربندی شده برای یک محیط تولید را مستقر می کند. این استقرار شامل:
- نمودار HELM CERT-MANAGER ، برای مدیریت و صدور گواهینامه های TLS.
- نمودار هلم Kyverno ، برای کنترل سیاست مبتنی بر منابع Kubernetes.
- نمودارهای Herm Prometheus و Grafana ، برای ارائه قابلیت های نظارت و تجسم.
- یک خط مشی پذیرش Kyverno به طور خاص برای مجازات-برچسب-برچسب ، پیکربندی شده است و استفاده از برچسب های تصویری صریح را برای استقرار کانتینرها اجرا می کند.
sveltosctl show addons --namespace=user1
+----------------------+--------------------------+--------------+---------------------+---------+-------------------------------+------------------------------------------+
| CLUSTER | RESOURCE TYPE | NAMESPACE | NAME | VERSION | TIME | PROFILES |
+----------------------+--------------------------+--------------+---------------------+---------+-------------------------------+------------------------------------------+
| user1/capi-eks-user1 | helm chart | cert-manager | cert-manager | v1.16.3 | 2025-03-04 12:28:00 +0100 CET | ClusterProfile/deploy-cert-manager |
| user1/capi-eks-user1 | helm chart | prometheus | prometheus | 26.0.0 | 2025-03-04 12:29:20 +0100 CET | ClusterProfile/prometheus-grafana |
| user1/capi-eks-user1 | helm chart | grafana | grafana | 8.6.4 | 2025-03-04 12:29:29 +0100 CET | ClusterProfile/prometheus-grafana |
| user1/capi-eks-user1 | helm chart | kyverno | kyverno-latest | 3.3.4 | 2025-03-04 12:28:50 +0100 CET | ClusterProfile/deploy-kyverno-production |
| user1/capi-eks-user1 | kyverno.io:ClusterPolicy | | disallow-latest-tag | N/A | 2025-03-04 12:29:19 +0100 CET | ClusterProfile/deploy-kyverno-resources |
+----------------------+--------------------------+--------------+---------------------+---------+-------------------------------+------------------------------------------+
مرحله 7: حذف کاربر
به همان راحتی که با اضافه کردن یک کاربر یک خوشه ایجاد کردیم ، می توانیم کاربر را حذف کرده و در نتیجه خوشه EKS مرتبط با آنها را حذف کنیم. این امر از طریق همان گردش کار GitOps حاصل می شود ، اما برعکس.
برای حذف یک کاربر ، ما به سادگی یک درخواست کشش (PR) ارسال می کنیم که ورود کاربر را از آن حذف می کند existing-users.yaml
پیکربندی به عنوان مثال ، حذف user1
، ما تغییراتی را که در مرحله 4 ایجاد کردیم برگردانیم. پس از ادغام این روابط عمومی و CD ARGO تغییرات در خوشه مدیریت را همگام می کند ، Sveltos حذف کاربر را از پیکربندی تشخیص می دهد.
Sveltos ، پس از تشخیص این تغییر ، تمام منابع ClusterApi را که قبلاً برای آن کاربر مستقر کرده بود ، حذف می کند. این شامل Cluster
با AWSManagedCluster
با AWSManagedControlPlane
با MachinePool
وت AWSManagedMachinePool
منابع موجود در فضای نام کاربر (در این حالت ، “کاربر 1”).
از آنجا که ClusterApi به طور اعلامیه ای عمل می کند ، حذف این منابع ClusterApi باعث حذف خوشه EKS اساسی می شود. ارائه دهنده زیرساخت AWS ClusterApi ، حذف این منابع را به عنوان درخواست خاتمه منابع ابری مربوطه تفسیر می کند.
بنابراین ، با حذف ورود کاربر از کاربران موجود. yaml configMap و اجازه دادن به Argo CD و Sveltos برای همگام سازی تغییرات ، ما به طور موثری کل چرخه عمر خوشه EKS را از ایجاد تا حذف خودکار می کنیم. این تضمین می کند که منابع به طور کارآمد مدیریت می شوند و از خوشه های یتیم جلوگیری می شود و دارای یک محیط تمیز و مقرون به صرفه است.
پایان
در این آموزش ، ما نشان داده ایم که چگونه می توان یک خط لوله کاملاً خودکار ، GITOPS محور را برای تهیه خوشه های اختصاصی EKS در صورت تقاضا ساخت. با استفاده از قدرت CD ، Sveltos و Clusterapi ، ما یک راه حل قوی و مقیاس پذیر ایجاد کرده ایم که تلاش دستی و خطاهای بالقوه مرتبط با مدیریت خوشه سنتی را از بین می برد.
ما دیده ایم که چگونه:
- سی دی آرگو وضعیت مطلوب خوشه مدیریت ما را حفظ می کند ، و اطمینان می دهد که همه تنظیمات با مخزن GIT ما همزمان می شوند.
- سرعت به عنوان یک ارکستر پویا عمل می کند و تغییراتی در پیکربندی کاربر ما و ایجاد ایجاد خوشه های جدید EKS را تشخیص می دهد.
- خوشه وزنه برداری سنگین تأمین و مدیریت خود خوشه های EKS را ارائه می دهد و یک رویکرد مداوم و اعلامی را ارائه می دهد.
اطلاعات تماس
اگر سؤالی دارید ، می خواهید یک گپ دوستانه یا فقط شبکه داشته باشید تا هیچ موضوعی را از دست ندهید ، پس از عملکرد نظر در Medium استفاده نکنید ، فقط در صورت تمایل مرا به شبکه LinkedIn خود اضافه کنید!
👏 از این پروژه پشتیبانی کنید
اگر از این مقاله لذت بردید ، لطفاً Repo ProjectsvelTos GitHub را بررسی کنید. همچنین می توانید در صورت مفید بودن ، پروژه را ستاره کنید.
Repo Github یک منبع عالی برای شروع کار با این پروژه است. این شامل کد ، اسناد و نمونه ها است. همچنین می توانید آخرین اخبار و به روزرسانی های مربوط به پروژه را در مورد GitHub Repo پیدا کنید.