注意:GitHub Enterprise Server 目前不支持 GitHub 托管的运行器。 可以在 GitHub public roadmap 上查看有关未来支持计划的更多信息。
Introduction
This guide explains how to use GitHub Actions to build and deploy a project to Azure Kubernetes Service.
Prerequisites
Before creating your GitHub Actions workflow, you will first need to complete the following setup steps:
-
Create a target AKS cluster and an Azure Container Registry (ACR). For more information, see "Quickstart: Deploy an AKS cluster by using the Azure portal - Azure Kubernetes Service" and "Quickstart - Create registry in portal - Azure Container Registry" in the Azure documentation.
-
Create a secret called
AZURE_CREDENTIALSto store your Azure credentials. For more information about how to find this information and structure the secret, see theAzure/loginaction documentation.
Creating the workflow
Once you've completed the prerequisites, you can proceed with creating the workflow.
The following example workflow demonstrates how to build and deploy a project to Azure Kubernetes Service when code is pushed to your repository.
Under the workflow env key, change the following values:
AZURE_CONTAINER_REGISTRYto the name of your container registryPROJECT_NAMEto the name of your projectRESOURCE_GROUPto the resource group containing your AKS clusterCLUSTER_NAMEto the name of your AKS cluster
This workflow uses the helm render engine for the azure/k8s-bake action. If you will use the helm render engine, change the value of CHART_PATH to the path to your helm file. Change CHART_OVERRIDE_PATH to an array of override file paths. If you use a different render engine, update the input parameters sent to the azure/k8s-bake action.
# 此工作流使用未经 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@v2 - name: Azure Login uses: azure/login@89d153571fe9a34ed70fcf9f1d95ab8debea7a73 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - name: Build image on ACR uses: azure/CLI@7378ce2ca3c38b4b063feb7a4cbe384fef978055 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@4e5aec273183a197b181314721843e047123d9fa with: creds: ${{ secrets.AZURE_CREDENTIALS }} resource-group: ${{ env.RESOURCE_GROUP }} cluster-name: ${{ env.CLUSTER_NAME }} id: login - name: Configure deployment uses: azure/k8s-bake@773b6144a3732e3bf4c78b146a0bb9617b2e016b 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@c8fbd76ededaad2799c054a9fd5d0fa5d4e9aee4 with: manifests: ${{ steps.bake.outputs.manifestsBundle }} images: | ${{ env.AZURE_CONTAINER_REGISTRY }}.azurecr.io/${{ env.PROJECT_NAME }}:${{ github.sha }} imagepullsecrets: | ${{ env.PROJECT_NAME }}Additional resources
The following resources may also be useful:
- For the original starter workflow, see
azure-kubernetes-service.ymlin the GitHub Actionsstarter-workflowsrepository. - The actions used to in this workflow are the official Azure
Azure/login,Azure/aks-set-context,Azure/CLI,Azure/k8s-bake, andAzure/k8s-deployactions. - For more examples of GitHub Action workflows that deploy to Azure, see the actions-workflow-samples repository.