إنشاء الحاويات واختبارها ونشرها في Azure Kubernetes Service (AKS) باستخدام GitHub Actions

تمنحك إجراءات GitHub Actions المرونة لبناء سير عمل دورة حياة تطوير البرامج المؤتمت. يمكنك استخدام إجراءات Kubernetes متعددة للنشر في حاويات من Azure Container Registry (ACR) إلى Azure Kubernetes Service (AKS) باستخدام GitHub Actions.

المتطلبات الأساسية

إجراءات GitHub لـ AKS

باستخدام إجراءات GiHub، يمكنك أتمتة مهام سير عمل تطوير البرامج من داخل GitHub. لمزيد من المعلومات، راجع إجراءات GitHub ل Azure.

يسرد الجدول التالي الإجراءات المتوفرة ل AKS:

الاسم ‏‏الوصف مزيد من التفاصيل
azure/aks-set-context تعيين سياق نظام مجموعة AKS الهدف للإجراءات الأخرى لاستخدام أو تشغيل أي أوامر kubectl. azure/aks-set-context
azure/k8s-set-context تعيين سياق مجموعة Kubernetes الهدف للإجراءات الأخرى لاستخدام أو تشغيل أي أوامر kubectl. azure/k8s-set-context
azure/k8s-bake اخبز ملف البيان لاستخدامه في عمليات النشر باستخدام Helm أو kustomize أو kompose. azure/k8s-bake
azure/k8s-create-secret أنشئ سرًا عامًا أو سر سجل عامل الإرساء في مجموعة Kubernetes. azure/k8s-create-secret
azure/k8s-deploy نشر البيانات إلى مجموعات Kubernetes. azure/k8s-deploy
azure/k8s-lint التحقق من صحة / فحص ملفات البيان الخاصة بك. azure/k8s-lint
azure/setup-helm قم بتثبيت إصدار محدد من Helm binary على المشغّل. azure/setup-helm
azure/setup-kubectl تثبيت إصدار معين من kubectl على المشغل. azure/setup-kubectl
azure/k8s-artifact-substitute تحديث العلامة أو تجزئة صور الحاوية. azure/k8s-artifact-substitute
azure/aks-create-action قم بإنشاء مجموعة AKS باستخدام Terraform. azure/aks-create-action
azure/aks-github-runner إعداد عوامل مستضافة ذاتيًا لـ GitHub Actions. azure/aks-github-runner
azure/acr-build إنشاء حاويات باستخدام ACR. azure/acr-build

استخدام إجراءات GitHub مع AKS

كمثال، يمكنك استخدام GitHub Actions لنشر تطبيق إلى مجموعة AKS الخاصة بك في كل مرة يتم فيها دفع تغيير إلى مستودع GitHub الخاص بك. يستخدم هذا التشغيل السريع تطبيق Azure Vote.

إشعار

يستخدم هذا المثال كيان خدمة للمصادقة مع نظام مجموعة ACR وAKS. بدلاً من ذلك، يمكنك تكوين Open ID Connect (OIDC) وتحديث azure/login الإجراء لاستخدام OIDC. لمزيد من المعلومات، راجع إعداد تسجيل الدخول إلى Azure باستخدام مصادقة الاتصال OpenID.

نسخ المستودع وتحديثه

  1. انتقل إلى مستودع Azure Vote وحدد Fork.

  2. قم بتحديث azure-vote-all-in-one-redis.yaml لاستخدام ACR الخاص بك للصورة azure-vote-front . استبدل <registryName> باسم سجلك.

    ...
          containers:
          - name: azure-vote-front
            image: <registryName>.azurecr.io/azuredocs/azure-vote-front:v1
    ...
    
  3. تثبيت المحدث azure-vote-all-in-one-redis.yaml إلى المستودع الخاص بك.

إنشاء أسرار

  1. إنشاء كيان خدمة للوصول إلى مجموعة الموارد الخاصة بك مع Contributor الدور باستخدام az ad sp create-for-rbac الأمر . استبدل <SUBSCRIPTION_ID> بمعرف الاشتراك لحساب Azure الخاص بك واسم <RESOURCE_GROUP> مجموعة الموارد التي تحتوي على ACR الخاص بك.

    az ad sp create-for-rbac \
        --name "ghActionAzureVote" \
        --scope /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP> \
        --role Contributor \
        --json-auth
    

    يجب أن يبدو الإخراج مشابها لإخراج المثال التالي:

    {
      "clientId": <clientId>,
      "clientSecret": <clientSecret>,
      "subscriptionId": <subscriptionId>,
      "tenantId": <tenantId>,
      ...
    }
    
  2. انتقل إلى إعدادات مستودع GitHub وحدد Security>Secrets and variables>Actions.

  3. لكل سر، حدد New Repository Secret وأدخل اسم السر وقيمته.

    اسم السر قيمة سرية
    AZURE_CREDENTIALS إخراج JSON بأكمله من az ad sp create-for-rbac الأمر .
    service_principal قيمة <clientId> .
    service_principal_password قيمة <clientSecret> .
    الاشتراك قيمة <subscriptionId> .
    tenant قيمة <tenantId> .
    السجل اسم السجل الخاص بك.
    المستودع azuredocs
    مجموعة الموارد اسم مجموعة الموارد الخاصة بك.
    cluster_name اسم نظام المجموعة الخاص بك.

لمزيد من المعلومات حول إنشاء الأسرار، راجع الأسرار المشفرة.

إنشاء ملف إجراءات

  1. في المستودع الخاص بك، قم بإنشاء .github/workflows/main.yml ولصق في المحتويات التالية:

    name: build_deploy_aks
    on:
      push:
        paths:
          - "azure-vote/**"
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
          - name: Checkout source code 
            uses: actions/checkout@v3
          - name: ACR build
            id: build-push-acr
            uses: azure/acr-build@v1
            with:
              service_principal: ${{ secrets.service_principal }}
              service_principal_password: ${{ secrets.service_principal_password }}
              tenant: ${{ secrets.tenant }}
              registry: ${{ secrets.registry }}
              repository: ${{ secrets.repository }}
              image:  azure-vote-front
              folder: azure-vote
              branch: master
              tag: ${{ github.sha }}
          - name: Azure login
            id: login
            uses: azure/login@v1.4.3
            with:
              creds: ${{ secrets.AZURE_CREDENTIALS }}
          - name: Set AKS context
            id: set-context
            uses: azure/aks-set-context@v3
            with:
              resource-group: '${{ secrets.resource_group }}' 
              cluster-name: '${{ secrets.cluster_name }}'
          - name: Setup kubectl
            id: install-kubectl
            uses: azure/setup-kubectl@v3
          - name: Deploy to AKS
            id: deploy-aks
            uses: Azure/k8s-deploy@v4
            with:
              namespace: 'default'
              manifests: |
                 azure-vote-all-in-one-redis.yaml
              images: '${{ secrets.registry }}.azurecr.io/${{ secrets.repository }}/azure-vote-front:${{ github.sha }}'
              pull-images: false 
    

    on يحتوي القسم على الحدث الذي يقوم بتشغيل الإجراء. في ملف المثال، يتم تشغيل الإجراء عند دفع تغيير إلى azure-vote الدليل.

    steps يحتوي القسم على كل إجراء مميز:

    1. يستخدم كود مصدر Checkoutإجراءات GitHub Actions Checkout لاستنساخ المستودع.
    2. يستخدم إنشاء ACRإجراء إنشاء سجل حاويات Azure لإنشاء الصورة وتحميلها إلى السجل الخاص بك.
    3. يستخدم تسجيل الدخول إلى Azureإجراء تسجيل الدخول إلى Azure لتسجيل الدخول إلى حساب Azure الخاص بك.
    4. يستخدم سياق تعيين AKSإجراء سياق مجموعة Azure AKS لتعيين سياق نظام مجموعة AKS.
    5. يستخدم Setup kubectlإجراء Kubectl Setup Kubectl Azure AKS لتثبيت kubectl على المشغل الخاص بك.
    6. يستخدم التوزيع إلى AKS Azure Kubernetes Deploy Action لنشر التطبيق إلى مجموعة Kubernetes الخاصة بك.
  2. قم بتثبيت .github/workflows/main.yml الملف في المستودع الخاص بك.

  3. لتأكيد عمل الإجراء، قم بتحديث azure-vote/azure-vote/config_file.cfg بالمحتويات التالية:

    # UI Configurations
    TITLE = 'Azure Voting App'
    VOTE1VALUE = 'Fish'
    VOTE2VALUE = 'Dogs'
    SHOWHOST = 'false'
    
  4. تثبيت المحدث azure-vote/azure-vote/config_file.cfg إلى المستودع الخاص بك.

  5. في المستودع الخاص بك، حدد Actions وتأكد من تشغيل سير العمل. بعد ذلك، تأكد من أن سير العمل يحتوي على علامة اختيار خضراء ويتم نشر التطبيق المحدث إلى نظام المجموعة الخاص بك.

الخطوات التالية

راجع مهام سير عمل البداية التالية لـ AKS. لمزيد من المعلومات، راجع استخدام مهام سير عمل البداية.