2.9.8.4. 在 AWS 中上传自定义 RHCOS AMI

如果要部署到自定义 Amazon Web Services(AWS)区域,您必须上传属于该区域的自定义 Red Hat Enterprise Linux CoreOS(RHCOS)Amazon Machine Image(AMI)。

先决条件

  • 已配置了一个 AWS 帐户。
  • 已使用所需的 IAM 服务角色创建 Amazon S3 存储桶。
  • 将 RHCOS VMDK 文件上传到 Amazon S3。RHCOS VMDK 文件必须是小于或等于您要安装的 OpenShift Container Platform 版本的最高版本。
  • 您下载了 AWS CLI 并安装到您的计算机上。请参阅使用捆绑安装程序安装 AWS CLI

流程

  1. 将 AWS 配置集导出为环境变量:

    $ export AWS_PROFILE=<aws_profile> 1
    1
    拥有 AWS 凭证的 AWS 配置集名称,如 govcloud
  2. 将与自定义 AMI 关联的区域导出为环境变量:

    $ export AWS_DEFAULT_REGION=<aws_region> 1
    1
    AWS 区域,如 us-gov-east-1
  3. 将上传至 Amazon S3 的 RHCOS 版本导出为环境变量:

    $ export RHCOS_VERSION=<version> 1
    1
    RHCOS VMDK 版本,如 4.6.0
  4. 将 Amazon S3 存储桶名称导出为环境变量:

    $ export VMIMPORT_BUCKET_NAME=<s3_bucket_name>
  5. 创建 containers.json 文件并定义 RHCOS VMDK 文件:

    $ cat <<EOF > containers.json
    {
       "Description": "rhcos-${RHCOS_VERSION}-x86_64-aws.x86_64",
       "Format": "vmdk",
       "UserBucket": {
          "S3Bucket": "${VMIMPORT_BUCKET_NAME}",
          "S3Key": "rhcos-${RHCOS_VERSION}-x86_64-aws.x86_64.vmdk"
       }
    }
    EOF
  6. 将 RHCOS 磁盘导入为 Amazon EBS 快照:

    $ aws ec2 import-snapshot --region ${AWS_DEFAULT_REGION} \
         --description "<description>" \ 1
         --disk-container "file://<file_path>/containers.json" 2
    1
    导入 RHCOS 磁盘的描述,如 rhcos-${RHCOS_VERSION}-x86_64-aws.x86_64
    2
    描述 RHCOS 磁盘的 JSON 文件的文件路径。JSON 文件应包含您的 Amazon S3 存储桶名称和密钥。
  7. 检查镜像导入的状态:

    $ watch -n 5 aws ec2 describe-import-snapshot-tasks --region ${AWS_DEFAULT_REGION}

    输出示例

    {
        "ImportSnapshotTasks": [
            {
                "Description": "rhcos-4.6.0-x86_64-aws.x86_64",
                "ImportTaskId": "import-snap-fh6i8uil",
                "SnapshotTaskDetail": {
                    "Description": "rhcos-4.6.0-x86_64-aws.x86_64",
                    "DiskImageSize": 819056640.0,
                    "Format": "VMDK",
                    "SnapshotId": "snap-06331325870076318",
                    "Status": "completed",
                    "UserBucket": {
                        "S3Bucket": "external-images",
                        "S3Key": "rhcos-4.6.0-x86_64-aws.x86_64.vmdk"
                    }
                }
            }
        ]
    }

    复制 SnapshotId 以注册镜像。

  8. 从 RHCOS 快照创建自定义 RHCOS AMI:

    $ aws ec2 register-image \
       --region ${AWS_DEFAULT_REGION} \
       --architecture x86_64 \ 1
       --description "rhcos-${RHCOS_VERSION}-x86_64-aws.x86_64" \ 2
       --ena-support \
       --name "rhcos-${RHCOS_VERSION}-x86_64-aws.x86_64" \ 3
       --virtualization-type hvm \
       --root-device-name '/dev/xvda' \
       --block-device-mappings 'DeviceName=/dev/xvda,Ebs={DeleteOnTermination=true,SnapshotId=<snapshot_ID>}' 4
    1
    RHCOS VMDK 架构类型,如 x86_64s390xppc64le
    2
    来自导入快照的 Description
    3
    RHCOS AMI 的名称。
    4
    导入的快照中的 SnapshotID

如需了解更多有关这些 API 的信息,请参阅 AWS 文档 导入快照创建由 EBS 支持的 AMI