Skip to main content

Развертывание в службе Azure Kubernetes

Проект можно развернуть для службы Azure Kubernetes (AKS) в рамках рабочих процессов непрерывного развертывания (CD).

Примечание. В GitHub Enterprise Server в настоящее время не поддерживаются средства выполнения тестов, размещенные в GitHub. Дополнительные сведения о планируемой поддержке в будущем см. в GitHub public roadmap.

Введение

В этом руководстве объясняется, как с помощью GitHub Actions создать и развернуть проект в Службе Azure Kubernetes.

Note

Если рабочим процессам GitHub Actions требуется доступ к ресурсам от поставщика облачных служб, поддерживающего OpenID Connect (OIDC), можно настроить рабочие процессы для проверки подлинности непосредственно в поставщике облачных служб. Это позволит прекратить хранение таких учетных данных в виде долгоживущих секретов и обеспечить другие преимущества безопасности. Дополнительные сведения см. в разделе "Сведения об усилении защиты с помощью OpenID Connect" иНастройка OpenID Connect в Azure.

Необходимые компоненты

Перед созданием рабочего процесса GitHub Actions сначала нужно выполнить следующие действия по настройке:

  1. Создайте целевой кластер AKS и Реестр контейнеров Azure (ACR). Дополнительные сведения см. в разделе "Краткое руководство. Развертывание кластера AKS с помощью портала Azure — служба Azure Kubernetes" и "Краткое руководство. Создание реестра на портале — реестр контейнеров Azure" в документации Azure.

  2. Создайте секрет с именем AZURE_CREDENTIALS для хранения учетных данных Azure. Дополнительные сведения о том, как найти эти сведения и структурировать секрет, см. в документации по действию Azure/login.

Создание рабочего процесса

Выполнив предварительные требования, можно приступить к созданию рабочего процесса.

В следующем примере рабочего процесса показано, как создать и развернуть проект в службе Azure Kubernetes при отправке кода в репозиторий.

Под ключом рабочего процесса env измените следующие значения:

  • AZURE_CONTAINER_REGISTRY на имя реестра контейнеров;
  • PROJECT_NAME на имя проекта;
  • RESOURCE_GROUP на группу ресурсов, содержащую кластер AKS;
  • CLUSTER_NAME на имя кластера AKS.

Этот рабочий процесс использует обработчик отрисовки helm для действия azure/k8s-bake. Если вы будете использовать обработчик отрисовки helm, измените значение CHART_PATH на путь к файлу helm. Измените значение CHART_OVERRIDE_PATH на массив переопределенных путей к файлам. При использовании другого обработчика отрисовки обновите входные параметры, отправленные в действие azure/k8s-bake.

YAML
# Этот рабочий процесс использует действия, которые не сертифицированы GitHub.
# Они предоставляются сторонним поставщиком, и на них распространяются
# отдельные условия обслуживания, политика конфиденциальности и поддержка
# документации.

# GitHub рекомендует закрепить действия в фиксации SHA.
# Чтобы получить более новую версию, потребуется обновить SHA.
# Вы также можете ссылаться на тег или ветвь, однако действие может измениться без предупреждения.

name: Build and deploy to Azure Kubernetes Service

env:
  AZURE_CONTAINER_REGISTRY: MY_REGISTRY_NAME # set this to the name of your container registry
  PROJECT_NAME: MY_PROJECT_NAME              # set this to your project's name
  RESOURCE_GROUP: MY_RESOURCE_GROUP          # set this to the resource group containing your AKS cluster
  CLUSTER_NAME: MY_CLUSTER_NAME              # set this to the name of your AKS cluster
  REGISTRY_URL: MY_REGISTRY_URL              # set this to the URL of your registry
  # If you bake using helm:
  CHART_PATH: MY_HELM_FILE                   # set this to the path to your helm file
  CHART_OVERRIDE_PATH: MY_OVERRIDE_FILES     # set this to an array of override file paths

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4

    - name: Azure Login
      uses: azure/login@14a755a4e2fd6dff25794233def4f2cf3f866955
      with:
        creds: ${{ secrets.AZURE_CREDENTIALS }}

    - name: Build image on ACR
      uses: azure/CLI@61bb69d64d613b52663984bf12d6bac8fd7b3cc8
      with:
        azcliversion: 2.29.1
        inlineScript: |
          az configure --defaults acr=${{ env.AZURE_CONTAINER_REGISTRY }}
          az acr build -t  -t ${{ env.REGISTRY_URL }}/${{ env.PROJECT_NAME }}:${{ github.sha }}

    - name: Gets K8s context
      uses: azure/aks-set-context@94ccc775c1997a3fcfbfbce3c459fec87e0ab188
      with:
          creds: ${{ secrets.AZURE_CREDENTIALS }}
          resource-group: ${{ env.RESOURCE_GROUP }}
          cluster-name: ${{ env.CLUSTER_NAME }}
      id: login

    - name: Configure deployment
      uses: azure/k8s-bake@61041e8c2f75c1f01186c8f05fb8b24e1fc507d8
      with:
        renderEngine: 'helm'
        helmChart: ${{ env.CHART_PATH }}
        overrideFiles: ${{ env.CHART_OVERRIDE_PATH }}
        overrides: |
          replicas:2
        helm-version: 'latest'
      id: bake

    - name: Deploys application
      uses: Azure/k8s-deploy@dd4bbd13a5abd2fc9ca8bdcb8aee152bb718fa78
      with:
        manifests: ${{ steps.bake.outputs.manifestsBundle }}
        images: |
          ${{ env.AZURE_CONTAINER_REGISTRY }}.azurecr.io/${{ env.PROJECT_NAME }}:${{ github.sha }}
        imagepullsecrets: |
          ${{ env.PROJECT_NAME }}

Дополнительные ресурсы

Следующие ресурсы также содержат полезные сведения на эти темы: