当前位置: 首页 > ops >正文

通过 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: 2image:repository: nginxpullPolicy: IfNotPresenttag: "1.17.1"service:type: LoadBalancerport: 80ingress:enabled: falseresources: {}


步骤 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.ymltrigger:
- masterpool:name: YourAgentPoolName   //指定步骤4创建的代理池variables:azureSubscription: 'your-service-connection-name'resourceGroup: 'myResourceGroup'aksCluster: 'myAKSCluster'namespace: 'default'chartPath: 'my-nginx-chart'releaseName: 'nginx-release'stages:
- stage: Buildjobs:- job: Buildsteps:- task: UsePythonVersion@0inputs: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@0inputs:helmVersionToInstall: $(HelmVersion)- stage: DeploydependsOn: Buildjobs:- deployment: Deployenvironment: 'Azure AKS'strategy:runOnce:deploy:steps:- task: AzureCLI@2inputs:azureSubscription: $(azureSubscription)scriptType: bashscriptLocation: inlineScriptinlineScript: |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 流水线。

http://www.xdnf.cn/news/5291.html

相关文章:

  • Spark 中RDD、Job,stage,task的关系
  • ActiveMQ 生产环境问题排查与调优指南(一)
  • 编程日志5.3
  • 智能语音助手的未来:从交互到融合
  • 实战项目3(04)
  • 画立方体软件开发笔记 js-pytorch xlsx 导出 excel pnpm安装
  • uni-app学习笔记(二)--vue页面代码的构成和新建页面
  • Pandas学习笔记(四)
  • 嵌入式硬件篇---UART
  • 外网访问内网海康威视监控视频的方案:WebRTC + Coturn 搭建
  • Python OpenCV性能优化与部署实战指南
  • python 实现文件批量重命名
  • “frame stacking”---帮助强化学习稳定提升和收敛技巧
  • Nipype 简单使用教程
  • 5 从众效应
  • Spring Boot 集成 Flink CDC 实现 MySQL 到 Kafka 实时同步
  • RabbitMQ--进阶篇
  • React+Springboot项目部署ESC服务器
  • 三维空间中的组织行为映射:MATLAB 数据插值可视化技术
  • 【网络】:传输层协议 —— UDP、TCP协议
  • 兔子队列?RabbitMQ详解(1)
  • 数字化转型-4A架构之技术架构
  • Mac下Robotframework + Python3环境搭建
  • 《智能网联汽车 自动驾驶系统设计运行条件》 GB/T 45312-2025——解读
  • 无锁秒杀系统设计:基于Java的高效实现
  • 补补表面粗糙度的相关知识(一)
  • leetcode 15. 三数之和
  • Java 原生异步编程与Spring 异步编程 详解
  • 比亚迪全栈自研生态的底层逻辑
  • MySQL 索引(二)