Создание, тестирование и развертывание контейнеров в Служба Azure Kubernetes (AKS) с помощью GitHub Actions
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 и выберите "Форк".
Обновите приложение
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>
.tenant Значение <tenantId>
.хранилища Имя реестра. Linux azuredocs resource_group Имя группы ресурсов. 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/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
действие:- Исходный код извлечения использует Действие "Извлечение GitHub Actions" для клонирования репозитория.
- Сборка ACR использует Действие "Сборка Реестра контейнеров Azure" для сборки образа и его отправки в реестр.
- Имя входа Azure использует Действие "Вход в Azure" для входа в учетную запись Azure.
- Настройка контекста AKS использует Действие "Настройка контекста AKS Azure" для задания контекста для кластера AKS.
- Программа установки kubectl использует Действие "Установка Kubectl AKS Azure" для установки kubectl на вашем средстве выполнения.
- Развертывание в AKS использует действие развертывания Azure Kubernetes для развертывания приложения в кластере 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