你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 GitHub Actions 生成和测试容器并将其部署到 Azure Kubernetes 服务 (AKS)
可以通过 GitHub Actions 灵活地生成自动化软件开发生命周期工作流。 可以使用多个 Kubernetes 操作通过 GitHub Actions 将 Azure 容器注册表 (ACR) 中的容器部署到 Azure Kubernetes 服务 (AKS)。
GitHub Actions 可帮助你从 GitHub 内部自动化软件开发工作流。 有关详细信息,请参阅适用于 Azure 的 GitHub Actions。
下表列出了 AKS 可用的操作:
将 GitHub Actions 与 AKS 配合使用
例如,每次将更改推送到 GitHub 存储库时,可以使用 GitHub Actions 将应用程序部署到 AKS 群集。 此示例使用 Azure Vote 应用程序。
导航到 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
提交到存储库。
使用 az ad sp create-for-rbac
命令创建服务主体以使用 Contributor
角色访问资源组。 将 <SUBSCRIPTION_ID>
替换为 Azure 帐户的订阅 ID,将 <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 |
az ad sp create-for-rbac 命令的整个 JSON 输出。 |
service_principal |
<clientId> 的值。 |
service_principal_password |
<clientSecret> 的值。 |
订阅 |
<subscriptionId> 的值。 |
tenant |
<tenantId> 的值。 |
注册表 |
注册表的名称。 |
repository |
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
节包含每个不同的操作:
- Checkout source code 使用 GitHub Actions 签出操作克隆存储库。
- ACR build使用 Azure 容器注册表生成操作生成映像并将其上传到注册表。
- Azure login 使用 Azure 登录操作登录 Azure 帐户。
- Set AKS context 使用 Azure AKS 设置上下文操作为 AKS 群集设置上下文。
- Setup kubectl 使用 Azure AKS 安装程序 Kubectl 操作在运行器上安装 kubectl。
- Deploy to AKS 使用 Azure Kubernetes 部署操作将应用程序部署到 Kuberentes 群集。
将 .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 的以下初学者工作流。 有关详细信息,请参阅使用入门工作流。