在 OpenShift 集群中创建自己的 source-to-image 条目
摘要:现在,您已在 Docker Hub 上成功创建了构建器镜像,定义了镜像流,并将其应用到了 OpenShift 集群,而且使用自己的 Source-to-Image 条目将应用程序部署到了 OpenShift。OpenShift source-to-image 条目是从构建器镜像创建的。
在本教程中,您将学习如何为 OpenShift 集群创建自己的 source-to-image (S2I) 条目。比如,如果您计划将多个应用部署到云环境,就可以使用自定义 S2I,而不是为每个项目或应用构建单独的镜像。又比如,如果您有一个在 GitHub 上进行更新的应用,您希望这些更新能够自动触发和部署一个构建,这时或许您就会想要使用 S2I 和 GitHub webhook。本教程中的示例使用 Red Hat® OpenShift® on IBM Cloud™。
免费试用 IBM Cloud
利用 IBM Cloud Lite 快速轻松地构建您的下一个应用程序。您的免费帐户从不过期,而且您会获得 256 MB 的 Cloud Foundry 运行时内存和包含 Kubernetes 集群的 2 GB 存储空间。
前提条件
要完成本教程,您需要设置以下环境:
预计花费时间
完成本教程大约需要 20 分钟。
第 1 步:了解构建器镜像和 Docker 镜像
OpenShift source-to-image 条目是从构建器镜像创建的。这些镜像可用于从源代码构建可复制的容器镜像。本教程主要关注 Docker Hub 上的 Docker 镜像。
借助 Docker,可通过多种方式创建 source-to-image 条目。
第 2 步:构建一个 Go 父镜像
在本教程中,您将从一个 现有基础镜像 构建一个简单的 Go 父镜像。首先,将以下内容保存到 Dockerfile 中:
FROM centos/go-toolset-7-centos7:latest EXPOSE 8080
上述操作的目的是使用现有基础镜像和公开的 8080 端口,以便能够从该镜像访问在容器中运行的一个应用程序。
第 3 步:将新镜像推送到 Docker Hub
通过以下命令,从 Dockerfile 所在的目录,将新镜像推送到 Docker Hub:
export DOCKERHUB_USERNAME=<your-dockerhub-username> docker build -t $DOCKERHUB_USERNAME/go_s2i:latest . docker login docker push $DOCKERHUB_USERNAME/go_s2i:latest
第 4 步:定义镜像流
我们需要做的下一步就是定义 镜像流
。为此,我们将创建 goImageStream.json
,其中包含以下内容:
注意:应将 <your-dockerhub-username>
替换为自己真实的 Docker Hub 用户名
{ "apiVersion": "v1", "kind": "ImageStream", "metadata": { "annotations": { "openshift.io/display-name": "Go" }, "name": "golang" }, "spec": { "tags": [ { "name": "latest", "annotations": { "description": "Build and run Go applications on CentOS 7 using this builder image", "iconClass": "icon-go-gopher", "openshift.io/display-name": "Go (Latest)", "supports": "golang", "tags": "builder,golang,go" }, "from": { "kind": "DockerImage", "name": "docker.io<your-dockerhub-username>/go_s2i:latest" }, "referencePolicy": { "type": "Local" } } ] } }
第 5 步:在 OpenShift 集群中创建 S2I 条目
在 IBM Cloud 上配置了 OpenShift 集群后,打开 OpenShift Web 控制台,将登录命令复制到终端窗口中。从新创建的 goImageStream.json
文件所在的目录,运行以下命令,以便在 OpenShift 集群中创建自己的
Source-to-Image 条目:
oc apply -n openshift --as system:admin -f goImageStream.json
刷新 OpenShift Web 控制台,您应该会在目录中看到 Go 条目。
第 6 步:使用构建器镜像创建一个 S2I 应用程序
现在,您可以使用这个构建器镜像创建一个 S2I 应用程序。创建一个新项目,并从目录中选择新的 Go
选项。选择新创建的项目,并为应用程序提供一个名称。对于 Git 存储库,使用 https://github.com/sclorg/golang-ex.git
该存储库是一个简单的 Go 应用程序,会在浏览器中显示 Hello OpenShift!
。构建完应用程序后,单击创建的路径,您应该会看到该应用程序正在运行。
结束语
现在,您已在 Docker Hub 上成功创建了构建器镜像,定义了镜像流,并将其应用到了 OpenShift 集群,而且使用自己的 Source-to-Image 条目将应用程序部署到了 OpenShift。您可以通过 Red Hat OpenShift on IBM Cloud 来自行尝试这些操作。
要了解有关 Source-to-Image 的更多信息,可以观看本视频。
参考资源
- Code Pattern: 利用 PHP、Source-to-Image 工具包和 OpenShift 实现应用程序现代化
- Code Pattern: 利用 OpenShift 实现 Java EE 应用程序现代化
- Code Pattern: 利用 Node.js、Source-to-Image 工具包和 OpenShift 实现应用程序现代化
本文翻译自: Create your own source-to-image entry in an OpenShift cluster (2019-11-07)