النشر في Kubernetes باستخدام Actions
أعدّوا النشر المستمر إلى مجموعات Kubernetes، مع إدارة عمليات النشر والخدمات مباشرةً من GitHub Actions.
النشر في Kubernetes باستخدام Actions درس مجاني في CI/CD with GitHub Actions & DevOps Pipelines على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في CI/CD with GitHub Actions & DevOps Pipelines، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة CI/CD with GitHub Actions & DevOps Pipelines 4 دروس في المجموع.
مقدمة إلى النشر المستمر على K8s باستخدام GitHub Actions
مرحبًا! في هذا الدرس، ستتعلم كيفية إعداد النشر المستمر (CD) إلى عناقيد Kubernetes باستخدام GitHub Actions.
تعني أتمتة عمليات النشر إمكانية تشغيل تغييرات تطبيقك بسرعة وموثوقية، من دون خطوات يدوية.
سنغطي المصادقة، وتطبيق بيانات Kubernetes، وإدارة التحديثات.
أساسيات النشر على K8s
قبل أن ننشر، لنتذكر سريعًا موردين أساسيين في Kubernetes:
- Deployments: تدير هذه الموارد Pods الخاصة بتطبيقك، وتضمن تشغيل العدد المطلوب من النسخ المتماثلة دائمًا. كما تتولى التحديثات وعمليات التراجع.
- Services: تحدد هذه الموارد كيفية الوصول إلى تطبيقك، مثل الوصول إليه داخليًا من داخل العنقود أو خارجيًا عبر LoadBalancer.
هدفنا هو تطبيق ملفات YAML التي تعرّف هذه الموارد على عنقودنا من خلال GitHub Actions.
مصادقة Actions مع K8s
لكي تنشر تطبيقك، يجب أن يتواصل سير عمل GitHub Actions مع خادم API الخاص بعنقود Kubernetes.
يتطلب ذلك المصادقة. والطريقة القياسية للمصادقة مع Kubernetes هي استخدام ملف kubeconfig.
نحتاج إلى توفير محتوى هذا الملف بأمان للمشغّل الذي ينفذ سير العمل.
تأمين kubeconfig
يحتوي ملف kubeconfig على معلومات حساسة، مثل نقاط نهاية العناقيد وبيانات اعتماد المستخدم. ويجب الحفاظ على سريته!
يوفر GitHub Actions أسرارًا لهذا الغرض. ستخزّن محتوى ملف kubeconfig باعتباره سرًا في المستودع.
كيف تحصل على kubeconfig؟ يعتمد ذلك على موفر K8s الذي تستخدمه، مثل aws eks update-kubeconfig أو gcloud container clusters get-credentials.
إعداد سياق K8s
بعد تخزين kubeconfig باعتباره سرًا، ولنسمّه KUBE_CONFIG_DATA، يمكن لسير العمل استخدامه.
تتمثل الممارسة الشائعة في كتابة محتوى السر إلى ملف مؤقت على المشغّل، ثم ضبط متغير البيئة KUBECONFIG للإشارة إليه.
يُخبر ذلك kubectl بمكان العثور على تفاصيل الاتصال بالعنقود.
استخدام `kubectl` في سير العمل
يُعدّ kubectl أداة سطر الأوامر الرسمية للتفاعل مع عناقيد Kubernetes. وتكون أداة kubectl مثبّتة مسبقًا على مشغّلات GitHub Actions.
بعد إعداد kubeconfig، يمكنك تشغيل أي أمر من أوامر kubectl ضمن خطوات سير العمل.
لنرَ مثالًا أساسيًا:
name: K8s Setup Test
on: [workflow_dispatch]
jobs:
test-kubeconfig:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Kubeconfig
env:
KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA }}
run: |
mkdir -p ~/.kube
echo "$KUBE_CONFIG_DATA" > ~/.kube/config
chmod 600 ~/.kube/config
echo "KUBECONFIG=$HOME/.kube/config" >> $GITHUB_ENV
- name: Verify kubectl access
run: kubectl version --clientبيان نشر بسيط لـ K8s
إليك بيانًا أساسيًا من Kubernetes يعرّف Deployment وService لتطبيق "hello-world". هذا هو التطبيق الذي سنطلب من Kubernetes تشغيله.
يستخدم هذا المثال صورة Nginx بسيطة، ويعرّضها على المنفذ 80.
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-app-deployment
spec:
replicas: 1
selector:
matchLabels:
app: hello-app
template:
metadata:
labels:
app: hello-app
spec:
containers:
- name: hello-app
image: nginx:latest
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: hello-app-service
spec:
selector:
app: hello-app
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancerسير عمل النشر الكامل
والآن، لندمج خطوة النشر في سير عمل. بعد إنشاء صورة الحاوية ودفعها، كما تعلمت في الدروس السابقة، يمكنك نشرها.
يفترض سير العمل هذا أنك أعددت سر kubeconfig وأن ملف البيان، مثل k8s/deployment.yaml، موجود في مستودعك.
name: Deploy to Kubernetes
on:
push:
branches:
- main
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Kubeconfig
env:
KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA }}
run: |
mkdir -p ~/.kube
echo "$KUBE_CONFIG_DATA" > ~/.kube/config
chmod 600 ~/.kube/config
echo "KUBECONFIG=$HOME/.kube/config" >> $GITHUB_ENV
- name: Deploy application to K8s
run: kubectl apply -f k8s/deployment.yamlتحديث تطبيقك
من الميزات الرائعة في kubectl apply تمتّعه بخاصية idempotence، أي إن تنفيذ الأمر عدة مرات ينتج عنه التأثير نفسه. إذا كانت الموارد المعرّفة في ملف YAML موجودة بالفعل، فسيحدّثها kubectl apply بدلًا من إنشاء موارد جديدة.
لنشر إصدار جديد من تطبيقك، ما عليك سوى تحديث وسم الصورة في deployment.yaml ودفع التغيير. عندئذٍ سيشغّل GitHub Actions سير العمل، وسينفّذ Kubernetes تحديثًا تدريجيًا يستبدل Pods القديمة بالجديدة تدريجيًا، مما يضمن أقل قدر ممكن من التوقف.
تحقق سريع
لقد تعلمت الخطوات الأساسية اللازمة لنشر تطبيق إلى Kubernetes باستخدام GitHub Actions.
أيٌّ من التسلسلات التالية يمثّل التسلسل الصحيح لخطوات سير عمل GitHub Actions لنشر بيان Kubernetes؟
مراجعة وخطوات تالية
أحسنت! لقد تعلمت كيفية إعداد النشر المستمر إلى Kubernetes باستخدام GitHub Actions.
- نخزّن بيانات
kubeconfigالحساسة في أسرار GitHub. - تستخدم أسِرّة العمل هذا السر لإعداد
kubectl. - يُستخدم
kubectl apply -fلنشر بيانات K8s أو تحديثها. - يتولى Kubernetes تنفيذ تحديثات تدريجية عند تطبيق التغييرات.
تؤتمت هذه المجموعة القوية عمليات النشر، مما يجعل عملية التطوير أكثر سلاسة وسرعة. واصل استكشاف المزيد من ميزات K8s المتقدمة!
الأسئلة الشائعة
هل درس «النشر في Kubernetes باستخدام Actions» مجاني؟
نعم — نص درس «النشر في Kubernetes باستخدام Actions» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة CI/CD with GitHub Actions & DevOps Pipelines، انتقل إلى CoddyKit PRO. تتضمن دورة CI/CD with GitHub Actions & DevOps Pipelines 4 دروس في المجموع.
ماذا ستتعلم في «النشر في Kubernetes باستخدام Actions»؟
أعدّوا النشر المستمر إلى مجموعات Kubernetes، مع إدارة عمليات النشر والخدمات مباشرةً من GitHub Actions. تتمرن على CI/CD with GitHub Actions & DevOps Pipelines مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ CI/CD with GitHub Actions & DevOps Pipelines؟
لا تُشترط خبرة سابقة. CI/CD with GitHub Actions & DevOps Pipelines على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «النشر في Kubernetes باستخدام Actions»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس CI/CD with GitHub Actions & DevOps Pipelines هذا؟
نعم. كل درس في CI/CD with GitHub Actions & DevOps Pipelines يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- بناء صور Docker باستخدام Actions
- دفع الصور إلى السجلات
- النشر في Kubernetes باستخدام Actions
- مخططات Helm وملفات Kubernetes التعريفية في CI/CD