Skip to main content

部署到 Azure Kubernetes Service

作为持续部署 (CD) 工作流程的一部分,您可以将项目部署到 Azure Kubernetes Service (AKS)。

注: GitHub 托管的运行器目前在 GitHub Enterprise Server 上不受支持。 您可以在 GitHub 公共路线图 上查看有关未来支持计划的更多信息。

简介

本指南说明如何使用 GitHub Actions 构建并部署 Php 项目到 Azure Kubernetes Service

基本要求

在创建 GitHub Actions 工作流程之前,首先需要完成以下设置步骤:

  1. 创建目标 AKS 群集和 Azure 容器注册表 (ACR)。 更多信息请参阅 Azure 文档中的“快速入门:使用 Azure 门户部署 AKS 群集 - Azure Kubernetes Service”和“快速入门 - 在门户中创建注册表 - Azure 容器注册表”。

  2. 创建名为 AZURE_CREDENTIALS 的机密来存储 Azure 凭据。 有关如何查找此信息和构建密钥的详细信息,请参阅 Azure/login 操作文档

创建工作流程

完成先决条件后,可以继续创建工作流程。

以下示例工作流程演示在将代码推送到存储库时,如何构建项目并将其部署到 Azure Kubernetes Service。

在工作流程 env 键下,更改以下值:

  • AZURE_CONTAINER_REGISTRY 更改为您的容器注册表的名称
  • PROJECT_NAME 更改为您的项目名称
  • Resources URCE_GROUP 更改为包含您的 AKS 集群的资源组
  • CLUSTER_NAME 更改为您的 AKS 集群名称

此工作流程对 azure/k8s-bake 操作使用 helm 渲染引擎。 如果要使用 helm 渲染引擎,请将 CHART_PATH 的值更改为 helm 文件的路径。 将 CHART_OVERRIDE_PATH 更改为覆盖文件路径数组。 如果使用其他渲染引擎,请更新发送到 azure/k8s-bake 操作的输入参数。

YAML
# 此工作流使用未经 GitHub 认证的操作。
# 它们由第三方提供,并受
# 单独的服务条款、隐私政策和支持
# 文档管理。

# GitHub recommends pinning actions to a commit SHA.
# To get a newer version, you will need to update the SHA.
# You can also reference a tag or branch, but the action may change without warning.

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 }}

其他资源

以下资源也可能有用: