14.10. AWS のインストールファイルの作成
OpenShift Container Platform を Amazon Web Services (AWS) にインストールして AWS Local Zones を使用するには、インストールプログラムがクラスターをデプロイするために必要なファイルを生成し、クラスターが使用するマシンのみを作成するようにそれらのファイルを変更する必要があります。install-config.yaml ファイルと Kubernetes マニフェストを生成してカスタマイズします。
14.10.1. クラスターインストールの最小リソース要件 リンクのコピーリンクがクリップボードにコピーされました!
それぞれのクラスターマシンは、以下の最小要件を満たしている必要があります。
| マシン | オペレーティングシステム | vCPU [1] | 仮想 RAM | ストレージ | 1 秒あたりの入出力 (IOPS) [2] |
|---|---|---|---|---|---|
| ブートストラップ | RHCOS | 4 | 16 GB | 100 GB | 300 |
| コントロールプレーン | RHCOS | 4 | 16 GB | 100 GB | 300 |
| Compute | RHCOS、RHEL 8.6 以降 [3] | 2 | 8 GB | 100 GB | 300 |
- 1 vCPU は、同時マルチスレッド (SMT) またはハイパースレッディングが有効にされていない場合に 1 つの物理コアと同等です。これが有効にされている場合、以下の数式を使用して対応する比率を計算します: (コアごとのスレッド × コア数) × ソケット数 = vCPU
- OpenShift Container Platform および Kubernetes はディスクのパフォーマンスに敏感であり、特に 10 ms p99 fsync 期間を必要とするコントロールプレーンノード上の etcd には、高速ストレージが推奨されます。多くのクラウドプラットフォームでは、ストレージサイズと IOPS が連動してスケーリングされるため、十分なパフォーマンスを得るには、ストレージボリュームを過剰に割り当てる必要がある場合がある点に注意してください。
- すべての user-provisioned installation と同様に、クラスターで RHEL コンピュートマシンの使用を選択する場合は、システム更新の実行、パッチの適用、その他すべての必要なタスクの完了など、オペレーティングシステムのライフサイクルの管理と保守をすべて担当します。RHEL 7 コンピューティングマシンの使用は推奨されておらず、OpenShift Container Platform 4.10 以降では削除されています。
プラットフォームのインスタンスタイプがクラスターマシンの最小要件を満たす場合、これは OpenShift Container Platform で使用することがサポートされます。
14.10.2. AWS のテスト済みインスタンスタイプ リンクのコピーリンクがクリップボードにコピーされました!
以下の Amazon Web Services (AWS) インスタンスタイプは、AWS Local Zones で使用するために OpenShift Container Platform でテストされています。
以下のチャートに含まれるマシンタイプを AWS インスタンスに使用します。チャートに記載されていないインスタンスタイプを使用する場合は、使用するインスタンスサイズが、クラスターインストールの最小リソース要件に記載されている最小リソース要件と一致していることを確認してください。
例14.3 AWS Local Zones の 64 ビット x86 アーキテクチャーに基づくマシンタイプ
-
c5.* -
c5d.* -
m6i.* -
m5.* -
r5.* -
t3.*
14.10.3. インストール設定ファイルの作成 リンクのコピーリンクがクリップボードにコピーされました!
インストールプログラムがクラスターをデプロイするために必要なインストール設定ファイルを生成し、カスタマイズします。
前提条件
- OpenShift Container Platform インストールプログラム、およびクラスターのプルシークレットを取得している。
-
Red Hat が公開している付随の Red Hat Enterprise Linux CoreOS (RHCOS) AMI のあるリージョンにクラスターをデプロイしていることを確認済みである。AWS GovCloud リージョンなどのカスタム AMI を必要とするリージョンにデプロイする場合は、
install-config.yamlファイルを手動で作成する必要があります。
手順
install-config.yamlファイルを作成します。インストールプログラムが含まれるディレクトリーに切り替え、以下のコマンドを実行します。
$ ./openshift-install create install-config --dir <installation_directory>1 - 1
<installation_directory>の場合、インストールプログラムが作成するファイルを保存するためにディレクトリー名を指定します。
重要空のディレクトリーを指定します。ブートストラップ X.509 証明書などの一部のインストールアセットの有効期限は短く設定されているため、インストールディレクトリーを再利用することができません。別のクラスターインストールの個別のファイルを再利用する必要がある場合は、それらをディレクトリーにコピーすることができます。ただし、インストールアセットのファイル名はリリース間で変更される可能性があります。インストールファイルを以前のバージョンの OpenShift Container Platform からコピーする場合は注意してください。
プロンプト時に、クラウドの設定の詳細情報を指定します。
オプション: クラスターマシンにアクセスするために使用する SSH キーを選択します。
注記インストールのデバッグまたは障害復旧を実行する必要のある実稼働用の OpenShift Container Platform クラスターでは、
ssh-agentプロセスが使用する SSH キーを指定します。- ターゲットに設定するプラットフォームとして aws を選択します。
AWS プロファイルをコンピューターに保存していない場合、インストールプログラムを実行するように設定したユーザーの AWS アクセスキー ID およびシークレットアクセスキーを入力します。
注記AWS アクセスキー ID およびシークレットアクセスキーは、インストールホストの現行ユーザーのホームディレクトリーの
~/.aws/credentialsに保存されます。エクスポートされたプロファイルの認証情報がファイルにない場合は、インストールプログラムにより認証情報の入力が求めるプロンプトが出されます。インストールプログラムに指定する認証情報は、ファイルに保存されます。- クラスターのデプロイ先とする AWS リージョンを選択します。指定するリージョンは、AWS アカウント用にオプトインした Local Zone を含むリージョンと同じである必要があります。
- クラスターに設定した Route 53 サービスのベースドメインを選択します。
- クラスターの記述名を入力します。
- Red Hat OpenShift Cluster Manager からプルシークレット を貼り付けます。
install-config.yamlファイルを編集して、VPC が使用するアベイラビリティーゾーンのサブネットを指定します。platform: aws: subnets:1 - publicSubnetId-1 - publicSubnetId-2 - publicSubnetId-3 - privateSubnetId-1 - privateSubnetId-2 - privateSubnetId-3- 1
subnetsセクションを追加し、VPC の CloudFormation テンプレートの出力からPrivateSubnetIdsとPublicSubnetIdsの値を指定します。ここに Local Zone のサブネットは含めないでください。
オプション:
install-config.yamlファイルをバックアップします。重要install-config.yamlファイルはインストールプロセス時に使用されます。このファイルを再利用する必要がある場合は、この段階でこれをバックアップしてください。
14.10.4. Kubernetes マニフェストファイルの作成 リンクのコピーリンクがクリップボードにコピーされました!
一部のクラスター定義ファイルを変更し、クラスターマシンを手動で起動する必要があるため、クラスターがマシンを設定するために必要な Kubernetes マニフェストファイルを生成する必要があります。
前提条件
- OpenShift Container Platform インストールプログラムを取得していること。
-
install-config.yamlインストール設定ファイルを作成していること。 -
jqパッケージをインストールしている。
手順
以下のコマンドを実行して、OpenShift Container Platform インストールプログラムを含むディレクトリーに移動し、クラスターの Kubernetes マニフェストを生成します。
$ ./openshift-install create manifests --dir <installation_directory>1 - 1
<installation_directory>については、作成したinstall-config.yamlファイルが含まれるインストールディレクトリーを指定します。
ネットワークプラグインに従って、デフォルトの 最大転送単位 (MTU) を設定します。
重要通常、ローカルゾーンの Amazon EC2 インスタンスとリージョンの Amazon EC2 インスタンス間の最大転送単位 (MTU) は 1300 です。AWS ドキュメントの How Local Zones work を参照してください。オーバーヘッドを考慮して、クラスターネットワーク MTU は常に EC2 MTU より小さくなければなりません。特定のオーバーヘッドは、ネットワークプラグインにより決定されます。以下に例を示します。
-
OVN-Kubernetes:
100 bytes -
OpenShift SDN:
50 bytes
ネットワークプラグインは、IPsec などの MTU を減らす必要がある追加機能を提供することができます。詳細は、ドキュメントを参照してください。
OVN-Kubernetesネットワークプラグインを使用している場合は、以下のコマンドを入力します。$ cat <<EOF > <installation_directory>/manifests/cluster-network-03-config.yml apiVersion: operator.openshift.io/v1 kind: Network metadata: name: cluster spec: defaultNetwork: ovnKubernetesConfig: mtu: 1200 EOFOpenShift SDNネットワークプラグインを使用している場合は、以下のコマンドを入力します。$ cat <<EOF > <installation_directory>/manifests/cluster-network-03-config.yml apiVersion: operator.openshift.io/v1 kind: Network metadata: name: cluster spec: defaultNetwork: openshiftSDNConfig: mtu: 1250 EOF
-
OVN-Kubernetes:
Local Zone のワーカーノードのマシンセットマニフェストを作成します。
次のコマンドを実行して、AWS アカウントをオプトインした Local Zone の名前を含むローカル変数をエクスポートします。
$ export LZ_ZONE_NAME="<local_zone_name>"1 - 1
<local_zone_name>には、AWS アカウントを選択した Local Zone (us-east-1-nyc-1aなど) を指定します。
次のコマンドを実行して、デプロイ先のロケーションのインスタンスタイプを確認します。
$ aws ec2 describe-instance-type-offerings \ --location-type availability-zone \ --filters Name=location,Values=${LZ_ZONE_NAME} --region <region>1 - 1
<region>には、デプロイ先のリージョンの名前 (us-east-1など) を指定します。
次のコマンドを実行して変数をエクスポートし、Local Zone サブネットにデプロイするワーカーマシンのインスタンスを定義します。
$ export INSTANCE_TYPE="<instance_type>"1 - 1
<instance_type>をc5d.2xlargeなどのテスト済みインスタンスタイプに設定します。
次のコマンドを実行して、AMI ID をローカル変数として保存します。
$ export AMI_ID=$(grep ami <installation_directory>/openshift/99_openshift-cluster-api_worker-machineset-0.yaml \ | tail -n1 | awk '{print$2}')次のコマンドを実行して、サブネット ID をローカル変数として保存します。
$ export SUBNET_ID=$(aws cloudformation describe-stacks --stack-name "<subnet_stack_name>" \1 | jq -r '.Stacks[0].Outputs[0].OutputValue')- 1
<subnet_stack_name>では、作成したサブネットスタックの名前を指定します。
次のコマンドを実行して、クラスター ID をローカル変数として保存します。
$ export CLUSTER_ID="$(awk '/infrastructureName: / {print $2}' <installation_directory>/manifests/cluster-infrastructure-02-config.yml)"次のコマンドを実行して、VPC が使用する Local Zone のワーカーマニフェストファイルを作成します。
$ cat <<EOF > <installation_directory>/openshift/99_openshift-cluster-api_worker-machineset-nyc1.yaml apiVersion: machine.openshift.io/v1beta1 kind: MachineSet metadata: labels: machine.openshift.io/cluster-api-cluster: ${CLUSTER_ID} name: ${CLUSTER_ID}-edge-${LZ_ZONE_NAME} namespace: openshift-machine-api spec: replicas: 1 selector: matchLabels: machine.openshift.io/cluster-api-cluster: ${CLUSTER_ID} machine.openshift.io/cluster-api-machineset: ${CLUSTER_ID}-edge-${LZ_ZONE_NAME} template: metadata: labels: machine.openshift.io/cluster-api-cluster: ${CLUSTER_ID} machine.openshift.io/cluster-api-machine-role: edge machine.openshift.io/cluster-api-machine-type: edge machine.openshift.io/cluster-api-machineset: ${CLUSTER_ID}-edge-${LZ_ZONE_NAME} spec: metadata: labels: machine.openshift.com/zone-type: local-zone machine.openshift.com/zone-group: ${ZONE_GROUP_NAME} node-role.kubernetes.io/edge: "" taints: - key: node-role.kubernetes.io/edge effect: NoSchedule providerSpec: value: ami: id: ${AMI_ID} apiVersion: machine.openshift.io/v1beta1 blockDevices: - ebs: volumeSize: 120 volumeType: gp2 credentialsSecret: name: aws-cloud-credentials deviceIndex: 0 iamInstanceProfile: id: ${CLUSTER_ID}-worker-profile instanceType: ${INSTANCE_TYPE} kind: AWSMachineProviderConfig placement: availabilityZone: ${LZ_ZONE_NAME} region: ${CLUSTER_REGION} securityGroups: - filters: - name: tag:Name values: - ${CLUSTER_ID}-worker-sg subnet: id: ${SUBNET_ID} publicIp: true tags: - name: kubernetes.io/cluster/${CLUSTER_ID} value: owned userDataSecret: name: worker-user-data EOF