【问题标题】:Azure DevOps Build Agents in KubernetesKubernetes 中的 Azure DevOps 构建代理
【发布时间】:2021-11-18 23:35:18
【问题描述】:

我们计划在 Kubernetes pod 中运行我们的 Azure Devops 构建代理。但是通过互联网,找不到任何推荐的方法。

详情:

  • Azure Devops 服务器
  • AKS- 1.19.11

寻找

  • AKS kubernetes 集群,其中 ADO 可以使用依赖项触发其管道。
  • 随着来自 ADO 的负载将启动,Pod 的缩放应该发生
  • 目前是否有任何默认的 MS 提供的映像可用于构建代理?
  • 在我们运行基于 Java 的应用程序时,使用 BuildAgents 和 zulu jdk debian 的映像应该是轻量级的。

任何建议都非常感谢

【问题讨论】:

    标签: azure kubernetes azure-devops azure-aks


    【解决方案1】:

    This article 提供在 Docker 中运行 Azure Pipelines 代理的说明。您可以在 Azure Pipelines 中设置自托管代理,以在 Windows Server Core(适用于 Windows 主机)或 Ubuntu 容器(适用于 Linux 主机)中运行 Docker。

    在我们运行基于 Java 的应用程序时,使用 BuildAgents 和 zulu jdk debian 的图像应该是轻量级的。

    Add tools and customize the container

    创建基本构建代理后,您可以扩展 Dockerfile 以包含其他工具及其依赖项,或者将其用作基础层来构建您自己的容器。只需确保以下内容保持不变:

    • start.sh 脚本由 Dockerfile 调用。
    • start.sh 脚本是 Dockerfile 中的最后一个命令。
    • 确保衍生容器不会删除 Dockerfile 中声明的任何依赖项。

    注意: Docker was replaced with containerd 在 Kubernetes 1.19 中,Docker-in-Docker 变得不可用。在 docker 容器中运行 docker 的几个用例:

    • docker 中 docker 的一个潜在用例是 CI 管道,您需要在代码构建成功后构建 docker 镜像并将其推送到容器注册表。
    • 使用 VM 构建 Docker 映像非常简单。但是,当您计划将 Jenkins Docker-based dynamic agents 用于您的 CI/CD 管道时,docker 中的 docker 是必不可少的功能。
    • 沙盒环境。
    • 用于在本地开发工作站上进行实验。

    如果您的用例需要在容器内运行 docker,那么您必须使用版本 here 所示,或者在替代 docker 环境如图here

    否则,如果您是 deploying the self hosted agent on AKS,则必须将第 4 步中的 azdevops-deployment 部署 here 更改为:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: azdevops-deployment
      labels:
        app: azdevops-agent
    spec:
      replicas: 1 #here is the configuration for the actual agent always running
      selector:
        matchLabels:
          app: azdevops-agent
      template:
        metadata:
          labels:
            app: azdevops-agent
        spec:
          containers:
          - name: azdevops-agent
            image: <acr-server>/dockeragent:latest
            env:
              - name: AZP_URL
                valueFrom:
                  secretKeyRef:
                    name: azdevops
                    key: AZP_URL
              - name: AZP_TOKEN
                valueFrom:
                  secretKeyRef:
                    name: azdevops
                    key: AZP_TOKEN
              - name: AZP_POOL
                valueFrom:
                  secretKeyRef:
                    name: azdevops
                    key: AZP_POOL
    

    随着来自 ADO 的负载将启动,Pod 的缩放应该发生

    您可以使用 cluster-autoscaler 和 horizontal pod autoscaler。结合使用时,水平 pod 自动缩放器专注于运行满足应用程序需求所需的 pod 数量。集群自动缩放器专注于运行支持计划 pod 所需的节点数量。 [Reference]

    【讨论】:

      猜你喜欢
      • 2021-01-03
      • 1970-01-01
      • 2021-07-01
      • 2020-03-16
      • 2020-01-01
      • 2021-03-13
      • 1970-01-01
      • 1970-01-01
      • 2019-03-23
      相关资源
      最近更新 更多