通过 Azure DevOps 探索 Helm 和 Azure AKS

俗话说:"慷慨之人必昌盛;滋润他人者,必得滋润。" 如果您觉得这篇文章对您有有所帮助,请点赞,关注,转发!

前言

在不断发展的云计算世界中,应用程序的无缝部署和管理至关重要。Azure DevOps 应运而生------这是 Microsoft 提供的一套强大的开发工具,提供用于构建、测试和部署应用程序的端到端 DevOps 功能。今天,我们将探索 Azure DevOps 如何简化将 Helm 应用程序配置到 Azure Kubernetes 服务 (AKS) 的过程。我们将逐步指导您完成此过程,并提供完整的代码示例,确保您能够充分利用这些工具的强大功能。

Azure DevOps 介绍

Azure DevOps 包含一系列服务,包括 Azure Repos、Azure Pipelines、Azure Boards、Azure Artifacts 和 Azure Test Plans。在我们的旅程中,我们将重点介绍 Azure Pipelines,它支持持续集成和持续部署 (CI/CD)。这些管道对于自动化应用程序部署、确保一致性和减少手动错误至关重要。

Azure DevOps 的主要优势:

  1. 自动化:自动化您的构建、测试和部署流程,让您专注于创新。
  2. 协作:通过集成工具促进开发团队之间的协作。
  3. 可扩展性:无论项目规模如何,都能无缝扩展您的流程。
  4. 灵活性:可与各种工具和服务集成,提供多功能的 DevOps 环境。
  5. 规划路线:将 Helm 应用程序配置到 Azure AKS

Azure DevOps 构建代理

代理的定义和分类

构建代理是执行构建和发布管道中定义的任务的工作器。这些任务包括编译代码、运行测试、创建部署包等等。管道运行时,它会从代理池中请求代理来执行这些任务。

Azure DevOps 中有两种类型的代理:

  • Microsoft 托管代理:这些代理由 Azure DevOps 提供并由 Microsoft 维护。它们是预先配置的,并会自动更新。
  • 自托管代理:这些代理可以在您自己的基础架构上设置,从而更好地控制软件依赖项、环境配置和安全性。

什么是代理池?

代理池将构建代理分组。在 Azure DevOps 中创建流水线时,您会将其分配给一个代理池,该代理池将管理任务在可用代理之间的分配。Azure DevOps 中的每个项目都可以使用一个或多个代理池,从而提供一种灵活且可扩展的方式来管理您的构建环境。

为何使用代理池?

  • 资源控制:管理特定代理并将其分配到不同的项目。
  • 成本效益:自托管代理减少了对 Microsoft 托管代理的依赖,而 Microsoft 托管代理在超出免费套餐限制后可能会产生额外费用。
  • 自定义环境:自托管代理允许您为特定任务(例如自定义库或工具)配置环境。

通过Azure devops将 Helm 应用程序预配到 Azure AKS

步骤 1:设置 Azure AKS 集群

在深入研究 Azure DevOps 之前,我们需要设置一个 AKS 集群。

复制代码
# Log in to your Azure account
az login

# Create a resource group
az group create --name myResourceGroup --location eastasia

# Create an AKS cluster
az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 1 --enable-addons monitoring --generate-ssh-keys

步骤 2:准备 Helm Chart

为您的应用程序创建 Helm Chart。在本例中,我们将使用 NGINX 部署。

复制代码
# Create a new Helm chart
helm create my-nginx-chart

# Navigate to the chart directory
cd my-nginx-chart

# Update the values.yaml file for your deployment needs

以下是 NGINX 部署的基本 values.yaml 配置:

复制代码
replicaCount: 2

image:
  repository: nginx
  pullPolicy: IfNotPresent
  tag: "1.17.1"

service:
  type: LoadBalancer
  port: 80

ingress:
  enabled: false

resources: {}

步骤 3:设置 Azure DevOps

创建 Azure DevOps 项目:导航到 Azure DevOps 并创建一个新项目。

设置 Azure Repos:将您的 Helm Chart 推送到 Azure Repos。

复制代码
# Initialize a new Git repository
git init

# Add your files and commit
git add .
git commit -m "Initial commit of Helm chart"

# Add your Azure Repo as a remote and push
git remote add origin https://dev.azure.com/your-organization/your-project/_git/your-repo
git push -u origin master

步骤 4:添加自己的代理池

步骤 1:导航至"组织设置"

  • 登录您的 Azure DevOps 帐户。
  • 点击左下角的齿轮图标,进入您的组织设置。

步骤 2:访问"代理池"部分

  • 在"设置"菜单中,点击"管道"类别下的"代理池"。
  • 在这里,您将看到您组织现有的代理池列表。

步骤 3:创建新的代理池

  • 要创建新的代理池,请点击顶部的"添加池"按钮。
  • 为您的代理池命名一个描述性的名称(例如,"Linux 代理"或"Windows 构建池")。
  • 如果您希望该池供所有项目使用,还是仅供特定项目使用,请选择此选项。
  • 点击"创建"以完成代理池的创建。

步骤 4:将自托管代理添加到池中(可选)

  • 如果您使用自托管代理,则需要手动将其添加到池中:
  • 下载适用于您操作系统的代理包。
  • 使用提供的脚本或可执行文件在您的计算机上配置并安装代理。
  • 通过提供您的组织 URL、代理池名称和身份验证令牌,向 Azure DevOps 注册代理。

步骤 5:创建服务连接

要允许 Azure DevOps 与您的 Azure 资源交互,请创建服务连接。

  1. 导航到 Azure DevOps 中的项目设置。
  2. 在"管道"下,选择"服务连接"。
  3. 为 Azure 资源管理器创建一个新的服务连接,并使用您的 Azure 帐户对其进行身份验证。

步骤 6:定义您的 Azure DevOps 管道

在您的代码库中创建一个管道文件 (azure-pipelines.yml) 来定义 CI/CD 流程。

复制代码
# azure-pipelines.yml

trigger:
- master

pool:
  name: YourAgentPoolName   //指定步骤4创建的代理池

variables:
  azureSubscription: 'your-service-connection-name'
  resourceGroup: 'myResourceGroup'
  aksCluster: 'myAKSCluster'
  namespace: 'default'
  chartPath: 'my-nginx-chart'
  releaseName: 'nginx-release'

stages:
- stage: Build
  jobs:
  - job: Build
    steps:
    - task: UsePythonVersion@0
      inputs:
        versionSpec: '3.x'
    - script: |
        echo "##vso[task.setvariable variable=HelmVersion]$(helm version --short --client | cut -d'.' -f1,2)"
      displayName: 'Set Helm version variable'
    - task: HelmInstaller@0
      inputs:
        helmVersionToInstall: $(HelmVersion)

- stage: Deploy
  dependsOn: Build
  jobs:
  - deployment: Deploy
    environment: 'Azure AKS'
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureCLI@2
            inputs:
              azureSubscription: $(azureSubscription)
              scriptType: bash
              scriptLocation: inlineScript
              inlineScript: |
                az aks get-credentials --resource-group $(resourceGroup) --name $(aksCluster)
                helm upgrade --install $(releaseName) $(chartPath) --namespace $(namespace)
              addSpnToEnvironment: true

步骤 7:运行流水线

提交并将 azure-pipelines.yml 文件推送到您的代码库。这将触发流水线运行。

复制代码
# Add and commit the pipeline file
git add azure-pipelines.yml
git commit -m "Add Azure DevOps pipeline for Helm deployment"
git push

步骤 8:监控部署

导航到 Azure DevOps 中的"流水线"部分,监控构建和部署过程。完成后,在 AKS 集群中验证部署。

复制代码
kubectl get all -n default

您应该看到 NGINX Pod 正在运行,并且 LoadBalancer 服务正在公开应用程序。

总结

通过利用 Azure DevOps 流水线,我们已将 Helm 应用程序自动部署到 Azure AKS。这种方法不仅节省时间,还能确保一致性并降低人为错误的风险。Azure DevOps 的强大之处在于它能够与各种工具和服务无缝集成,从而提供紧密结合且高效的 CI/CD 流水线。

相关推荐
木二_12 小时前
实践003-Gitlab CICD编译构建
ci/cd·gitlab·devops
云攀登者-望正茂19 小时前
AKS 网络深入探究:Kubenet、Azure-CNI 和 Azure-CNI(overlay)
网络·azure
Leinwin19 小时前
Microsoft Azure 在印度尼西亚区域正式上线
microsoft·azure
Once_day1 天前
研发效率破局之道阅读总结(5)管理文化
研发效能·devops
Johny_Zhao1 天前
思科安全大模型SOC作业应用分析
linux·网络·人工智能·网络安全·ai·信息安全·云计算·shell·devops·cisco·yum源·系统运维·itsm
剑哥在胡说1 天前
高并发PHP部署演进:从虚拟机到K8S的DevOps实践优化
kubernetes·php·devops
alden_ygq1 天前
金丝雀/灰度/蓝绿发布的详解
云原生·容器·kubernetes·devops
云攀登者-望正茂1 天前
解锁 DevOps 新境界 :使用 Flux 进行 GitOps 现场演示 – 自动化您的 Kubernetes 部署
kubernetes·devops
-曾牛1 天前
Azure OpenAI 聊天功能全解析:Java 开发者指南
java·开发语言·人工智能·spring·flask·azure·大模型应用