1.2. 创建 Source-to-image 构建
您可以创建一个 source-to-image
构建,并将创建的镜像推送到自定义 Quay 存储库。
先决条件
- 您已在 OpenShift Container Platform 集群中安装了 Red Hat OpenShift Operator 的 Builds。
-
您已创建了
ShipwrightBuild
资源。 -
已安装
oc
CLI。 -
可选: 已安装
shp
CLI。
流程
使用其中一个 CLI 创建
Build
资源并将其应用到 OpenShift Container Platform 集群:示例: 使用
oc
CLICopy to Clipboard Copied! Toggle word wrap Toggle overflow 示例:使用
shp
CLICopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用其中一个 CLI 检查
Build
资源是否已创建:示例: 使用
oc
CLIoc get builds.shipwright.io s2i-nodejs-build
$ oc get builds.shipwright.io s2i-nodejs-build
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例:使用
shp
CLIshp build list
$ shp build list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用其中一个 CLI 创建
BuildRun
资源并将其应用到 OpenShift Container Platform 集群:示例: 使用
oc
CLICopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
spec.build.name
字段表示要运行的相应构建,该构建预期在同一命名空间中可用。
示例:使用
shp
CLIshp build run s2i-nodejs-build --follow
$ shp build run s2i-nodejs-build --follow
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 可选: 通过使用
--follow
标志,您可以在输出结果中查看构建日志。
使用其中一个 CLI 检查
BuildRun
资源是否已创建:示例: 使用
oc
CLIoc get buildrun s2i-nodejs-buildrun
$ oc get buildrun s2i-nodejs-buildrun
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例:使用
shp
CLIshp buildrun list
$ shp buildrun list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow BuildRun
资源会创建一个TaskRun
资源,然后创建 pod 来执行构建策略步骤。
验证
所有容器完成其任务后,验证以下内容:
检查 pod 是否将
STATUS
字段显示为Completed
:oc get pods -w
$ oc get pods -w
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE s2i-nodejs-buildrun-phxxm-pod 2/2 Running 0 10s s2i-nodejs-buildrun-phxxm-pod 1/2 NotReady 0 14s s2i-nodejs-buildrun-phxxm-pod 0/2 Completed 0 2m
NAME READY STATUS RESTARTS AGE s2i-nodejs-buildrun-phxxm-pod 2/2 Running 0 10s s2i-nodejs-buildrun-phxxm-pod 1/2 NotReady 0 14s s2i-nodejs-buildrun-phxxm-pod 0/2 Completed 0 2m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查对应的
TaskRun
资源是否将SUCCEEDED
字段显示为True
:oc get tr
$ oc get tr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME s2i-nodejs-buildrun-phxxm True Succeeded 2m39s 13s
NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME s2i-nodejs-buildrun-phxxm True Succeeded 2m39s 13s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查对应的
BuildRun
资源是否将SUCCEEDED
字段显示为True
:oc get br
$ oc get br
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME s2i-nodejs-buildrun True Succeeded 2m41s 15s
NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME s2i-nodejs-buildrun True Succeeded 2m41s 15s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在验证过程中,如果构建运行失败,您可以检查
BuildRun
资源中的status.failureDetails
字段,以识别 pod 或容器中发生故障的确切点。注意pod 可能会切换到
NotReady
状态,因为其中一个容器已经完成其任务。这是预期的行为。
验证镜像是否已推送到
build.spec.output.image
字段中指定的 registry。您可以在登录到 registry 后运行以下命令来尝试拉取镜像:podman pull quay.io/<repo>/<image>
$ podman pull quay.io/<repo>/<image>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 创建
Build
资源时使用的存储库名称和镜像名称。例如,您可以使用s2i-nodejs-example
作为镜像名称。