Docker 在詹金斯 openshift 中

Docker in jenkins openshift


在 jenkins 管道中使用 docker 时出现问题:"docker: command not found"
如何在 OpenShift Jenkins 上启动 docker? 此外,没有权限在 Jenkins 中打开插件页面。

在 OpenShift 上使用 Jenkins,您不会在 Jenkins 主机上找到任何 Docker 运行时 - 并且可能在从机上也找不到:cri-o 是首选运行时(也是唯一的运行时,从 4.x).

如果你想启动容器,你应该使用任何 OpenShift 或 Kubernetes 插件:创建 Pods。在 OpenShift 中,您不需要在 Jenkins 本身上配置或安装任何东西——除了编写您的管道。只要您的 Jenkins ServiceAccount 对项目具有编辑或管理权限,那么它就能够管理相应命名空间中的容器。

pipeline {
    agent {
        node { label 'maven' }
    }
    stages {
        stage('clone') {
            // clone the repository serving your YAMLs
        }
        stage('create') {
            steps {
                script {
                    openshift.withCluster() {
                        openshift.withProject() {
                            try {
                                timeout(5) {
                                    objectsFromTemplate = openshift.process("-f", "/path/to/clone/directory/deploy.yaml", '-p', "FRONTNAME=${params.buildHash}",
                                      '-p', "LDAP_IMAGE_TAG=${params.buildHash}", '-p', "ROOT_DOMAIN=${params.rootDomain}")
                                    echo "The template will create ${objectsFromTemplate.size()} objects"
                                    for (o in objectsFromTemplate) { o.metadata.labels["${templateSel}"] = "${templateMark}-${params.buildHash}" }
                                    created = openshift.create(objectsFromTemplate)
                                    created.withEach { echo "Created ${it.name()} from template with labels ${it.object().metadata.labels}" }
                                }
                            } catch(e) {
                                // DoSomething
                            }
                        }
                    }
                }
            }
        }
    }
}

如果您没有对 Jenkins 管理界面的完全访问权限,请检查该命名空间中的 RoleBindings:也许您不是管理员?

它不会阻止您创建自己的 podTemplates(使用 ConfigMaps)、Credentials(使用 Secrets)或 jobs/jenkinsFiles(使用 BuildConfigs)。虽然您可以为 Jenkins 安装其他插件,但在您的 Jenkins 部署中 adding/changing INSTALL_PLUGINS 环境变量的内容。

另请注意,Jenkins ServiceAccount 令牌可用于以管理员身份对 Jenkins 进行身份验证,围绕 Jenkins OpenShift OAuth 集成工作。

最简单的方法是使用OpenShift提供的jenkins安装

OpenShift 中 jenkins 的文档在这里:https://docs.openshift.com/container-platform/4.8/openshift_images/using_images/images-other-jenkins.html

要构建 docker 图像,建议的解决方案是使用“源到图像”(s2i) and/or 使用"BuildConfig" 管理“docker 构建“

该文档还解释了如何使用与 OCP 集成的 jenkins 管理 jenkins authentication/authorizations(OAuth + 到 OpenShift 的角色绑定)

奖励点:jenkins 配置了所有必需的插件(k8s、OCP...),并且在您升级 OCP 时自动升级