Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
GitHub Actions предоставляет гибкие возможности для создания автоматизированных рабочих процессов жизненного цикла разработки программного обеспечения. Вы можете использовать несколько действий Kubernetes для развертывания контейнеров из Реестра контейнеров Azure (ACR) в Службе Azure Kubernetes (AKS) с помощью GitHub Actions.
Предварительные условия
- Учетная запись Azure с активной подпиской. Если у вас нет учетной записи, создайте бесплатную учетную запись.
- Учетная запись GitHub. Если у вас ее нет, зарегистрируйтесь бесплатно.
- При использовании GitHub Actions необходимо настроить интеграцию между Azure и репозиторием GitHub. Сведения о настройке интеграции см. в статье "Использование GitHub Actions для подключения к Azure".
- Существующий кластер AKS с подключенным ACR. Если у вас его нет, ознакомьтесь с аутентификацией с помощью ACR от AKS.
GitHub Actions для AKS
С помощью GiHub Actions можно автоматизировать рабочие процессы разработки программного обеспечения из GitHub. Дополнительные сведения см. в разделе GitHub Actions для 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 |
Создание общего секрета или секрета реестра Docker в кластере Kubernetes. | azure/k8s-create-secret |
azure/k8s-deploy |
Развертывание манифестов в кластерах Kubernetes. | azure/k8s-deploy |
azure/k8s-lint |
Проверка файлов манифеста или их обработка с помощью действия lint. | azure/k8s-lint |
azure/setup-helm |
Установка определенной версии двоичного файла Helm на сервере. | 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 Actions с AKS
Например, вы можете использовать GitHub Actions для развертывания приложения в кластере AKS при каждой отправке изменений в репозиторий GitHub. В этом примере рассматривается приложение Azure Vote.
Примечание.
В этом примере для аутентификации с вашим ACR и кластером AKS используется учетная запись службы. Кроме того, можно настроить Open ID Connect (OIDC) и обновить действие azure/login
для использования OIDC. Дополнительные сведения см. в статье "Настройка входа Azure с помощью проверки подлинности OpenID Connect".
Создать ответвление и обновить репозиторий
Перейдите в репозиторий Azure Vote и выберите Форк.
Обновите
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 ...
Добавьте обновленный
azure-vote-all-in-one-redis.yaml
в ваш репозиторий.
Создание секретов
Создайте учетную запись службы для доступа к вашей группе ресурсов с ролью
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>, ... }
Перейдите к параметрам репозитория GitHub и выберите "Секреты безопасности>" и "Действия".>
Для каждого секрета выберите новый секрет репозитория и введите имя и значение секрета.
Имя секрета Значение секрета AZURE_CREDENTIALS Весь JSON-вывод команды az ad sp create-for-rbac
.service_principal Значение <clientId>
.service_principal_password Значение <clientSecret>
.Подписка Значение <subscriptionId>
.арендатор Значение <tenantId>
.реестр Имя вашего реестра. репозиторий azuredocs группа ресурсов Имя группы ресурсов. cluster_name Имя вашего кластера.
Дополнительные сведения о создании секретов см. в разделе "Зашифрованные секреты".
Создание файла действий
В репозитории создайте
.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/[email protected] 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
разделе содержится каждое отдельное действие.- Исходный код извлечения использует Действие "Извлечение GitHub Actions" для клонирования репозитория.
- Сборка ACR использует Действие "Сборка Реестра контейнеров Azure" для сборки образа и его отправки в реестр.
- Вход в Azure использует Действие 'Вход в Azure' для авторизации в вашей учетной записи Azure.
- Настройка контекста AKS использует Действие "Настройка контекста AKS Azure" для задания контекста для кластера AKS.
- Программа установки kubectl использует Действие "Установка Kubectl AKS Azure" для установки kubectl на вашем средстве выполнения.
- Развертывание в AKS использует Azure Kubernetes Deploy Action для развертывания приложения в вашем кластере Kubernetes.
Зафиксируйте файл в
.github/workflows/main.yml
репозитории.Чтобы подтвердить, что действие работает, обновите
azure-vote/azure-vote/config_file.cfg
следующим содержимым:# UI Configurations TITLE = 'Azure Voting App' VOTE1VALUE = 'Fish' VOTE2VALUE = 'Dogs' SHOWHOST = 'false'
Зафиксируйте обновленный
azure-vote/azure-vote/config_file.cfg
в вашем репозитории.В репозитории выберите "Действия " и убедитесь, что рабочий процесс запущен. Затем убедитесь, что рабочий процесс имеет зеленую галочку, а обновленное приложение развертывается в кластере.
Следующие шаги
Ознакомьтесь со следующими начальными рабочими процессами для AKS. Дополнительные сведения см. в разделе "Использование начальных рабочих процессов".
Azure Kubernetes Service