12.4. 准备自定义 GCE 镜像并将其上传到 Google Cloud
您可以创建自定义镜像,然后使用 RHEL 镜像构建器将其自动更新到 Google Cloud 实例。
12.4.1. 使用 RHEL 镜像构建器将镜像上传到 Google Cloud 复制链接链接已复制到粘贴板!
使用 RHEL 镜像构建器,您可以构建 gce 镜像,为用户或 Google Cloud 服务帐户提供凭证,然后将 gce 镜像直接上传到 Google Cloud 环境中。
12.4.1.1. 使用 CLI 配置并上传 gce 镜像到 Google Cloud 复制链接链接已复制到粘贴板!
使用凭证设置配置文件,使用 RHEL 镜像构建器 CLI 将 gce 镜像上传到 Google Cloud。
您无法手动将 gce 镜像导入到 Google Cloud,因为镜像不会引导。您必须使用 gcloud 或 RHEL 镜像构建器上传它。
先决条件
您有有效的 Google 帐户和凭证,可将镜像上传到 Google Cloud。凭据可以从用户帐户或服务帐户获取。与凭证关联的帐户必须至少分配以下 IAM 角色:
-
roles/storage.admin- 用于创建和删除存储对象 -
roles/compute.storageAdmin- 将虚拟机镜像导入到 Compute Engine。
-
- 您有一个现有的 Google Cloud 存储桶。
流程
使用文本编辑器创建一个包含以下内容的
gcp-config.toml配置文件:provider = "gcp" [settings] bucket = "GOOGLE_CLOUD_BUCKET" region = "GOOGLE_CLOUD_STORAGE_REGION" object = "OBJECT_KEY" credentials = "GOOGLE_CLOUD_CREDENTIALS"-
GOOGLE_CLOUD_BUCKET指向现有的存储桶。它用于存储正在上传的镜像的中间存储对象。 -
GOOGLE_CLOUD_STORAGE_REGION是常规的 Google 存储区域和双区域或多区域。 -
OBJECT_KEY是中间存储对象的名称。它在上传过程前不能存在,并在上传过程完成后被删除。如果对象名称不以.tar.gz结尾,则扩展会自动添加到对象名称中。 GOOGLE_CLOUD_CREDENTIALS是从 Google Cloud 下载的凭证 JSON 文件的Base64编码方案。凭证决定了 Google Cloud 将镜像上传到的项目。注意如果您使用不同的机制与 Google Cloud 进行身份验证,在
gcp-config.toml文件中指定GOOGLE_CLOUD_CREDENTIALS是可选的。有关其他验证方法,请参阅 使用 Google Cloud 身份验证。
-
从 Google Cloud 下载的 JSON 文件检索
GOOGLE_CLOUD_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
12.4.1.2. RHEL 镜像构建器如何对不同的 Google Cloud 凭证的身份验证顺序进行排序 复制链接链接已复制到粘贴板!
您可以在 RHEL 镜像构建器中使用几种不同类型的凭证来使用 Google Cloud 进行身份验证。如果将 RHEL 镜像构建器配置设置为使用多个凭证与 Google Cloud 进行身份验证,它会按以下首选顺序使用凭证:
-
在配置文件中,使用
composer-cli命令指定的凭证。 -
凭证在
osbuild-composerworker 配置中被配置。 Google Cloud SDK库中的应用程序默认凭证,它尝试使用以下选项自动找到身份验证的方法:- 如果设置了 GOOGLE_APPLICATION_CREDENTIALS 环境变量,应用程序默认凭据会尝试加载并从文件中使用由变量指向的凭证。
应用默认凭据尝试使用附加到运行代码的资源的服务帐户进行身份验证。例如,Google Compute Engine 虚拟机。
注意您必须使用 Google Cloud 凭证来确定要将镜像上传到的 Google Cloud 项目。因此,除非要将所有镜像上传到同一 Google Cloud 项目,否则必须使用
composer-cli命令在gcp-config.toml配置文件中指定凭证。
12.4.1.2.1. 使用 composer-cli 命令指定 Google Cloud 凭证 复制链接链接已复制到粘贴板!
您可以在上传目标配置 gcp-config.toml 文件中指定 Google Cloud 身份验证凭证。使用 Google 帐户凭证 JSON 文件的 Base64 编码方案来节省时间。
流程
运行以下命令,使用存储在
GOOGLE_APPLICATION_CREDENTIALS环境变量中的路径获取 Google 帐户凭证文件的编码内容:$ base64 -w 0 "${GOOGLE_APPLICATION_CREDENTIALS}"在上传目标配置
gcp-config.toml文件中,设置凭证:provider = "gcp" [settings] provider = "gcp" [settings] credentials = "GOOGLE_CLOUD_CREDENTIALS"
12.4.1.2.2. 在 osbuild-composer worker 配置中指定凭证 复制链接链接已复制到粘贴板!
您可以配置 Google Cloud 身份验证凭据,以便在全局范围内用于所有镜像构建。这样,如果要将镜像导入到同一 Google Cloud 项目,您可以对上传到 Google Cloud 的所有镜像使用相同的凭证。
流程
在
/etc/osbuild-worker/osbuild-worker.tomlworker 配置中,设置以下凭证值:[gcp] credentials = "PATH_TO_GOOGLE_CLOUD_ACCOUNT_CREDENTIALS"