إذا كنت مطورًا، فمن المحتمل أن ترغب عادة في نشر تطبيقات محتوَّرة في حاويات إلى Kubernetes. ولكن السؤال هو، كيف؟ لماذا لا تجرب AWS EKS CLI؟
في هذا البرنامج التعليمي، ستتعلم كيفية إعداد AWS EKS CLI لإنشاء مجموعة Kubernetes، حتى تتمكن من التركيز على كتابة الشفرة بدلاً من إدارة البنية التحتية.
اقرأ الآن وابدأ في إنشاء مجموعتك اليوم!
الشروط المسبقة
سيكون هذا البرنامج التعليمي عرضًا عمليًا. إذا كنت ترغب في متابعته، تأكد من أن لديك جهاز كمبيوتر وحساب AWS. إذا لم يكن لديك حساب AWS، فهناك حساب في الطبقة المجانية متاح.
إنشاء مستخدم مسؤول
قبل إنشاء مجموعة Kubernetes، ستقوم بإنشاء مستخدم مسؤول. يتيح لك مستخدم مسؤول تسجيل الدخول إلى وحدة تحكم AWS لتكوين مجموعتك. ابدأ هذا البرنامج التعليمي بإنشاء مستخدم لديه أذونات المسؤول عبر وحدة تحكم AWS.
1. قم بتسجيل الدخول إلى وحدة تحكم AWS الخاصة بك، وانتقل إلى لوحة التحكم IAM الخاصة بك.
انقر فوق المستخدمون (لوحة اليسار) -> إضافة مستخدمين (أعلى يمين) كما هو موضح أدناه لبدء إضافة المستخدمين.

2. فيما يلي، قدم اسم مستخدم في حقل اسم المستخدم، حيث يتم استخدام K8-Admin هنا، قم بالتحقق من الخيار مفتاح الوصول – وصول برمجي، وانقر على التالي: الأذونات
أنت تختار الخيار مفتاح الوصول – وصول برمجي حيث يمكن الوصول إليه برمجيًا. ونتيجة لذلك، يمكن استخدام تطبيق للتواصل مباشرة مع خدمة AWS بخصوص الإجراءات المطلوبة.

3. انقر على الخيار ربط السياسات الحالية مباشرة، قم بالتحقق من سياسة AdministratorAccess، وانقر على التالي: العلامات
تمنح سياسة AdministratorAccess للمستخدم (K8-Admin) وصولًا كاملاً إلى خدمة AWS، والمزيد كما يلي:
- تتيح للمستخدم استخدام CloudFormation
- إنشاء حالات EC2 وسجلات CloudWatch
- تكوين محملات الحمل المرنة.

4. انقر على التالي: استعراض لتجاوز إضافة العلامات.

5. في الختام، قم بمراجعة تفاصيل المستخدم وانقر على إنشاء المستخدم لإكمال إنشاء المستخدم الإداري.

بمجرد الانتهاء من إنشاء المستخدم الإداري، ستحصل على رسالة نجاح في الأعلى من الشاشة، مثل الرسالة التالية. لاحظ معرف مفتاح الوصول و سر الوصول حيث ستستخدم هذه المفاتيح لتسجيل الدخول لاحقًا.

إطلاق مثيل EC2
الآن بعد أن قمت بإنشاء K8-Admin، يمكنك الآن إنشاء أول مثيل EC2 الخاص بك. ستستخدم هذا المثيل كعقدة رئيسية، حيث تقوم بتشغيل الأوامر الخاصة بك لإنشاء العقدة.
1. انتقل إلى لوحة EC2 الخاصة بك، انقر على EC2، ثم انقر على تشغيل المثيلات في الجزء الأيمن الأقصى من الصفحة. فعل ذلك يعيد توجيه متصفحك إلى صفحة حيث يمكنك اختيار صورة الآلة (AMI) من Amazon (الخطوة الثانية).

2. بعد ذلك، انقر على تحديد بجانب (الأيمن) صورة الآلة Amazon Linux 2 AMI (HVM) من القائمة، كما هو موضح أدناه.
صورة الآلة Amazon Linux 2 AMI (HVM) توفر نواة Linux 5.10 مضبوطة للأداء الأمثل لجيل الأجهزة الأخير. تحتوي هذه AMI أيضًا على العديد من الميزات المطلوبة من قبل عقد Kubernetes على مستوى الإنتاج.

3. احتفظ بالإعداد الافتراضي (t2.micro) لنوع المثيل وانقر على التالي: تكوين تفاصيل المثيل لتكوين المثيل.

4. قم بتمكين خيار تعيين IP العام تلقائيًا وانقر على التالي: إضافة تخزين. يضمن هذا الخيار أن يمكن لكل من حاوياتك الوصول إلى عنوان IP العام لعقدة Kubernetes الرئيسية الخاصة بك ومثيلات EC2 الخاصة بك.

5. الإبقاء على الإعداد الافتراضي (Root) في صفحة إضافة التخزين وانقر التالي: إضافة العلامات. يُطلب توفير حجم الـ Root لقراءة وكتابة البيانات من داخل الـ instance.

6. تخطي إضافة العلامات وانقر التالي: تكوين مجموعة الأمان.

7. الإبقاء على الإعدادات الافتراضية في مجموعة الأمان، كما هو موضح أدناه، وانقر على مراجعة وإطلاق.

8. مراجعة تفاصيل إطلاق الـ instance وانقر إطلاق لإطلاق الـ instance. ستظهر نافذة منبثقة حيث يمكنك اختيار استخدام زوج المفاتيح القائم (الخطوة التاسعة).

9. في نافذة الحوار المنبثقة، قم بتكوين زوج المفاتيح على النحو التالي:
- اختر إنشاء زوج مفاتيح جديد من القائمة المنسدلة.
- اختر RSA كنوع زوج مفاتيح.
- قدم اسم زوج المفاتيح الذي تفضله. ولكن لهذا البرنامج التعليمي، تم تعيين اسم زوج المفاتيح إلى my-nvkp.
- انقر على تنزيل زوج المفاتيح، ثم إطلاق الـ Instances.

قد يستغرق إطلاق الـ instance دقيقة أو دقيقتين ليكتمل تماماً. بمجرد أن يكون الـ instance الخاص بك قيد التشغيل، ستراه مدرجًا في لوحة EC2 الخاصة بك، كما هو موضح أدناه.

تكوين أداة AWS CLI.
الآن بعد تشغيل النسخة، حان الوقت لتكوين أدوات سطر الأوامر (CLI). استخدام أدوات سطر الأوامر بالتزامن مع حساب AWS الخاص بك أمر ضروري في إنشاء عنقود Kubernetes الخاص بك.
1. من لوحة تحكم EC2 الخاصة بك، قم بتحديد المربع لتحديد النسخة، كما هو موضح أدناه. انقر فوق الاتصال لتهيئة الاتصال بالنسخة.

2. بعد ذلك، انقر فوق زر الاتصال للاتصال بالنسخة التي حددتها سابقًا في الخطوة الأولى.

بمجرد الاتصال بنسخة EC2 الخاصة بك، يقوم متصفحك بإعادة توجيهك إلى الطرفية التفاعلية المعروضة أدناه كجلسة SSH مؤقتة مع نسخة EC2 الخاصة بك.
الطرفية التفاعلية تتيح لك الاتصال بسطر الأوامر وتشغيل الأوامر الإدارية للنسخة الجديدة.

3. قم بتشغيل الأمر aws
أدناه للتحقق من إصدار CLI الخاص بك.
كما يمكنك رؤية الناتج أدناه، أنت تقوم بتشغيل الإصدار 1.18.147 على نسخة Amazon Linux 2 الخاصة بك، وهو قديم. تحتاج إلى تنزيل وتثبيت AWS CLI الإصدار 2+ لضمان الوصول إلى جميع ميزات Kubernetes (الخطوة الثالثة).

4. الآن، قم بتشغيل الأمر curl
أدناه لتنزيل أداة CLI الإصدار 2+ وحفظها في ملف مضغوط يسمى awscliv2.zip
.

5. قم بتشغيل الأوامر التالية لفك ضغط الملف المُنزل وتحديد مكان تثبيت AWS CLI القديم.
كما يمكنك رؤية الناتج أدناه، تم تثبيت AWS CLI القديم على /usr/bin/aws. تحتاج إلى تحديث هذا المسار بالإصدار المُحدث.

6. قم بتشغيل الأمر أدناه لتنفيذ الإجراءات التالية وتحديث مسار تثبيت AWS CLI على الجهاز الخاص بك:
- قم بتثبيت أدوات AWS CLI المحدثة على جهاز Amazon Linux 2 الخاص بك (
sudo ./aws/install
). - قم بتعيين الدليل (
--install-dir /usr/bin/aws-cli
) حيث يتم تثبيت أدوات CLI. بذلك يمكنك نقل AWS CLI المحدثة إلى مثيلات أخرى دون إعادة تثبيت أدوات CLI. - قم بتحديث (
--update
) بيئة الجزر الحالية بالمسار الجديد لأدوات AWS CLI إذا كان هناك واحد في بيئتك الحالية.

7. قم بتشغيل الأمر aws --version
أدناه للتحقق من أن AWS CLI المحدثة تم تثبيتها بشكل صحيح.
الإصدار المثبت من AWS CLI هو 2.4.7، كما هو موضح أدناه، وهو أحدث إصدار لـ AWS CLI هو 2.4.7 في وقت كتابة هذا النص.

8. بعد ذلك، قم بتشغيل الأمر aws configure
لتكوين جهازك بأدوات AWS CLI الجديدة.
أدخل القيم المناسبة في الرسائل كما هو موضح أدناه:
- AWS Access Key ID [None] – أدخل معرف مفتاح الوصول الذي لاحظته في القسم السابق “إنشاء مستخدم الإدارة الخاص بك”.
- AWS Secret Access Key [None] – أدخل مفتاح الوصول السري الذي لاحظته في القسم السابق “إنشاء مستخدم الإدارة الخاص بك”.
- اسم المنطقة الافتراضي [لا شيء] – حدد منطقة مدعومة، مثل us-east-1.
- تنسيق الإخراج الافتراضي [لا شيء] – أدخل json، حيث يعتبر تنسيق JSON هو المعيار المفضل للاستخدام مع Kubernetes.

تكوين أداة سطر الأوامر Amazon EKS (eksctl)
نظرًا لأن هدفك هو إنشاء عنقود Kubernetes باستخدام أداة سطر الأوامر AWS EKS CLI ، ستقوم أيضًا بتكوين أداة سطر الأوامر Amazon EKS (eksctl). تتيح لك هذه الأداة إنشاء وإدارة عناقيد Kubernetes على Amazon EKS.
1. قم بتثبيت الإصدار الأحدث من أداة سطر الأوامر Kubernetes (kubectl) على مثيل EC2 الخاص بك. تتيح لك هذه الأداة تشغيل الأوامر ضد عناقيد Kubernetes.
2. بعد ذلك ، قم بتشغيل الأمر curl
الموجود أدناه لاسترداد آخر إصدار eksctl
من GitHub إلى دليل /tmp كملف .tar.gz، ثم استخرج محتوى الأرشيف في دليل /tmp.
قم بتشغيل الأوامر أدناه لأداء الخطوات التالية:
- استرد آخر إصدار
eksctl
من GitHub (--location
) كأرشيف .tar.gz ("<https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$>(uname -s)_amd64.tar.gz"
) - استخرج محتوى الأرشيف إلى دليل /tmp (
tar xz -C /tmp
) ، في حين يكون العلم--silent
لإخفاء إخراج التقدم للأمر. - انقل (
sudo mv
) ملف التنفيذ eksctl (/tmp/eksctl
) إلى المسار الذي قمت بتثبيت AWS CLI فيه (/usr/bin
)
3. أخيرًا، قم بتشغيل الأمر أدناه لتأكيد أنك قد قمت بتثبيت eksctl
بنجاح.
الناتج أدناه يؤكد أنك قد قمت بتثبيت eksctl بنجاح.

إذا كنت جديدًا على eksctl
، يمكنك تشغيل الأمر أدناه للحصول على قائمة بجميع الأوامر المدعومة لـ eksctl
واستخدامها.

توفير عنصر تحكم EKS الخاص بك
الآن بعد أن قمت بتكوين eksctl، يمكنك الآن توفير عنصر تحكم EKS الأول باستخدام أوامر eksctl
.
قم بتشغيل الأمر eksctl
أدناه لإنشاء عنصر تحكمك الأول والقيام بما يلي:
- إنشاء مجموعة تحكم Kubernetes مكونة من 3 عقد وتسمى
dev
مع نوع عقد واحد كـt3.micro
والمنطقة هيus-east-1
. - تحديد الحد الأدنى لعقد واحد (
--nodes-min 1
) والحد الأقصى لأربعة عقد (--nodes-max 4
) لهذه المجموعة من العقد التي يديرها EKS. تسمى مجموعة العقدstandard-workers
. - إنشاء مجموعة عقد باسم
standard-workers
وتحديد نوع آلة لمجموعة عقدstandard-workers
.

2. انتقل إلى لوحة تحكم CloudFormation الخاصة بك لرؤية الإجراءات التي تم اتخاذها بواسطة الأمر. يستخدم الأمر eksctl create cluster
CloudFormation لتوفير البنية التحتية في حساب AWS الخاص بك.
كما يمكنك رؤية أدناه، يتم إنشاء كومة CloudFormation باسم eksctl-dev-cluster. قد يستغرق هذا العملية 15 دقيقة أو أكثر للاكتمال.

3. الآن، انتقل إلى لوحة تحكم EKS الخاصة بك، وسترى مجموعة مسماة بـ dev مُقدّمة. انقر على الرابط dev للوصول إلى لوحة تحكم EKS الخاصة بـ dev.

أدناه، يمكنك رؤية تفاصيل مجموعة EKS الخاصة بـ dev، مثل اسم العقدة، نوع النسخة، مجموعة العقدة، و الحالة.

4. انتقل إلى لوحة تحكم EC2 الخاصة بك، وسترى أن أربع عقدات تعمل، ثلاثة منها تحمل دور t3.micro في حساب AWS الخاص بك (ثلاثة عقد عمل وعقد رئيسي واحد).

5. في النهاية، قم بتشغيل الأمر أدناه لتحديث تكوين kubectl (update-kubeconfig
) الخاص بك بنقطة نهاية عقدتك، الشهادة، وبيانات اعتمادك.

نشر تطبيق على مجموعة EKS
لقد أنشأت مجموعة EKS الخاصة بك وتأكدت أنها تعمل بشكل مثالي. ولكن في الوقت الحالي، تجلس مجموعة EKS مجردة في الزاوية. لهذا العرض التوضيحي، ستستخدم مجموعة EKS من خلال نشر تطبيق NGINX.
1. قم بتشغيل الأمر yum
أدناه لتثبيت git
مع قبول جميع الإرشادات تلقائيًا (-y
) أثناء التثبيت.

2. بعد ذلك، قم بتشغيل الأمر git clone
أدناه لاستنساخ ملفات التكوين من مستودع GitHub إلى الدليل الحالي الخاص بك. ستستخدم هذه الملفات لإنشاء نشر NGINX على الأقسام الخاصة بك وإنشاء موازنة الحمل (ELB).

3. قم بتشغيل الأوامر التالية للانتقال إلى دليل ata-elk
، وإنشاء (kubectl apply
) خدمة لـ NGINX (./nginx-svc.yaml
).

4. بعد ذلك، قم بتشغيل الأمر kubectl get service
للتحقق من حالة خدمتك NGINX.
كما ترون أدناه، نوع الخدمة هو موازن الحمل، وأنشأ Kubernetes خدمة (nginx-svc), وهي نشر NGINX الخاص بك. يمكنك أيضًا رؤية اسم النطاق الخارجي DNS لموازن الحمل الذي أنشأته EKS تحت العمود EXTERNAL IP.
قم بتدوين اسم النطاق الخارجي DNS لموازن الحمل حيث ستحتاج إليه لاحقًا لاختبار موازن الحمل.

5. قم بتشغيل الأمر kubectl
أدناه لنشر جرعات NGINX.

6. قم بتشغيل الأوامر التالية kubectl get
للتحقق من حالة نيجنكس deployment
والـ pod
الخاصة بنيجنكس.
كما هو موضح في الإخراج أدناه، هناك ثلاثة “بودز” من الـ deployment الخاص بك، وجميعها قيد التشغيل.

7. بعد ذلك، قم بتشغيل أمر kubectl get node
للتحقق من حالة عقد العمل الخاصة بك.

8. الآن، قم بتشغيل الأمر curl
أدناه لاختبار موزع الأحمال الخاص بك. قم بتبديل <LOAD_BALANCER_DNS_HOSTNAME>
بالاسم النطاقي لـ DNS الذي لاحظته سابقًا (خطوة خمسة).
سترى صفحة ترحيبية من نيجنكس من خدمة نيجنكس التي تم إنشاؤها بواسطة EKS، كما هو موضح أدناه. يؤكد الإخراج أدناه أن موزع الأحمال الخاص بك يعمل بشكل صحيح وأنه يمكنك الوصول إلى بودز نيجنكس الخاصة بك.

9. أخيرًا، للتحقق مرة أخرى، انسخ والصق اسم النطاق لموزع الأحمال في علامة تبويب متصفح جديدة.
ستحصل أيضًا على صفحة ترحيبية من نيجنكس، مما يشير إلى أن التطبيق الخاص بك يعمل.

اختبار تحكم Kubernetes المتوفر بشكل عالي
الآن بعد أن لديك عنقود يعمل، ستقوم باختبار ما إذا كانت سيطرة Kubernetes متوفرة بشكل عالي. تعتمد فترة تشغيل تطبيقك على هذه الميزة. إذا لم تعمل سيطرة النظام، فستكون تطبيقاتك غير نشطة ولا يمكنها خدمة المستخدمين.
من خلال ميزة تحكم Kubernetes المتوفرة بشكل عالي، يمكنك زيادة توفر تطبيقك. ستختبر هذه الميزة عن طريق إيقاف عقد العمل الخاصة بك في EKS ومشاهدة ما إذا كانت Kubernetes ستقوم بتشغيل عقد عمل جديد لاستبدال تلك التي فشلت.
1. في لوحة تحكم EC2 الخاصة بك، قم بإيقاف جميع مثيلات عقد العمل EKS الخاصة بك، كما هو موضح أدناه.

2. بعد ذلك، قم بتشغيل الأمر التالي للتحقق من حالة عقدة العامل.
ستحصل على مزيج من الحالات، مثل قيد الانتظار، جاري التشغيل، و جاري الإنهاء. لماذا؟ لأنه بينما تحاول إيقاف جميع عقد العمل، يكتشف Kubernetes الفشل ويقوم بسرعة بإعادة تشغيل عقدة أخرى.

3. الآن قم بتشغيل الأمر kubectl get pod
لاختبار ميزة التحكم في Kubernetes عالية الدرجة.
يمكنك أن ترى في الناتج أن هناك ثلاثة أكواب جديدة (معرفة بعمرها) في الحالة جاري التشغيل. تشير هذه الأكواب الجديدة إلى أن ميزة التحكم في Kubernetes عالية الدرجة تعمل كما هو مقصود.

4. قم بتشغيل الأمر kubectl get service
أدناه لعرض جميع الخدمات المتاحة.
يمكنك أن ترى أدناه أن Kubernetes قد أنشأ خدمة جديدة، واسم DNS لجهاز توازن الحمل مختلف الآن. kubectl get service

5. أخيرًا، قم بنسخ ولصق اسم DNS لجهاز توازن الحمل في متصفحك. ستحصل على الصفحة الترحيبية من NGINX كما فعلت في الخطوة الأخيرة من قسم “نشر تطبيق على EKS Cluster”.
الختام
طوال هذا البرنامج التعليمي، تعلمت كيفية إنشاء مجموعة EKS، ونشر خدمة NGINX من حاويتك، واختبار وظيفة السيطرة على المستوى المتاح بشكل جيد.
في هذه النقطة، يجب أن تكون لديك فهم جيد لكيفية إنشاء مجموعات EKS في بيئتك على AWS.
ماذا هو التالي بالنسبة لك؟ ربما تتعلم كيفية نشر تطبيق NodeJS باستخدام Docker و K8s على منصة AWS؟