尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
OpenShift Origin 容器化部署与 Sample App 环境准备指南
测试云原生质量保障【免费下载链接】originConformance test suite for OpenShift项目地址https://gitcode.com/gh_mirrors/or/origin点击查看免费下载本文基于 origin 仓库中的 container-setup.md 展开介绍如何以 Docker 容器方式拉起一个自带全部软件包的 OpenShift Origin 实例完成宿主机 Docker 守护进程适配、客户端证书信任、私有镜像仓库部署等前置配置最终衔接 sample-app 示例 的完整构建、部署与更新流程。读完本文你将掌握“容器即集群”的单机部署要点、/var/lib/openshift数据持久化方案以及 sample app 从模板到 STI 构建的端到端准备工作。一、文档定位与适用前提examples/sample-app/目录是 OpenShift 3 时代的应用生命周期示例包含一组配置文件和脚本用于演示如何创建新应用并执行应用构建。该目录核心资产包括application-template-stibuild.jsonSTISource-to-Image构建模板也是 container-setup 文档中唯一需要拉取到容器内的应用代码文件application-template-dockerbuild.json、application-template-pullspecbuild.jsonDockerfile 构建与 PullSpec 构建的同类模板cleanup.sh一键清理脚本README.md完整的应用构建、部署、更新流程说明container-setup 文档中的“Setup”“Application Build, Deploy, and Update Flow”步骤均指向其对应章节。container-setup.md 的定位是当你使用预构建的openshift/originDocker 容器而非本地make build出的openshift二进制时需要在执行 README 主流程之前额外完成的容器专属准备步骤。sample-app 的 README 开头也明确提示if you are using the openshift/origin container, please make sure you follow these instructions first需要注意的适用前提当前 origin 仓库自 2020 年 7 月起main分支的维护范围已收敛为openshift-tests测试二进制见根目录 README.md不再产出hyperkube。因此本文所述容器化部署属于该示例的历史性单机演示路径其中的 Docker 版本要求1.3.2 以上支持--insecure-registry与命令形态均以仓库文档原文为准用于理解原理与复现旧版演示环境时尤其适用。二、下载并运行 OpenShift Origin 容器2.1 基础启动命令container-setup 文档给出的最小启动命令为$ docker run -d --name openshift-origin --nethost --privileged \ -v /var/run/docker.sock:/var/run/docker.sock \ openshift/origin start各参数在 Origin 单机场景下的作用参数作用说明--nethost容器直接使用宿主网络栈。Origin 的 router、Service 端口映射等都需要在宿主网络平面可见sample-app README 中后续--insecure-registry 172.30.0.0/16也依赖服务子网在宿主机上可达--privileged以特权模式运行。Origin 的构建操作STI 构建 Pod和 registry 服务会启动特权容器并直接调用宿主 Docker daemon 执行docker build/docker push-v /var/run/docker.sock:/var/run/docker.sock把宿主 Docker socket 挂载进容器使容器内的 Kubernetes/OpenShift 控制面能够驱动宿主 Docker 引擎创建容器。这也是 sample-app README “Security Warning” 章节强调的安全风险来源任意镜像的docker run操作等效于在宿主获得 root 能力openshift/origin start镜像入口以start子命令启动 all-in-one 的 Origin 服务2.2 数据持久化文档明确指出上述基础命令“wont hold any data after a restart”重启后不保留任何数据。原因是 Origin 的所有状态数据都落在容器内的/var/lib/openshift目录下etcd 数据、openshift.local.config证书目录、openshift.local.volumes存储卷等。要保留数据需要在 Docker 宿主机上创建/var/lib/openshift目录并挂载进去$ docker run -d --name openshift-origin --nethost --privileged \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /var/lib/openshift:/var/lib/openshift \ openshift/origin start从文档与 cleanup.sh 的内容可以推断出该目录的实际结构cleanup 脚本会卸载openshift.local.volumes挂载点并删除openshift.local.*目录而 container-setup 后文的CURL_CA_BUNDLE步骤又引用了openshift.local.config/master/ca.crt——即openshift.local.configmaster/admin 证书与 kubeconfig和openshift.local.volumes节点存储正是/var/lib/openshift下的核心数据面。三、准备 Docker 宿主机3.1 预拉取示例应用所需镜像文档要求在你的Docker 宿主机注意不是容器内部上运行pullimages.sh脚本拉取 sample app 运行所需的若干容器镜像$ sh (curl \ https://raw.githubusercontent.com/openshift/origin/main/examples/sample-app/pullimages.sh)一个需要如实说明的事实边界经在当前仓库中检索examples/sample-app/目录下并不存在pullimages.sh文件目录实际包含 OWNERS、README 与三个应用模板 JSON 等文件。这表明文档编写时所引用的脚本后来已从仓库移除属于文档的历史残留引用。结合 application-template-stibuild.json 的内容可以确认该脚本的目标镜像类别模板中通过 ImageStream 引用的基础镜像registry.access.redhat.com/ubi8/ruby-27、以及构建产物推送的私有 registry 镜像等。在当前的仓库环境中应自行根据模板中出现的镜像地址执行docker pull来完成等效的预拉取。3.2 配置“不安全”容器镜像仓库文档要求接下来遵循 sample-app README 中 “Setup” 章节关于 insecure registry 的说明。对应原文要求把--insecure-registry 172.30.0.0/16加入 Docker daemon 启动参数$ docker daemon --insecure-registry 172.30.0.0/16其原理是sample app 的私有镜像仓库运行在 OpenShift 内部后文第 5.2 节oc adm registry部署的 registry构建日志中可见其端点形如172.30.163.205:5000/test/origin-ruby-sample:latest该地址落在服务子网172.30.0.0/16内且没有可被公共 CA 验证的证书。Docker daemon 默认只信任受验证的 registry因此需要显式信任整个服务子网。原文补充两点约束该 flag 要求 Docker 1.3.2 或更高版本若通过systemd管理 Docker 服务可将该参数写入/etc/sysconfig/docker的 options 值前提是未修改 kubernetes/openshift 服务子网的默认值172.30.0.0/16。README 同时说明使用 Vagrant 镜像的用户可跳过此项。3.3 关闭 firewalldREADME 指出 OpenShift 的 firewalld 规则当时仍在演进中最省事的做法是整体停用$ sudo systemctl stop firewalld示例验证完毕后手动恢复$ sudo systemctl start firewalld重启系统也会自动拉起。Vagrant 用户同样可跳过。3.4 安全警告sample-app README 的 “Security Warning” 章节值得完整继承OpenShift 已不要求禁用 SELinux但构建操作与 registry 服务确实会使用特权容器并访问宿主 Docker daemon 执行docker build/docker push。在宿主机上直接运行 OpenShift 节点时应充分意识到运行任意镜像带来的等效 root 风险——这也是第二节中--privileged与 docker.sock 挂载的组合必须仅用于测试环境的根本原因。四、连接 OpenShift 容器并配置客户端信任容器启动后需要进入容器执行管理命令$ docker exec -it openshift-origin bash文档建议修改 bash 提示符以便区分你正处于容器内部$ PS1openshift-dock: [\u\h \W]\$ 随后在容器内完成 sample app 所需的“代码位”拉取——把 STI 构建模板下载到容器内的/var/lib/openshift下$ cd /var/lib/openshift $ mkdir -p examples/sample-app $ wget \ https://raw.githubusercontent.com/openshift/origin/main/examples/sample-app/application-template-stibuild.json \ -O examples/sample-app/application-template-stibuild.json之所以要专门下载该模板是因为后续oc new-app直接以它为输入创建整套应用资源在本仓库中可以直接查看 application-template-stibuild.json 了解其结构见下文第 5.1 节。接着配置客户端证书信任文档称为 Configure client security对应 README 构建流程的第 3 步$ export CURL_CA_BUNDLEpwd/openshift.local.config/master/ca.crt该变量让 curl 等客户端信任由 Origin 自签 CAmaster 目录下的ca.crt签发的 API 证书。README 中对应的 web console 步骤也说明了同样的背景浏览器需要先接受https://host:8443的自签证书console 才能正常调用 OpenShift API生产环境使用合法证书则无此问题。五、部署私有镜像仓库并衔接 Sample App 流程5.1 模板内容这一步之后你将构建什么在oc adm registry之前先明确整个 sample app 的构成。application-template-stibuild.json 是一个名为ruby-helloworld-sample的 TemplateapiVersion为template.openshift.io/v1声明参数包括MYSQL_USER、MYSQL_PASSWORD生成与MYSQL_DATABASE默认 root。其objects列表一次创建Secret dbsecret保存mysql-user/mysql-password字符串数据Service frontendClusterIP 类型5432 端口转发到容器 8080Route route-edgehost 为www.example.comedge TLS 终结指向 frontend 服务并带expose-uri注解ImageStream origin-ruby-sample构建产物流与ImageStream ruby-27基础镜像流指向registry.access.redhat.com/ubi8/ruby-27;BuildConfig ruby-sample-buildSource 类型构建携带 GitHub webhook 触发器secretsecret101、Generic 触发器与 ImageChange 触发器带template.alpha.openshift.io/wait-for-ready: true注解。5.2 部署私有容器镜像仓库文档给出的命令只有两行$ oc adm registry $ cd examples/sample-appoc adm registry在集群内部署私有镜像仓库。README 的构建流程第 8 步解释了它为什么必要STI 构建完成后产物镜像会以 ImageStreamorigin-ruby-sample命名推送到该私有仓库——构建日志示例显示推送目标形如172.30.163.205:5000/test/origin-ruby-sample:latest这正是第三节必须配置 insecure registry 的直接原因。README 同时提醒私有 registry 使用临时存储registry 停止后镜像即丢失。5.3 从第 5 步继续 Sample App 主流程文档指示完成上述容器专属准备后即可继续 sample-app README 的 “Application Build, Deploy, and Update Flow” 从第 5 步开始执行。把 README 中第 14 步的摘要与容器场景对齐后完整执行顺序为oc adm policy add-cluster-role-to-user cluster-admin test-admin --kubeconfigopenshift.local.config/master/admin.kubeconfig然后oc login --certificate-authorityopenshift.local.config/master/ca.crt -u test-admin任意密码oc new-project test --display-nameOpenShift 3 Sample --description...创建项目可选浏览器访问https://host:8443/console接受自签证书后用test-admin登录页面会随资源部署实时刷新可选Fork ruby 示例仓库README 示例为 openshift/ruby-hello-world便于演示“仓库变更触发构建”可选在 GitHub 仓库 settings 中配置 webhookURL 形如https://host:8443/osapi/v1/namespaces/test/buildconfigs/ruby-sample-build/webhooks/secret101/github需要“Disable SSL Verification”编辑模板中的 BuildConfigsourceURI指向自己的 forkoc new-app application-template-stibuild.json提交模板生成 Secret、两个 Service、Route、两个 ImageStream、BuildConfig 与两个 DeploymentConfig标签统一为appruby-helloworld-sampleoc get builds/oc logs -f bc/ruby-sample-build跟踪构建镜像推送到172.30.x.x:5000/test/origin-ruby-sampleImageChange 触发器自动触发部署oc logs -f dc/frontend观察滚动部署先扩缩至 1 做验收检查再扩至 2oc get pods确认 frontend 与 database Pod Runningoc get services取 frontend 的 ClusterIP示例为172.30.17.4端口 5432浏览器/curl 访问确认应用可用或按 Vagrant 用户指引做 SSH 端口转发修改代码 push 后无 webhook 时oc start-build ruby-sample-build等待新构建完成并刷新页面验证更新。在整个流程进行期间文档给出的最后一个实用技巧是在Docker 宿主机上查看 Origin 容器日志$ docker attach openshift-origin六、环境清理演示结束后的清理由 cleanup.sh 完成README “Cleaning Up” 章节需要 root 权限$ sudo ./cleanup.sh脚本依次执行四步从源码可直接读出其清理面sudo pkill -x openshift停止 openshift all-in-one 进程通过docker ps过滤^k8s_前缀并逐个docker stop停掉所有 Kubernetes 创建的容器从mount输出中提取openshift.local.volumes挂载点并umount呼应第二节的持久化目录结构sudo rm -rf openshift.local.*删除运行时生成的全部本地文件。README 对此标注了明确警告该脚本会杀掉所有k8s_前缀的容器请谨慎使用。对于第二节采用宿主目录挂载的容器化部署运行该脚本后还需自行停止/删除openshift-origin容器并视需要清理宿主机的/var/lib/openshift目录。七、小结container-setup.md 的价值在于把“Origin 容器 一个自带控制面的黑盒”拆成了可审计的五步特权启动与 socket 挂载、数据目录持久化、宿主 Docker 守护进程适配insecure registry 与防火墙、容器内客户端证书信任与模板落盘、私有 registry 部署最后平滑交接给 sample-app README 的标准构建部署流程。文中的每一个命令都能在当前仓库中找到对应佐证——模板结构见 application-template-stibuild.json数据目录与清理面见 cleanup.sh。需要注意的是该文档保留了 OpenShift 3 时代的命令形态且其中引用的pullimages.sh已不在当前仓库中实际复现时应以模板内声明的镜像地址自行拉取理解这一历史脉络正是把仓库中的示例资产当作架构教材来读的正确方式。赞分享测试云原生质量保障【免费下载链接】originConformance test suite for OpenShift项目地址https://gitcode.com/gh_mirrors/or/origin点击查看免费下载相关推荐OpenShift Origin sample-app 全解用应用模板走通构建、部署与更新全流程OpenShift Origin sample app 全解用应用模板走通构建、部署与更新全流程 本文以仓库中 examples/sample app/REA测试云原生质量保障Lynx CSS 伪类与伪元素使用指南支持清单、实战用法与渲染器源码实现Lynx CSS 伪类与伪元素使用指南支持清单、实战用法与渲染器源码实现 本文围绕 Lynx 的 CSS 伪类pseudo classes与伪元素pse人工智能大模型推理引擎本地部署OpenShift Origin高可用部署终极指南生产环境10个关键配置清单OpenShift Origin高可用部署终极指南生产环境10个关键配置清单 OpenShift Origin是Red Hat开发的企业级Kubernetes测试云原生质量保障上一篇Tabulator 行分组功能详解数据聚合与分类展示技巧下一篇PermissionsKit在真实项目中的应用知名App案例分析 创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

LeetCode Top 100高频题刷题指南:吃透双指针、BFS与动态规划

LeetCode Top 100高频题刷题指南:吃透双指针、BFS与动态规划

还记得我第一次打开LeetCode的Top 100题单时,第一反应是:这些题真的够用吗?刷完到底要花多久?说实话,很多帖子喜欢把这份题单捧成“面试通关秘笈”,但我完整刷过两轮之后,更愿意把它看作一份高频…

📅 2026/9/25 3:01:10
OV13850 MIPI RAW 驱动配置与调试实战:XML 解析、寄存器下发与出图排查

OV13850 MIPI RAW 驱动配置与调试实战:XML 解析、寄存器下发与出图排查

简介:这份资源面向嵌入式驱动开发与摄像头调试人员,聚焦OV13850这款高性能CMOS图像传感器的MIPI RAW数据采集配置。OV13850常用于智能手机、安防监控与无人机等场景,其MIPI时序、分辨率、曝光增益等参数配置直接影响成像质量与平台兼容性&…

📅 2026/9/25 2:56:09
ESPnet2 中文单说话人 TTS 实战指南:基于 CSMSC 语料库的 VITS / Tacotron2 / FastSpeech 系列 Recipe 全解析

ESPnet2 中文单说话人 TTS 实战指南:基于 CSMSC 语料库的 VITS / Tacotron2 / FastSpeech 系列 Recipe 全解析

人工智能语音音频深度学习NLP 【免费下载链接】espnet End-to-End Speech Processing Toolkit 项目地址: https://gitcode.com/gh_mirrors/es/espnet 点击查看 免费下载 本篇技术指南以 ESPnet 仓库中的 egs2/csmsc/tts1 recipe(关联文档)为…

📅 2026/9/25 2:56:09
MORE NEWS

更多资讯

📰

MindSpeed LLM流式推理实战:分布式在线生成完全指南

MindSpeed LLM流式推理实战:分布式在线生成完全指南 【免费下载链接】MindSpeed-LLM 昇腾LLM分布式训练框架 项目地址: https://gitcode.com/Ascend/MindSpeed-LLM MindSpeed-LLM 是面向昇腾 NPU 的 LLM 分布式训练框架,除训练外,它还…

📰

react-native-fast-image 中移除内置 AppGlideModule:解决 Glide 单例冲突的 excludeAppGlideModule 实践

移动开发前端UI组件 【免费下载链接】react-native-fast-image 🚩 FastImage, performant React Native image component. 项目地址: https://gitcode.com/gh_mirrors/re/react-native-fast-image 点击查看 免费下载 本篇围绕 docs/app-glide-module.md…

📰

揭秘源师兄Python IDE隐藏的游戏化玩法:做任务、绑邀请码领积分,学Python更有动力

揭秘源师兄Python IDE隐藏的游戏化玩法:做任务、绑邀请码领积分,学Python更有动力 【免费下载链接】PythonIDE 源师兄的专属Python IDE,深度适配源师兄生态,打造人机一体的编程体验。 项目地址: https://gitcode.com/yuanshixio…

📰

迁移 MySQL 扩展:从 mysql_* 到 mysqli 与 PDO 的升级指南(php-the-right-way)

文档教程 【免费下载链接】php-the-right-way An easy-to-read, quick reference for PHP best practices, accepted coding standards, and links to authoritative tutorials around the Web 项目地址: https://gitcode.com/gh_mirrors/ph/php-the-right-way 点击…

📰

DETR目标检测实战:从二分图匹配到端到端训练全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

从.wasm到ESP32完整应用:运行时、固件与实操指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬