发布于 2026-01-06 4 阅读
0

从 Docker 镜像到 OpenShift 部署 快速历史 为什么选择 OpenShift? DIY OpenShift 示例 我们的 Kubernetes 资源 总结 由 Mux 呈现的 DEV 全球展示挑战赛:展示你的项目!

从 Docker 镜像到 OpenShift 部署

简史

为什么选择 OpenShift?

DIY OpenShift 示例

我们的 Kubernetes 资源

概括

由 Mux 赞助的 DEV 全球展示挑战赛:展示你的项目!

在本教程中,我将向您展示一个在 OpenShift V4 上部署 Docker 容器的实际示例。您可以在我的GitHub 代码库中找到本教程中涉及的所有 Kubernetes 资源。如果您只具备 Docker 和 Kubernetes 的一些基础知识,并且还不了解 OpenShift,也不用担心,本教程非常适合您!

尼德霍恩

简史

从原生应用程序到 Docker 容器再到 Kubernetes

过去,软件公司将应用程序部署在“裸机”上,也就是说,一台物理计算机只运行一个应用程序。随着虚拟机的出现,情况有所改善,虚拟机允许多个相互隔离的应用程序运行在同一台物理服务器上。近几年,一种更轻量级的虚拟化解决方案——Docker 容器——开始流行。当企业开始大量使用 Docker 容器时,他们的部署环境变得相当混乱,因此像 Kubernetes 这样的编排工具应运而生。Kubernetes 允许规划、执行和管理以 Docker 容器形式部署的应用程序,并使部署可复现且易于定制。

容器杂乱

从“裸机”到“PaaS”

随着新工具的开发,托管格局也发生了显著变化。十年前或二十年前,大多数公司还在自家地下室的机器上托管应用程序,而如今,越来越多的软件开发公司开始考虑将应用程序托管在第三方公司。这极大地有助于将应用程序开发与应用程序部署和监控的职责分开。如今,许多优秀的云服务提供商能够应对诸多重要挑战,例如硬件扩展、异地冗余、运行集群的监控以及安全组件的配置。提供平台即服务 (PaaS)的公司包括 AWS、Google Cloud、IBM Cloud、Microsoft Azure 等等。

为什么选择 OpenShift?

本文将讨论的平台即服务 (PaaS) 解决方案是 OpenShift。它由Red Hat开发,基于 Docker 和 Kubernetes 构建。OpenShift 可以运行在任何云基础设施上,许多主流云服务提供商都提供相关服务,包括前面提到的 AWS、Google Cloud、IBM Cloud 和 Microsoft Azure。

那么,与 Kubernetes 集群相比,使用 OpenShift 的优势是什么呢?OpenShift 在支持所有 Kubernetes 资源的同时,还提供了几个额外的功能:

  • 易于使用:由于有许多预配置的参数和友好的图形用户界面,OpenShift 非常容易上手。
  • 默认安全:OpenShift 应用默认安全。红帽的安全专家投入了大量时间和精力,使该平台能够抵御攻击。
  • 附加工具:与简单的 Kubernetes 集群相比,OpenShift 提供了额外的工具:源到镜像构建、Kibana 监控、OpenShift 注册表等。

不过需要注意的是,有些人可能更喜欢纯 Kubernetes 集群基础设施,原因如下:

  • 避免依赖供应商:OpenShift 支持所有 Kubernetes 对象,因此,由于部署仅使用标准 Kubernetes 资源,未来可以轻松切换到其他云提供商。不过,OpenShift 和 Kubernetes 之间也存在一些细微差别,例如 OpenShift 的 Route 资源(Kubernetes 中不存在)。
  • 定价:OpenShift 和 Kubernetes 的供应商都很多,因此比较成本比较困难。一般来说,OpenShift 平台的功能更强大,这也是为什么它的价格往往略高一些的原因。

总的来说,OpenShift 是一个非常棒的解决方案,已被世界各地的许多公司采用,所以我认为它会长期存在下去。事不宜迟,让我们直接来看实际示例吧!

DIY OpenShift 示例

好了,现在是时候在 OpenShift V4 上运行你的第一个应用程序了。你只需要一个 OpenShift 帐户和来自Github 仓库的Kubernetes 资源。

创建免费的 OpenShift 帐户

为了进行实验,OpenShift 提供了一个名为“OpenShift online”的解决方案,可以免费使用 2 个月。

OpenShift 在线

在 OpenShift 上部署应用程序(通过 Web 控制台)

要部署你的第一个应用,你需要两样东西:

  • Docker 镜像
  • Kubernetes 资源

至于 Docker 镜像:我已经将一个简单的 Java 应用程序打包成 Docker 镜像并发布到Docker Hub上。Kubernetes 资源中直接引用了该 Docker 镜像,因此您只需从我的GitHub 仓库下载 Kubernetes 资源即可。

我们先从部署开始。前往已创建 OpenShift 项目的 Web 控制台,然后:

  • 在“开发者”视图中,转到“+添加”并选择“YAML”。
  • 复制并粘贴所有 Kubernetes 资源:deployment.yamlservice.yaml以及(您可以在Githubroute.yaml上找到这些文件
  • 完成!您的应用正在部署到 OpenShift。要查看状态,请转到“管理员”视图 -> 工作负载 -> Pod。

跑步舱

你应该会看到一个名为“spring-boot-app-*”的 Pod 正在启动。启动并运行后,我们像这样测试它:

  • 在“管理员”视图中,转到“网络”->“路由”。
  • 对于“spring-boot-app-route”,选择“Location”:这是一个用于访问正在运行的应用程序的公共 URL。
  • 在 URL 后添加“/api/ping”,你应该就能看到应用返回的响应了。

乒乓球

  • 好了各位😊 你们的应用程序现在已经在 OpenShift 上运行了!

在 OpenShift 上部署应用程序(通过 CLI)

在实际的开发项目中,你会希望尽可能地实现自动化。人们通常会使用像 Jenkins 这样的 CI/CD 流水线来编译新的应用程序版本、进行测试、构建 Docker 镜像并将应用程序部署到云端。为此,OpenShift 提供了一个命令行工具oc,它可以显示正在运行的应用程序的状态、修改部署配置以及启动新的部署。

  • 首先,您可能需要移除 OpenShift 上的所有现有资源。最简单的方法是删除当前的 OpenShift 项目并创建一个新项目。
  • oc按照“?”->“命令行工具”下的说明安装CLI
  • 按照上一页“复制登录命令”中的说明,通过 oc CLI 登录到 OpenShift。


$ oc login --token=--server=


Enter fullscreen mode Exit fullscreen mode
  • 请确保您位于正确的 OpenShift 项目中


$ oc projects


Enter fullscreen mode Exit fullscreen mode
  • 从 GitHub 获取 Kubernetes 资源


$ git clone https://github.com/pmgysel/cloud-stack_openshift-kubernetes-ressources.git
$ cd cloud-stack_openshift-kubernetes-ressources


Enter fullscreen mode Exit fullscreen mode
  • 上传 Kubernetes 资源


$ oc apply -f deployment.yaml
$ oc apply -f service.yaml
$ oc apply -f route.yaml


Enter fullscreen mode Exit fullscreen mode
  • 好了,各位😊 你们已经通过命令行完成了第一次 OpenShift 部署!

我们的 Kubernetes 资源

您已在 OpenShift 平台上创建了 3 个 Kubernetes 资源。让我们快速了解一下这 3 个资源如何协同工作。这是一个相当简单的 Kubernetes 入门介绍,如果您已经掌握了这项技术的高级知识,可以跳过此部分。

Kubernetes 资源

  • deployment.yaml:Kubernetes Deployment 指定容器的部署方式,包括实例数量、要暴露的端口以及每个 Pod 的 RAM 大小。
  • service.yaml:Kubernetes Service 作为运行中 Pod 的入口点。您无需担心运行 Pod 的确切数量、负载分配、如何检测就绪 Pod 等问题。Service 会为您完成所有这些工作。
  • route.yaml:所有服务和 Pod 只能从 OpenShift 集群内部访问。要将服务发布到外部,可以使用 OpenShift 路由。这里需要注意一点:路由是 OpenShift 特有的功能,Kubernetes 中没有。在纯 Kubernetes 中,有一个名为“Ingress”的类似资源。

概括

如果你还在读这篇文章,那就给你加分哦😊 在这篇文章中,我们了解了 OpenShift 的优势,并在 OpenShift 平台上运行了一个简单的应用程序。希望这篇文章对你有所帮助!

更多资源:

如果这篇博客对你有帮助,记得点赞❤️哦,下次见!

文章来源:https://dev.to/pmgysel/from-a-docker-image-to-a-deployment-on-openshift-1oj1