在 AKS 中运行 Azure DevOps 私有代理-1

简介


配置 Azure DevOps 私有代理的传统方法是将其部署在虚拟机 (VM) 上。然而,一个有趣的替代方案是利用 Azure Kubernetes 服务 (AKS) 来实现此目的。

本文将指导您如何使用 Helm Chart 在 AKS 集群中设置 Azure DevOps 私有代理,并提供该过程的分步说明。

在 AKS 中部署 Azure DevOps 私有代理(而不是预配新的虚拟机)会显著影响 CI/CD 流水线的成本效益、可扩展性和可管理性。虽然虚拟机易于设置,但它们会产生更高的成本,并且由于每个虚拟机都需要完整的操作系统和专用资源(无论工作负载如何),可能会导致资源利用不足。这种设置不仅增加了扩展和维护的复杂性,还增加了计算和存储成本。

相比之下,在 AKS 中托管 Azure DevOps 私有代理提供了一种更具动态性且经济高效的解决方案。AKS 简化了管理容器化应用程序的大部分复杂性,并充分利用了 Kubernetes 的编排功能。通过在 AKS 中将 DevOps 代理部署为容器,组织可以获得基于工作负载的自动扩展、比虚拟机更快的启动时间以及简化的代理队列管理。本文旨在探讨使用 AKS 相较于基于虚拟机的方法的优势,并提供在 AKS 中高效部署 Azure DevOps 私有代理的全面指南,从而增强 DevOps 工作流程,从而提高性能、可靠性和成本效益。

什么是 Azure DevOps 私有代理?


Azure DevOps 私有代理本质上是一种在用户提供的基础架构上运行的软件代理,无论是本地服务器、虚拟机,还是 Azure Kubernetes 服务 (AKS) 等容器化环境。这些代理负责执行 Azure DevOps 流水线中定义的任务,例如编译代码、运行测试和部署应用程序。每个私有代理都注册到特定的 Azure DevOps 组织,并且可以进一步与该组织内的一个或多个项目关联。

Azure DevOps 私有代理的优势如下:

  • 自托管:与 Azure DevOps 提供的由 Microsoft 管理并在共享环境中运行的托管代理不同,私有代理由您或您的组织自托管。您可以在自己的基础架构上安装、配置和管理这些代理,从而更好地控制执行环境。
  • 自定义:可以根据构建和发布任务的特定要求自定义私有代理。您可以安装其他软件、配置环境变量,并根据项目需求修改代理。
  • 安全性和隔离性:当您需要在无法通过公共互联网访问的环境中执行 CI/CD 作业,或者希望更好地控制安全性时,通常会使用私有代理。私有代理可以在您的私有网络内运行,从而增强安全性和隔离性。
  • 访问私有资源:如果您的 CI/CD 流程需要访问无法公开访问的私有资源、数据库或服务,则可以配置私有代理以在您的网络中访问这些资源。

技术场景


当您在无法通过公共互联网访问的私有网络中运行 Azure 服务,并且需要从位于公共网络中的 Azure DevOps 流水线进行连接时,解决方案是在与私有服务相同的虚拟网络中部署一台私有构建机器。这台私有构建机器充当桥梁,促进 Azure DevOps 流水线与私有网络内资源的无缝连接。

例如,如果您已经建立了一个私有 AKS 集群来运行应用程序,则需要在同一虚拟网络中部署一个专用的私有自托管代理来简化部署过程。同样,假设您已经配置了一个带有私有 DNS 区域的 PostgreSQL 服务器,并且您的 Azure DevOps 流水线位于公共网络中。要建立与该数据库的连接,需要在 PostgreSQL 服务器所在的虚拟网络中部署您自己的私有代理。此解决方案可以实现与私有资源的安全高效通信。

目标


在本练习中,我们的目标是完成并学习以下任务:

步骤 1:在 Kubernetes 中安装私有代理 Helmchart
步骤 2:在 AKS 中验证私有代理资源
步骤 3:在 Azure DevOps 中创建新的代理池
步骤 4:创建新的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/91779.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/91779.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# _Json数据

目录 1、添加Json库 2、数据序列化(对象转 JSON)和反序列化(JSON 转对象)操作 3、序列化 创建和读取Json数据 创建Json数据 定义一个CreateJson方法 读取 解析 Json数据 定义一个ReadJson方法 4、程序运行结果 在 C# 中&…

JavaScript 原始值与引用值

JavaScript 原始值与引用值 ECMAScript变量可以包含两种不同类型的数据:原始值和引用值。 原始值(primitive value)就是最简单的数据,引用值(reference value)则是由多个值构成的对象。 保存原始值的变量是…

linux中挂载磁盘和卸载

查找磁盘 找到你想要挂载的磁盘。可以使用lsblk或fdisk -l命令来查看系统中所有的磁盘和分区信息。 lsblk 对数据盘进行分区 在fdisk交互界面里,按以下步骤操作 fdisk /dev/vdb- 输入n来创建新分区。 - 按照提示设置分区的起始扇区、结束扇区等信息,…

java8学习笔记-Stream流

JDK1.8新增了Stream类,从而把函数式编程的风格引入到Java语言中,Stream类的API提供了强大的功能,使用Stream后,可以写出更加强大,更加简洁的代码首先,Stream流有一些特性:Stream流不是一种数据结…

Flutter开发 dart语言基本语法

特点 Dart语言支持JIT与AOT。 Dart语言采用单线程模型。 Dart语言是强类型编程语言,但是允许弱类型语言式编程。 基本语法 1.变量和常量 变量 var、object、dynamic关键字或数据类型显式声明变量。 命名规则: 变量名称必须由数字、字母、下划线或$组成&a…

SpringBoot:基于 Redis 自定义注解实现后端接口防重复提交校验(幂等操作)

SpringBoot:基于 Redis 自定义注解实现后端接口防重复提交校验(幂等操作)可基于 时间间隔 和 用于幂等判断的参数名称 实现防重复提交校验 客户端发送请求 ↓ [Spring Boot 应用入口]↓ ┌─────────────────────────…

【语音技术】意图与语料

目录 1. 意图 1.1. 意图分类 1.1.1 入口意图(Entry Intent) 1.1.2 对话意图(Dialog Intent) 1.2. 意图类型切换操作步骤 2. 语料 2.1 语料分类详解 2.2 语料编写规范详解 2.3 标签符号深度说明 3. 词槽 3.1 符类型要求 …

【MySQL集群架构与实践5】使用Docker实现水平分片

目录 一. 在Docker中安装ShardingSphere 二. 实践:水平分片 2.1 应用场景 2.2 架构图 2.3 服务器规划 2.4 创建server-user容器 2.5 创建server-order0和server-order1容器 2.6.日志配置 2.7 数据节点配置 2.8.测试数据节点 2.8.1.测试server_order0.t_or…

视觉图像处理中级篇 [1]—— 彩色照相机的效果与预处理

在工业检测中,黑白相机虽应用广泛,但在应对颜色差异检测时往往力不从心。彩色照相机凭借其对色彩信息的精准捕捉,成为复杂场景下的理想选择,而预处理技术则进一步释放了其性能潜力。一、彩色照相机的效果检查盖子上的金色标签可以…

使用 BERT 的 NSP 实现语义感知切片 —— 提升 RAG 系统的检索质量

在构建 Retrieval-Augmented Generation(RAG)系统时,文档的切片方式至关重要。我们需要将长文本切分成合适的段落(chunks),然后存入向量数据库进行召回。如果切得太粗,会丢失上下文细节&#xf…

使用STM32CubeMX生成的STM32CubeIDE工程在更改工程名后编译失败问题解决

0 问题描述 使用STM32CubeMX生成STM32CubeIDE工程,然后使用STM32CubeIDE改名后编译提示如下错误: 1 问题原因及解决办法 1.1 问题原因 原因在于更名后STM32CubeIDE没有自动更新引用关系,这是因为我们使用STM32CubeMX生成代码时没有勾选在根目录下生成: 取消勾选在根目…

8月3日星期日今日早报简报微语报早读

8月3日星期日,农历闰六月初十,早报#微语早读。1、广西防城港:奔驰女司机身份已查清,结果将统一对外发布;2、陈艺文、陈佳包揽游泳世锦赛女子跳水三米板金银牌;3、九省份保险业已赔付暴雨灾害损失5.2亿元&am…

wxPython 实践(六)对话框

wxPython 实践(一)概述 wxPython 实践(二)基础控件 wxPython 实践(三)页面布局 wxPython 实践(四)事件响应 wxPython 实践(五)高级控件 wxPython 实践&#x…

MATLAB科研数据可视化技术

互联网的飞速发展伴随着海量信息的产生,而海量信息的背后对应的则是海量数据。如何从这些海量数据中获取有价值的信息来供人们学习和工作使用,这就不得不用到大数据挖掘和分析技术。数据可视化分析作为大数据技术的核心一环,其重要性不言而喻…

文明存续的时间博弈:论地球资源枯竭临界期的技术突围与行动紧迫性

摘要当地球资源消耗以指数级速度逼近生态承载力极限,人类文明正面临“存续还是消亡”的终极抉择。本文基于地球资源枯竭的实证数据与技术突破的可行性分析,揭示文明存续的时间窗口已进入不可逆临界期(2040-2070年),论证…

Elasticsearch 8.19.0 和 9.1.0 中 LogsDB 和 TSDS 的性能与存储改进

作者:来自 Elastic Martijn Van Groningen 探索 TSDS 和 LogsDB 的最新增强功能,包括优化 I/O、提升合并性能等。 Elasticsearch 带来了许多新功能,帮助你为你的使用场景构建最佳搜索解决方案。通过我们的示例笔记本深入学习,开始…

cs336之注意pytorch的tensor在哪里?(assert的使用)

问题 记住:无论何时你在pytorch中有一个张量tensor,你应该始终问一个问题:它当前位于哪里? 注意它在CPU还是在GPU中。要判断它在哪里,可以使用python的assert断言语句。 assert断言 在 Python 中,assert 是…

Mysql 分区表

分区表是将一张表分成多张独立子表,每个子表是一个区,目的是提高查询效率。 从 server 层来看,只有一张表。但是从引擎层来看,是多张表,对应多个.idb文件。引擎层访问数据只访问特定分区表,也只对特定分区表…

Makefile 入门与实践指南

Makefile 是用于 make 工具的配置文件,它定义了如何编译和链接你的项目,让构建过程自动化。一、核心概念 make 的核心思想是 “目标”(Target) 和 “依赖”(Dependencies): 目标 (Target)&#…

分布式微服务--Nacos作为配置中心(补)关于bosststrap.yml与@RefreshScope

一、关于bosststrap.yml✅ bootstrap.yml 和 application.yml 的区别对比项bootstrap.ymlapplication.yml加载时机优先于 application.yml 加载(启动早期)程序初始化完成后加载主要用途设置应用的外部配置源、注册中心信息等设置应用内部配置&#xff0c…