12.14. AWS インフラストラクチャーの RHCOS AMI
Red Hat は、OpenShift Container Platform ノードに手動で指定できる、さまざまな AWS リージョンおよびインスタンスアーキテクチャーに有効な Red Hat Enterprise Linux CoreOS(RHCOS) AMI を提供します。
また、独自の AMI をインポートすることで、RHCOS AMI がパブリッシュされていないリージョンにインストールすることもできます。
AWS ゾーン | AWS AMI |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AWS ゾーン | AWS AMI |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12.14.1. 公開済み RHCOS AMI のない AWS リージョン
Red Hat Enterprise Linux CoreOS (RHCOS) Amazon Machine Image (AMI) または AWS software development kit (SDK) のネイティブサポートなしに、OpenShift Container Platform クラスターを Amazon Web Services (AWS) リージョンにデプロイできます。パブリッシュ済みの AMI が AWS リージョンで利用できない場合は、クラスターをインストールする前にカスタム AMI をアップロードできます。
AWS SDK によってサポートされないリージョンにデプロイしている場合で、カスタム AMI を指定しない場合、インストールプログラムは us-east-1
AMI をユーザーアカウントに自動的にコピーします。次にインストールプログラムは、デフォルトまたはユーザー指定の Key Management Service (KMS) キーを使用して、暗号化された EBS ボリュームでコントロールプレーンマシンを作成します。これにより、AMI は、パブリッシュ済みの RHCOS AMI と同じプロセスワークフローを実施することができます。
RHCOS AMI のネイティブサポートのないリージョンはパブリッシュされないため、クラスターの作成時にターミナルから選択することはできません。ただし、install-config.yaml
ファイルでカスタム AMI を設定して、このリージョンにインストールすることができます。
12.14.2. 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 をダウンロードし、これをコンピューターにインストールしている。Install the AWS CLI Using the Bundled Installer を参照してください。
手順
AWS プロファイルを環境変数としてエクスポートします。
export AWS_PROFILE=<aws_profile>
$ export AWS_PROFILE=<aws_profile>
1 Copy to Clipboard Copied! カスタム AMI に関連付けるリージョンを環境変数としてエクスポートします。
export AWS_DEFAULT_REGION=<aws_region>
$ export AWS_DEFAULT_REGION=<aws_region>
1 Copy to Clipboard Copied! 環境変数として Amazon S3 にアップロードした RHCOS のバージョンをエクスポートします。
export RHCOS_VERSION=<version>
$ export RHCOS_VERSION=<version>
1 Copy to Clipboard Copied! Amazon S3 バケット名を環境変数としてエクスポートします。
export VMIMPORT_BUCKET_NAME=<s3_bucket_name>
$ export VMIMPORT_BUCKET_NAME=<s3_bucket_name>
Copy to Clipboard Copied! 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
$ 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
Copy to Clipboard Copied! RHCOS ディスクを Amazon EBS スナップショットとしてインポートします。
aws ec2 import-snapshot --region ${AWS_DEFAULT_REGION} \ --description "<description>" \ --disk-container "file://<file_path>/containers.json"
$ aws ec2 import-snapshot --region ${AWS_DEFAULT_REGION} \ --description "<description>" \
1 --disk-container "file://<file_path>/containers.json"
2 Copy to Clipboard Copied! イメージインポートのステータスを確認します。
watch -n 5 aws ec2 describe-import-snapshot-tasks --region ${AWS_DEFAULT_REGION}
$ watch -n 5 aws ec2 describe-import-snapshot-tasks --region ${AWS_DEFAULT_REGION}
Copy to Clipboard Copied! 出力例
{ "ImportSnapshotTasks": [ { "Description": "rhcos-4.7.0-x86_64-aws.x86_64", "ImportTaskId": "import-snap-fh6i8uil", "SnapshotTaskDetail": { "Description": "rhcos-4.7.0-x86_64-aws.x86_64", "DiskImageSize": 819056640.0, "Format": "VMDK", "SnapshotId": "snap-06331325870076318", "Status": "completed", "UserBucket": { "S3Bucket": "external-images", "S3Key": "rhcos-4.7.0-x86_64-aws.x86_64.vmdk" } } } ] }
{ "ImportSnapshotTasks": [ { "Description": "rhcos-4.7.0-x86_64-aws.x86_64", "ImportTaskId": "import-snap-fh6i8uil", "SnapshotTaskDetail": { "Description": "rhcos-4.7.0-x86_64-aws.x86_64", "DiskImageSize": 819056640.0, "Format": "VMDK", "SnapshotId": "snap-06331325870076318", "Status": "completed", "UserBucket": { "S3Bucket": "external-images", "S3Key": "rhcos-4.7.0-x86_64-aws.x86_64.vmdk" } } } ] }
Copy to Clipboard Copied! SnapshotId
をコピーして、イメージを登録します。RHCOS スナップショットからカスタム RHCOS AMI を作成します。
aws ec2 register-image \ --region ${AWS_DEFAULT_REGION} \ --architecture x86_64 \ --description "rhcos-${RHCOS_VERSION}-x86_64-aws.x86_64" \ --ena-support \ --name "rhcos-${RHCOS_VERSION}-x86_64-aws.x86_64" \ --virtualization-type hvm \ --root-device-name '/dev/xvda' \ --block-device-mappings 'DeviceName=/dev/xvda,Ebs={DeleteOnTermination=true,SnapshotId=<snapshot_ID>}'
$ 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 Copy to Clipboard Copied!
これらの API の詳細は、AWS ドキュメントの importing snapshots および creating EBS-backed AMIs を参照してください。