كيفية إنشاء مجموعة Kubernetes باستخدام AWS EKS CLI

إذا كنت مطورًا، فمن المحتمل أن ترغب عادة في نشر تطبيقات محتوَّرة في حاويات إلى Kubernetes. ولكن السؤال هو، كيف؟ لماذا لا تجرب AWS EKS CLI؟

في هذا البرنامج التعليمي، ستتعلم كيفية إعداد AWS EKS CLI لإنشاء مجموعة Kubernetes، حتى تتمكن من التركيز على كتابة الشفرة بدلاً من إدارة البنية التحتية.

اقرأ الآن وابدأ في إنشاء مجموعتك اليوم!

الشروط المسبقة

سيكون هذا البرنامج التعليمي عرضًا عمليًا. إذا كنت ترغب في متابعته، تأكد من أن لديك جهاز كمبيوتر وحساب AWS. إذا لم يكن لديك حساب AWS، فهناك حساب في الطبقة المجانية متاح.

إنشاء مستخدم مسؤول

قبل إنشاء مجموعة Kubernetes، ستقوم بإنشاء مستخدم مسؤول. يتيح لك مستخدم مسؤول تسجيل الدخول إلى وحدة تحكم AWS لتكوين مجموعتك. ابدأ هذا البرنامج التعليمي بإنشاء مستخدم لديه أذونات المسؤول عبر وحدة تحكم AWS.

1. قم بتسجيل الدخول إلى وحدة تحكم AWS الخاصة بك، وانتقل إلى لوحة التحكم IAM الخاصة بك.

انقر فوق المستخدمون (لوحة اليسار) -> إضافة مستخدمين (أعلى يمين) كما هو موضح أدناه لبدء إضافة المستخدمين.

Initializing User Creation

2. فيما يلي، قدم اسم مستخدم في حقل اسم المستخدم، حيث يتم استخدام K8-Admin هنا، قم بالتحقق من الخيار مفتاح الوصول – وصول برمجي، وانقر على التالي: الأذونات

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

Configuring User Details

3. انقر على الخيار ربط السياسات الحالية مباشرة، قم بالتحقق من سياسة AdministratorAccess، وانقر على التالي: العلامات

تمنح سياسة AdministratorAccess للمستخدم (K8-Admin) وصولًا كاملاً إلى خدمة AWS، والمزيد كما يلي:

Setting up AdministratorAccess policies

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

Skipping the tags screen

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

Creating the admin user

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

Previewing the admin user keys

إطلاق مثيل EC2

الآن بعد أن قمت بإنشاء K8-Admin، يمكنك الآن إنشاء أول مثيل EC2 الخاص بك. ستستخدم هذا المثيل كعقدة رئيسية، حيث تقوم بتشغيل الأوامر الخاصة بك لإنشاء العقدة.

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

Launching an EC2 Instance

2. بعد ذلك، انقر على تحديد بجانب (الأيمن) صورة الآلة Amazon Linux 2 AMI (HVM) من القائمة، كما هو موضح أدناه.

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

Selecting Amazon Linux 2 AMI (HVM)

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

Previewing the instance type

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

Configuring instance details

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

Configuring the storage

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

Previewing the tags

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

Previewing the Security Group

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

Launching an instance

9. في نافذة الحوار المنبثقة، قم بتكوين زوج المفاتيح على النحو التالي:

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

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

Previewing the newly-created instance

تكوين أداة AWS CLI.

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

1. من لوحة تحكم EC2 الخاصة بك، قم بتحديد المربع لتحديد النسخة، كما هو موضح أدناه. انقر فوق الاتصال لتهيئة الاتصال بالنسخة.

Connecting to the Ec2 instance.

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

Connecting to the instance

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

الطرفية التفاعلية تتيح لك الاتصال بسطر الأوامر وتشغيل الأوامر الإدارية للنسخة الجديدة.

Previewing the interactive terminal

3. قم بتشغيل الأمر aws أدناه للتحقق من إصدار CLI الخاص بك.

aws --version

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

Checking the AWS CLI version

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

 curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" 
Downloading the CLI tool v2+

5. قم بتشغيل الأوامر التالية لفك ضغط الملف المُنزل وتحديد مكان تثبيت AWS CLI القديم.

unzip awscliv2.zip
which aws

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

Updating outdated AWS CLI

6. قم بتشغيل الأمر أدناه لتنفيذ الإجراءات التالية وتحديث مسار تثبيت AWS CLI على الجهاز الخاص بك:

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

7. قم بتشغيل الأمر aws --version أدناه للتحقق من أن AWS CLI المحدثة تم تثبيتها بشكل صحيح.

aws --version

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

Checking the AWS CLI updated version

8. بعد ذلك، قم بتشغيل الأمر aws configure لتكوين جهازك بأدوات AWS CLI الجديدة.

aws configure

أدخل القيم المناسبة في الرسائل كما هو موضح أدناه:

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

تكوين أداة سطر الأوامر 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)
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/bin

3. أخيرًا، قم بتشغيل الأمر أدناه لتأكيد أنك قد قمت بتثبيت eksctl بنجاح.

eksctl version

الناتج أدناه يؤكد أنك قد قمت بتثبيت eksctl بنجاح.

Checking the eksctl CLI tool version

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

eksctl --help
Previewing the eksctl help page

توفير عنصر تحكم 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.
eksctl create cluster --name dev --version 1.21 --region us-east-1 --nodegroup-name standard-workers --node-type t3.micro --nodes 3 --nodes-min 1 --nodes-max 4 --managed
Provisioning your EKS Cluster

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

كما يمكنك رؤية أدناه، يتم إنشاء كومة CloudFormation باسم eksctl-dev-cluster. قد يستغرق هذا العملية 15 دقيقة أو أكثر للاكتمال.

Previewing the eksctl-dev-cluster stack.

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

Navigating to the dev EKS Cluster dashboard.

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

Previewing the dev EKS Cluster dashboard.

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

Previewing the EC2 dashboard.

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

aws eks update-kubeconfig --name dev --region us-east-1
Updating kubectl config

نشر تطبيق على مجموعة EKS

لقد أنشأت مجموعة EKS الخاصة بك وتأكدت أنها تعمل بشكل مثالي. ولكن في الوقت الحالي، تجلس مجموعة EKS مجردة في الزاوية. لهذا العرض التوضيحي، ستستخدم مجموعة EKS من خلال نشر تطبيق NGINX.

1. قم بتشغيل الأمر yum أدناه لتثبيت git مع قبول جميع الإرشادات تلقائيًا (-y) أثناء التثبيت.

sudo yum install -y git
Installing Git

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

git clone https://github.com/Adam-the-Automator/aws-eks-cli.git
Cloning the configuration files

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

# تغيير الدليل إلى ata-elk
cd ata-elk
# قم بتطبيق التكوين في ./nginx-svc.yaml على جرعة
kubectl apply -f ./nginx-svc.yaml
Creating a service for NGINX

4. بعد ذلك، قم بتشغيل الأمر kubectl get service للتحقق من حالة خدمتك NGINX.

kubectl get service

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

قم بتدوين اسم النطاق الخارجي DNS لموازن الحمل حيث ستحتاج إليه لاحقًا لاختبار موازن الحمل.

Checking the status of your NGINX

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

kubectl apply -f ./nginx-deployment.yaml
Deploying the NGINX pods

6. قم بتشغيل الأوامر التالية kubectl get للتحقق من حالة نيجنكس deployment والـ pod الخاصة بنيجنكس.

kubectl get deployment
kubectl get pod

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

Checking the status of the NGINX deployment and pods

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

kubectl get node
Check the status of your worker nodes

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

curl "<LOAD_BALANCER_DNS_HOSTNAME>"

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

Checking your load balancer

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

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

Checking your load balancer with a browser

اختبار تحكم Kubernetes المتوفر بشكل عالي

الآن بعد أن لديك عنقود يعمل، ستقوم باختبار ما إذا كانت سيطرة Kubernetes متوفرة بشكل عالي. تعتمد فترة تشغيل تطبيقك على هذه الميزة. إذا لم تعمل سيطرة النظام، فستكون تطبيقاتك غير نشطة ولا يمكنها خدمة المستخدمين.

من خلال ميزة تحكم Kubernetes المتوفرة بشكل عالي، يمكنك زيادة توفر تطبيقك. ستختبر هذه الميزة عن طريق إيقاف عقد العمل الخاصة بك في EKS ومشاهدة ما إذا كانت Kubernetes ستقوم بتشغيل عقد عمل جديد لاستبدال تلك التي فشلت.

1. في لوحة تحكم EC2 الخاصة بك، قم بإيقاف جميع مثيلات عقد العمل EKS الخاصة بك، كما هو موضح أدناه.

Stopping all of your EKS worker node instances

2. بعد ذلك، قم بتشغيل الأمر التالي للتحقق من حالة عقدة العامل.

kubectl get node

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

Checking the status of the worker node

3. الآن قم بتشغيل الأمر kubectl get pod لاختبار ميزة التحكم في Kubernetes عالية الدرجة.

kubectl get pod

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

Checking the status of the pods

4. قم بتشغيل الأمر kubectl get service أدناه لعرض جميع الخدمات المتاحة.

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

kubectl get service
Kubernetes has created a new service

5. أخيرًا، قم بنسخ ولصق اسم DNS لجهاز توازن الحمل في متصفحك. ستحصل على الصفحة الترحيبية من NGINX كما فعلت في الخطوة الأخيرة من قسم “نشر تطبيق على EKS Cluster”.

الختام

طوال هذا البرنامج التعليمي، تعلمت كيفية إنشاء مجموعة EKS، ونشر خدمة NGINX من حاويتك، واختبار وظيفة السيطرة على المستوى المتاح بشكل جيد.

في هذه النقطة، يجب أن تكون لديك فهم جيد لكيفية إنشاء مجموعات EKS في بيئتك على AWS.

ماذا هو التالي بالنسبة لك؟ ربما تتعلم كيفية نشر تطبيق NodeJS باستخدام Docker و K8s على منصة AWS؟

Source:
https://adamtheautomator.com/aws-eks-cli/