You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在EKS部署的Jenkins slave节点安装Python与AWS CLI

在EKS Jenkins Slave节点安装Python和AWS CLI的几种实用方案

方案1:自定义Jenkins Slave镜像(推荐,长期复用)

这种方式将依赖预安装到镜像中,避免每次流水线执行重复安装,提升效率。

  1. 编写Dockerfile(基于官方Jenkins inbound-agent镜像):
FROM jenkins/inbound-agent:latest

USER root

# 安装Python3及pip(Debian/Ubuntu系镜像)
RUN apt-get update && apt-get install -y --no-install-recommends python3 python3-pip \
    && pip3 install --upgrade pip \
    && apt-get clean && rm -rf /var/lib/apt/lists/*

# 安装AWS CLI v2
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" \
    && unzip awscliv2.zip \
    && ./aws/install \
    && rm -rf awscliv2.zip aws

USER jenkins
  1. 构建镜像并推送到ECR或私有镜像仓库:
docker build -t your-ecr-repo/jenkins-slave-with-deps:latest .
docker push your-ecr-repo/jenkins-slave-with-deps:latest
  1. 在Jenkins的Kubernetes配置中,将Slave模板的镜像替换为这个自定义镜像即可。

方案2:流水线阶段动态安装(临时需求场景)

如果只是临时测试,可在Jenkinsfile中添加安装步骤,每次执行流水线时自动安装依赖:

pipeline {
    agent {
        kubernetes {
            // 你的Kubernetes Agent配置,比如标签、资源限制等
        }
    }
    stages {
        stage('安装依赖') {
            steps {
                script {
                    // 安装Python3和pip
                    sh 'sudo apt-get update && sudo apt-get install -y python3 python3-pip'
                    sh 'sudo pip3 install --upgrade pip'
                    
                    // 安装AWS CLI v2
                    sh 'sudo curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"'
                    sh 'sudo unzip awscliv2.zip'
                    sh 'sudo ./aws/install'
                    
                    // 清理安装文件
                    sh 'rm -rf awscliv2.zip aws'
                    
                    // 验证安装
                    sh 'python3 --version'
                    sh 'aws --version'
                }
            }
        }
        // 后续业务流水线阶段
    }
}

注意:如果Slave使用Alpine镜像,需将apt-get替换为apk,且AWS CLI v2需用兼容musl的安装包(或直接安装v1版本apk add aws-cli)。


方案3:使用Kubernetes Init容器预安装

通过Init容器在Slave Pod启动前完成依赖安装,将依赖挂载到共享卷供主容器使用:

pipeline {
    agent {
        kubernetes {
            yaml """
apiVersion: v1
kind: Pod
spec:
  initContainers:
  - name: install-dependencies
    image: debian:latest
    command:
    - sh
    - -c
    - |
      apt-get update && apt-get install -y python3 python3-pip unzip curl
      pip3 install --upgrade pip
      curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
      unzip awscliv2.zip
      ./aws/install --install-dir /deps/aws-cli --bin-dir /deps/bin
      rm -rf awscliv2.zip aws
    volumeMounts:
    - name: deps-volume
      mountPath: /deps
  containers:
  - name: jenkins-slave
    image: jenkins/inbound-agent:latest
    env:
    - name: PATH
      value: "\$PATH:/deps/bin"
    volumeMounts:
    - name: deps-volume
      mountPath: /deps
  volumes:
  - name: deps-volume
    emptyDir: {}
"""
        }
    }
    stages {
        stage('验证依赖') {
            steps {
                sh 'python3 --version'
                sh 'aws --version'
            }
        }
    }
}

关键注意事项

  • 权限问题:安装依赖需要root权限,可通过镜像中切换USER root、流水线中使用sudo(需Slave镜像支持)或Init容器以root身份运行解决。
  • 镜像适配:不同基础镜像(Debian/Ubuntu、Alpine)的包管理命令不同,需对应调整安装脚本。
  • AWS CLI版本:优先使用v2版本,若依赖v1可通过pip3 install awscli安装。

内容的提问来源于stack exchange,提问作者Deepakvg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 19:55:16