10.4. 准备自定义 GCE 镜像,并将其上传到 GCP
您可以创建自定义镜像,然后使用 RHEL 镜像构建器将其自动更新到 Oracle Cloud Infrastructure (OCI)实例。
10.4.1. 使用 RHEL 镜像构建器将镜像上传到 GCP
使用 RHEL 镜像构建器,您可以构建 gce
镜像,为用户或 GCP 服务帐户提供凭证,然后将 gce
镜像直接上传到 GCP 环境。
10.4.1.1. 使用 CLI 配置 gce 镜像,并将其上传到 GCP
使用凭证建立一个配置文件,以使用 RHEL 镜像构建器 CLI 将 gce
镜像上传到 GCP。
您无法手动将 gce
镜像导入到 GCP,因为镜像不能引导。您必须使用 gcloud
或 RHEL 镜像构建器上传它。
前提条件
您有一个有效的 Google 帐户和凭证,来将镜像上传到 GCP。凭据可以来自用户帐户或服务帐户。与凭证关联的帐户必须至少分配以下 IAM 角色:
-
roles/storage.admin
- 用于创建和删除存储对象 -
roles/compute.storageAdmin
- 将虚拟机镜像导入到 Compute Engine。
-
- 您有一个现有的 GCP 存储桶。
流程
使用文本编辑器创建一个包含以下内容的
gcp-config.toml
配置文件:provider = "gcp" [settings] bucket = "GCP_BUCKET" region = "GCP_STORAGE_REGION" object = "OBJECT_KEY" credentials = "GCP_CREDENTIALS"
-
GCP_BUCKET
指向现有的存储桶。它用于存储正在上传的镜像的中间存储对象。 -
GCP_STORAGE_REGION
既是一个常规的 Google 存储区域,又是一个双区域或多区域。 -
OBJECT_KEY
是中间存储对象的名称。它在上传过程前不能存在,并在上传过程完成后被删除。如果对象名称不以.tar.gz
结尾,则扩展会自动添加到对象名称中。 GCP_CREDENTIALS
是从 GCP 下载的凭证 JSON 文件的Base64
编码的方案。凭证决定了 GCP 将镜像上传到的项目。注意如果您使用不同的机制来使用 GCP 进行身份验证,在
gcp-config.toml
文件中指定GCP_CREDENTIALS
是可选的。有关其他验证方法,请参阅 使用 GCP 进行验证 。
-
从 GCP 下载的 JSON 文件中检索
GCP_CREDENTIALS
。$ sudo base64 -w 0 cee-gcp-nasa-476a1fa485b7.json
使用附加镜像名称和云供应商配置集创建 compose:
$ sudo composer-cli compose start BLUEPRINT-NAME gce IMAGE_KEY gcp-config.toml
镜像构建、上传和云注册过程最多可能需要十分钟才能完成。
验证
验证镜像状态为 FINISHED:
$ sudo composer-cli compose status
10.4.1.2. RHEL 镜像构建器如何对不同 GCP 凭证的身份验证顺序进行排序
您可以在 RHEL 镜像构建器中使用几种不同类型的凭证来使用 GCP 进行身份验证。如果 RHEL 镜像构建器配置被设置为使用多组凭证使用 GCP 进行身份验证,它会按以下首选顺序使用凭证:
-
在配置文件中,使用
composer-cli
命令指定的凭证。 -
凭证在
osbuild-composer
worker 配置中被配置。 Google GCP SDK
库中的应用程序默认凭证
,它尝试使用以下选项自动找到一个身份验证的方法:- 如果设置了 GOOGLE_APPLICATION_CREDENTIALS 环境变量,应用程序默认凭据会尝试加载并从文件中使用由变量指向的凭证。
应用默认凭据尝试使用附加到运行代码的资源的服务帐户进行身份验证。例如,Google Compute Engine 虚拟机。
注意您必须使用 GCP 凭证来决定将镜像上传到的 GCP 项目。因此,除非要将所有镜像上传到同一 GCP 项目,您必须使用
composer-cli
命令指定gcp-config.toml
配置文件中的凭证。
10.4.1.2.1. 使用 composer-cli 命令指定 GCP 凭证
您可以在上传目标配置 gcp-config.toml
文件中指定 GCP 验证凭证。使用 Google 帐户凭证 JSON 文件的 Base64
编码方案来节省时间。
流程
运行以下命令,使用存储在
GOOGLE_APPLICATION_CREDENTIALS
环境变量中的路径获取 Google 帐户凭证文件的编码内容:$ base64 -w 0 "${GOOGLE_APPLICATION_CREDENTIALS}"
在上传目标配置
gcp-config.toml
文件中,设置凭证:provider = "gcp" [settings] provider = "gcp" [settings] credentials = "GCP_CREDENTIALS"
10.4.1.2.2. 在 osbuild-composer worker 配置中指定凭证
您可以将 GCP 身份验证凭据配置为全局用于 GCP 用于所有镜像构建。这样,如果您想要将镜像导入到同一 GCP 项目,则您可以对上传到 GCP 的所有镜像使用相同的凭据。
流程
在
/etc/osbuild-worker/osbuild-worker.toml
worker 配置中,设置以下凭证值:[gcp] credentials = "PATH_TO_GCP_ACCOUNT_CREDENTIALS"