4.11. 使用自定义置备服务器使用自定义镜像
技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
默认情况下,OpenStackBaremetalSet CR 会自动为每个节点集创建一个 OpenStackProvisionServer CR,为节点置备提供捆绑的操作系统镜像。您可以创建自定义 OpenStackProvisionServer CR,为不同的操作系统镜像提供服务。
先决条件
包含 data plane 部署所需的所有软件包的 QCOW2 容器镜像,如下所示:
- QCOW2 磁盘镜像和 checksum 文件。
-
将 QCOW2 容器镜像复制到
DEST_DIR环境变量中指定的目录中的端点脚本,如copy_out.sh。
流程
为适合您的环境的容器镜像生成 checksum 文件:
生成 SHA256 校验和文件:
$ sha256sum <image_file_name>.qcow2 > <image_file_name>.qcow2.sha256sum生成 MD5 checksum 文件:
$ md5sum <image_file_name>.qcow2 > <image_file_name>.qcow2.md5sum生成 SHA512 校验和文件:
$ sha512sum <image_file_name>.qcow2 > <image_file_name>.qcow2.sha512sum
克隆
edpm-image-builder存储库:$ git clone https://github.com/openstack-k8s-operators/edpm-image-builder.git进入
edpm-image-builder目录:$ cd edpm-image-builder在
edpm-image-builder目录中创建容器镜像文件:$ FROM registry.access.redhat.com/ubi9/ubi-minimal:9.6 $ COPY <image_file_name>.qcow2 / $ COPY <image_file_name>.qcow2.sha256sum / $ COPY copy_out.sh /copy_out.sh $ RUN chmod +x /copy_out.sh $ ENTRYPOINT ["/copy_out.sh"]其中:
<image_file_name>指定 QCOW2 容器镜像的名称。
注意-
文件复制到根目录中,因为
copy_out.sh的默认SRC_DIR是/。如果要使用不同的源目录,您可以在容器文件中设置ENV SRC_DIR=<path>。 -
您可以使用压缩(
.qcow2.gz)或使用copy_out.sh脚本解压缩的(.qcow2)镜像。
-
文件复制到根目录中,因为
构建并推送容器镜像:
$ buildah bud -f Containerfile -t <your_registry>/my-custom-os-image:latest $ buildah push <your_registry>/my-custom-os-image:latest其中:
<your_registry>- 指定容器 registry 的 URL。
创建定义自定义置备服务器的
OpenStackProvisionServerCR:apiVersion: baremetal.openstack.org/v1beta1 kind: OpenStackProvisionServer metadata: name: openstackprovisionserver spec: interface: <connection_interface> port: <connection_port> osImage: <image_file_name>.qcow2 osContainerImageUrl: <your_registry>/my-custom-os-image:latest apacheImageUrl: registry.redhat.io/ubi9/httpd-24:latest agentImageUrl: quay.io/openstack-k8s-operators/openstack-baremetal-operator-agent:latest其中:
<connection_interface>- 指定用于连接自定义置备服务器的接口。
<connection_port>- 指定用于连接到自定义置备服务器的端口。
<image_file_name>- 指定 QCOW2 容器镜像的名称。
<your_registry>- 指定容器 registry 的 URL。
-
保存您的自定义
OpenStackProvisionServerCR 文件。 应用
OpenStackProvisionServerCR 配置:$ oc apply -f <provision_server_cr_file>其中:
<provision_server_cr_file>-
指定您创建的新
OpenStackProvisionServerCR 文件的文件名。
将自定义
OpenStackProvisionServerCR 添加到适用的OpenStackDataPlaneNodeSetCR 中。以下是使用自定义OpenStackProvisionServerCR 的OpenStackDataPlaneNodeSetCR 示例:apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneNodeSet metadata: name: example-nodeset spec: baremetalSetTemplate: provisionServerName: <provision_server_name> osImage: <image_file_name>.qcow2 deploymentSSHSecret: <custom_ssh_secret> ctlplaneInterface: <ctrl_plane_interface> nodes: edpm-compute-0: hostName: edpm-compute-0其中:
<provision_server_name>-
指定自定义
OpenStackProvisionServerCR 的名称。 <image_file_name>- 指定 QCOW2 容器镜像的名称。
<custom_ssh_secret>- 指定用于部署的 SSH secret。
<ctrl_plane_interface>- 指定用于置备的 control plane 接口。
应用更新的
OpenStackDataPlaneNodeSetCR 配置:$ oc apply -f openstack_data_plane.yaml通过确认状态为
SetupReady来验证 data plane 资源是否已更新:$ oc wait openstackdataplanenodeset openstack-data-plane --for condition=SetupReady --timeout=10m当状态为
SetupReady时,命令会返回一个condition met信息,否则会返回超时错误。如需有关 data plane 条件和状态的信息,请参阅 在 OpenShift 上部署 Red Hat OpenStack Services 中的 Data plane 条件 和状态。