Введение
В этом руководстве объясняется, как с помощью GitHub Actions создать и развернуть проект в Службе Azure Kubernetes.
Предварительные требования
Перед созданием рабочего процесса GitHub Actions сначала нужно выполнить следующие действия по настройке:
-
Создайте целевой кластер AKS и Реестр контейнеров Azure (ACR). Дополнительные сведения см. в разделе "Краткое руководство. Развертывание кластера AKS с помощью портала Azure — служба Azure Kubernetes" и "Краткое руководство. Создание реестра на портале — реестр контейнеров Azure" в документации Azure.
-
Создайте секрет с именем
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
.
# Этот рабочий процесс использует действия, которые не сертифицированы 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@v3
- 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 }}
Дополнительные ресурсы
Следующие ресурсы также содержат полезные сведения на эти темы:
- Исходный начальный рабочий процесс см. в
azure-kubernetes-service.yml
из репозиторияstarter-workflows
GitHub Actions. - В этом рабочем процессе используются официальные действия Azure:
Azure/login
,Azure/aks-set-context
,Azure/CLI
,Azure/k8s-bake
иAzure/k8s-deploy
. - Дополнительные примеры рабочих процессов GitHub Actions, которые развертываются в Azure, см. в репозитории actions-workflow-samples.