【问题标题】:How to run a Jenkins build shell command as a root user, in a helm based deployment on Kubernetes?如何在 Kubernetes 上基于 helm 的部署中以 root 用户身份运行 Jenkins build shell 命令?
【发布时间】:2020-07-14 06:39:57
【问题描述】:

我正在使用 helm 在 k8s 集群中部署 Jenkins。 结果是一个可扩展的 Jenkins 环境,它为每个构建作业请求生成一个新的 pod。 我尝试运行的执行 shell 命令需要 sudo,由于缺少权限而失败。 有没有办法为此脚本授予根级别权限?

我试图在该 shell 脚本中运行的 sudo 命令是:

sudo apt-get install -y --no-install-recommends python3-distutils

我需要这个,因为没有它我的其他命令会失败:

python3 get-pip.py --user

【问题讨论】:

标签: jenkins kubernetes kubernetes-helm


【解决方案1】:

在这种情况下,您不需要 sudo。我只需创建一个自定义从属容器并使用您需要的依赖项更新容器,例如python3 和 python3-distutils。

这是您可以使用的示例 Dockerfile:

FROM jenkins/jnlp-slave

# run updates as root
USER root

# Create docker group
RUN addgroup docker

# Update & Upgrade OS
RUN apt-get update
RUN apt-get -y upgrade
RUN apt-get -y install awscli
RUN apt-get install -y --no-install-recommends python3-distutils

# Add Maven
RUN apt-get -y install maven --no-install-recommends

# Add docker
RUN curl -sSL https://get.docker.com/ | sh
RUN usermod -aG docker jenkins

# Add docker compose
RUN curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
RUN chmod +x /usr/local/bin/docker-compose

# Add Telnet
RUN apt-get -y install telnet

# close root access
USER jenkins

然后,您可以在运行作业时通过 jenkins 下的 jenkins 云配置访问此容器 -> 管理 -> 管理云和节点 -> pod 模板 -> 指向映像所在的 docker 存储库。

有关配置步骤的更多详细信息,请参阅此链接:https://www.blazemeter.com/blog/how-to-setup-scalable-jenkins-on-top-of-a-kubernetes-cluster

【讨论】:

    猜你喜欢
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-25
    • 1970-01-01
    • 2012-07-19
    • 2021-07-29
    • 1970-01-01
    相关资源
    最近更新 更多