3.11. AWS Local Zones 上のコンピュートノードを使用してクラスターをインストールする
install-config.yaml
ファイルのエッジコンピュートプールにゾーン名を設定することで、OpenShift Container Platform クラスターを Amazon Web Services (AWS) Local Zones にすばやくインストールできます。または、Local Zone サブネットを持つ既存の Amazon Virtual Private Cloud (VPC) にクラスターをインストールすることもできます。
AWS Local Zones は、クラウドリソースを大都市圏の近くに配置するインフラストラクチャーです。詳細は、AWS Local Zones Documentation を参照してください。
3.11.1. インフラストラクチャーの前提条件
- OpenShift Container Platform のインストールおよび更新 プロセスの詳細を確認した。
- クラスターインストール方法の選択とユーザー用にクラスターを準備する方法 を理解している。
クラスターをホストするために AWS アカウントを設定 している。
警告AWS プロファイルがご使用のコンピューターに保存されている場合、マルチファクター認証デバイスを使用中に生成した一時的なセッショントークンを使用することはできません。クラスターは継続的に現行の AWS 認証情報を使用して、クラスターの有効期間全体にわたって AWS リソースを作成するため、キーをベースとした有効期間の長い認証情報を使用する必要があります。適切なキーを生成するには、AWS ドキュメントの Managing Access Keys for IAM Users を参照してください。キーは、インストールプログラムの実行時に指定できます。
- AWS CLI をダウンロードし、これをコンピューターにインストールしている。AWS ドキュメントの Install the AWS CLI Using the Bundled Installer (Linux, macOS, or UNIX) を参照してください。
- ファイアウォールを使用している場合は、クラスターがアクセスする必要がある サイトを許可するようにファイアウォールを設定 している。
- ネットワークリソースを作成するために、リージョンとサポートされている AWS ローカルゾーンの場所 を書き留めている。
- AWS ドキュメントの AWS Local Zones features を確認している。
AWS Local Zones をサポートするネットワークリソースを作成する権限を、アイデンティティーおよびアクセス管理 (IAM) ユーザーまたはロールに追加している。次の例では、AWS Local Zones をサポートするネットワークリソースを作成するためのユーザーまたはロールアクセスを提供できるゾーングループを有効にします。
IAM ユーザーまたはロールに割り当てられた
ec2:ModifyAvailabilityZoneGroup
権限を持つ追加の IAM ポリシーの例{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:ModifyAvailabilityZoneGroup" ], "Effect": "Allow", "Resource": "*" } ] }
3.11.2. AWS Local Zones とエッジコンピュートプールについて
AWS Local Zones 環境でのインフラストラクチャーの動作とクラスターの制限を理解するには、以降のセクションをお読みください。
3.11.2.1. AWS Local Zone でのクラスターの制限
デフォルトのインストール設定で Amazon Web Services (AWS) の Local Zone にクラスターをデプロイする場合、いくつかの制限があります。
次のリストは、事前設定された AWS ゾーンにクラスターをデプロイする場合の制限の詳細を示しています。
-
ゾーン内の Amazon EC2 インスタンスとリージョン内の Amazon EC2 インスタンス間の最大伝送単位 (MTU) は
1300
です。これにより、デプロイメントで使用されるネットワークプラグインに応じて、クラスター全体のネットワーク MTU が変わります。 - Network Load Balancer (NLB)、Classic Load Balancer、Network Address Translation (NAT) ゲートウェイなどのネットワークリソースは、グローバルにサポートされていません。
-
AWS 上の OpenShift Container Platform クラスターの場合、AWS Elastic Block Storage (EBS)
gp3
タイプのボリュームがノードボリュームのデフォルトであり、ストレージクラスのデフォルトです。このボリュームタイプは、ゾーンの場所ではグローバルに使用できません。デフォルトでは、ゾーン内で実行されるノードは、gp2
EBS ボリュームを使用してデプロイされます。ゾーンのノードにワークロードを作成する場合は、gp2-csi
StorageClass
パラメーターを設定する必要があります。
インストールプログラムで OpenShift Container Platform クラスターの Local Zone サブネットを自動的に作成する場合、この方法に伴う固有の設定制限が適用されます。
OpenShift Container Platform クラスターのサブネットを自動的に作成するようにインストールプログラムを設定する場合は、次の設定制限が適用されます。
- インストールプログラムは、AWS Local Zones にプライベートサブネットを作成するときに、各サブネットをその親ゾーンのルートテーブルに関連付けます。この操作により、各プライベートサブネットが AWS リージョンの NAT ゲートウェイ経由で Egress トラフィックをインターネットにルーティングできるようになります。
- クラスターのインストール時に親ゾーンのルートテーブルが存在しない場合、インストールプログラムは、プライベートサブネットを Amazon Virtual Private Cloud (VPC) 内の最初に使用可能なプライベートルートテーブルに関連付けます。このアプローチは、OpenShift Container Platform クラスター内の AWS Local Zones サブネットに対してのみ有効です。
3.11.2.2. エッジコンピュートプールについて
エッジコンピュートノードは、AWS Local Zones の場所で実行される taint されたコンピュートノードです。
Local Zones を使用するクラスターをデプロイする場合は、次の点を考慮してください。
- Local Zone の Amazon EC2 インスタンスは、アベイラビリティゾーンの Amazon EC2 インスタンスよりも高価です。
- AWS Local Zones で実行されているアプリケーションとエンドユーザーの間の遅延は低くなります。たとえば、ローカルゾーンとアベイラビリティゾーンの間で受信トラフィックが混在している場合は、一部のワークロードに遅延の影響が発生します。
通常、Local Zones 内の Amazon EC2 インスタンスとリージョン内の Amazon EC2 インスタンス間の最大伝送単位 (MTU) は 1300 です。クラスターネットワークの MTU は、オーバーヘッドを考慮して、常に EC2 の MTU よりも小さくする必要があります。具体的なオーバーヘッドは、ネットワークプラグインによって決まります。たとえば、OVN-Kubernetes のオーバーヘッドは 100 bytes
です。
ネットワークプラグインは、IPsec などの追加機能を提供できます。MTU のサイズには、このような追加機能も影響します。
詳細は、AWS ドキュメントの ローカルゾーンの仕組み を参照してください。
OpenShift Container Platform 4.12 で、リモートゾーンで使用するために設計された新しいコンピュートプールの エッジ が導入されました。エッジコンピュートプール設定は、AWS Local Zone の場所間で共通です。Local Zones リソース上の EC2 や EBS などのリソースのタイプとサイズの制限により、デフォルトのインスタンスタイプが従来のコンピュートプールと異なる場合があります。
Local Zones の場所のデフォルト Elastic Block Store (EBS) は gp2
であり、非エッジコンピュートプールとは異なります。各 Local Zones に使用される、エッジコンピュートプールのインスタンスタイプも、ゾーンのインスタンスオファリングに応じて、他のコンピュートプールと異なる場合があります。
エッジコンピュートプールは、開発者が AWS Local Zones ノードにアプリケーションをデプロイするために使用できる新しいラベルを作成します。新しいラベルは次のとおりです。
-
node-role.kubernetes.io/edge=''
-
machine.openshift.io/zone-type=local-zone
-
machine.openshift.io/zone-group=$ZONE_GROUP_NAME
デフォルトでは、エッジコンピュートプールのマシンセットは NoSchedule
taint を定義して、Local Zones インスタンスに他のワークロードが拡散するのを防ぎます。ユーザーは、Pod 仕様で toleration を定義している場合にのみユーザーワークロードを実行できます。
3.11.3. インストールの要件
AWS Local Zones 環境にクラスターをインストールする前に、Local Zone 機能を導入できるようにインフラストラクチャーを設定する必要があります。
3.11.3.1. AWS Local Zones へのオプトイン
AWS Local Zones にサブネットを作成する予定がある場合は、各ゾーングループに個別にオプトインする必要があります。
前提条件
- AWS CLI をインストールしている。
- OpenShift Container Platform クラスターをデプロイする AWS リージョンを決定しました。
- ゾーングループにオプトインするユーザーまたはロールアカウントに、寛容な IAM ポリシーをアタッチしました。
手順
次のコマンドを実行して、AWS リージョンで利用可能なゾーンをリスト表示します。
AWS リージョンで利用可能な AWS Local Zones をリスト表示するコマンドの例
$ aws --region "<value_of_AWS_Region>" ec2 describe-availability-zones \ --query 'AvailabilityZones[].[{ZoneName: ZoneName, GroupName: GroupName, Status: OptInStatus}]' \ --filters Name=zone-type,Values=local-zone \ --all-availability-zones
AWS リージョンによっては、利用可能なゾーンのリストが長くなる場合があります。このコマンドは次のフィールドを返します。
ZoneName
- Local Zones の名前。
GroupName
- ゾーンで構成されるグループ。リージョンにオプトインするには、この名前を保存しておきます。
Status
-
Local Zones グループのステータス。ステータスが
not-opted-in
の場合は、次の手順で説明するようにGroupName
をオプトインする必要があります。
次のコマンドを実行して、AWS アカウントのゾーングループにオプトインします。
$ aws ec2 modify-availability-zone-group \ --group-name "<value_of_GroupName>" \1 --opt-in-status opted-in
- 1
<value_of_GroupName>
は、サブネットを作成する Local Zones のグループの名前に置き換えます。たとえば、ゾーンus-east-1-nyc-1a
(米国東部 (ニューヨーク)) を使用するにはus-east-1-nyc-1
と指定します。
3.11.3.2. AWS Marketplace イメージの取得
AWS Marketplace イメージを使用して OpenShift Container Platform クラスターをデプロイする場合は、最初に AWS を通じてサブスクライブする必要があります。オファーにサブスクライブすると、インストールプログラムがコンピュートノードのデプロイに使用する AMI ID が提供されます。
前提条件
- オファーを購入するための AWS アカウントを持っている。このアカウントは、クラスターのインストールに使用されるアカウントと同じである必要はありません。
手順
- AWS Marketplace で OpenShift Container Platform サブスクリプションを完了します。
ご使用の AWS リージョンの AMI ID を記録します。インストールプロセスの一環として、クラスターをデプロイする前に、この値で
install-config.yaml
ファイルを更新する必要があります。AWS Marketplace コンピュートノードを含む
install-config.yaml
ファイルのサンプルapiVersion: v1 baseDomain: example.com compute: - hyperthreading: Enabled name: worker platform: aws: amiID: ami-06c4d345f7c207239 1 type: m5.4xlarge replicas: 3 metadata: name: test-cluster platform: aws: region: us-east-2 2 sshKey: ssh-ed25519 AAAA... pullSecret: '{"auths": ...}'
3.11.4. インストールの準備
ノードを Local Zone に拡張する前に、クラスターのインストール環境用に特定のリソースを準備する必要があります。
3.11.4.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 つの物理コアと同等です。これが有効にされている場合、数式「(コアごとのスレッド × コア数) × ソケット数 = 仮想 CPU」を使用して対応する比率を計算します。
- OpenShift Container Platform および Kubernetes はディスクのパフォーマンスに敏感であり、特に 10 ms p99 fsync 期間を必要とするコントロールプレーンノード上の etcd には、高速ストレージが推奨されます。多くのクラウドプラットフォームでは、ストレージサイズと IOPS スケールが一緒にあるため、十分なパフォーマンスを得るためにストレージボリュームの割り当てが必要になる場合があります。
- すべての user-provisioned installation と同様に、クラスターで RHEL コンピュートマシンの使用を選択する場合は、システム更新の実行、パッチの適用、その他すべての必要なタスクの完了など、オペレーティングシステムのライフサイクルの管理と保守をすべて担当します。RHEL 7 コンピューティングマシンの使用は推奨されておらず、OpenShift Container Platform 4.10 以降では削除されています。
OpenShift Container Platform バージョン 4.13 の時点で、RHCOS は RHEL バージョン 9.2 に基づいており、マイクロアーキテクチャーの要件を更新します。次のリストには、各アーキテクチャーに必要な最小限の命令セットアーキテクチャー (ISA) が含まれています。
- x86-64 アーキテクチャーには x86-64-v2 ISA が必要
- ARM64 アーキテクチャーには ARMv8.0-A ISA が必要
- IBM Power アーキテクチャーには Power 9 ISA が必要
- s390x アーキテクチャーには z14 ISA が必要
詳細は、RHEL アーキテクチャー を参照してください。
プラットフォームのインスタンスタイプがクラスターマシンの最小要件を満たす場合、これは OpenShift Container Platform で使用することがサポートされます。
3.11.4.2. AWS のテスト済みインスタンスタイプ
以下の Amazon Web Services (AWS) インスタンスタイプは、AWS Local Zones で使用するために OpenShift Container Platform でテストされています。
AWS インスタンスには、次の表に記載されているマシンタイプを使用してください。表に記載されていないインスタンスタイプを使用する場合は、使用するインスタンスサイズが、「クラスターインストールの最小リソース要件」セクションに記載されている最小リソース要件と一致していることを確認してください。
例3.31 AWS Local Zones の 64 ビット x86 アーキテクチャーに基づくマシンタイプ
-
c5.*
-
c5d.*
-
m6i.*
-
m5.*
-
r5.*
-
t3.*
関連情報
- AWS ドキュメントの AWS Local Zones features を参照してください。
3.11.4.3. インストール設定ファイルの作成
インストールプログラムがクラスターをデプロイするために必要なインストール設定ファイルを生成し、カスタマイズします。
前提条件
- user-provisioned infrastructure 用の OpenShift Container Platform インストールプログラム、およびクラスターのプルシークレットを取得している。
-
Red Hat が公開している付属の Red Hat Enterprise Linux CoreOS (RHCOS) AMI のある AWS リージョンにクラスターをデプロイしようとしている。カスタム AMI が必要な AWS リージョン (AWS GovCloud リージョンなど) にデプロイする場合は、
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 リージョンを選択します。
- クラスターに設定した Route 53 サービスのベースドメインを選択します。
- クラスターの記述名を入力します。
- Red Hat OpenShift Cluster Manager からプルシークレット を貼り付けます。
オプション:
install-config.yaml
ファイルをバックアップします。重要install-config.yaml
ファイルはインストールプロセス時に使用されます。このファイルを再利用する必要がある場合は、この段階でこれをバックアップしてください。
3.11.4.4. エッジコンピュートプールを含むインストール設定ファイルの例
次の例は、エッジマシンプール設定を含む install-config.yaml
ファイルを示しています。
カスタムインスタンスタイプのエッジプールを使用する設定
apiVersion: v1 baseDomain: devcluster.openshift.com metadata: name: ipi-edgezone compute: - name: edge platform: aws: type: r5.2xlarge platform: aws: region: us-west-2 pullSecret: '{"auths": ...}' sshKey: ssh-ed25519 AAAA...
インスタンスのタイプは場所によって異なります。クラスターを実行する Local Zones で利用可能かどうかを確認するには、AWS のドキュメントを参照してください。
カスタム Amazon Elastic Block Store (EBS) タイプのエッジプールを使用する設定
apiVersion: v1 baseDomain: devcluster.openshift.com metadata: name: ipi-edgezone compute: - name: edge platform: aws: zones: - us-west-2-lax-1a - us-west-2-lax-1b - us-west-2-phx-2a rootVolume: type: gp3 size: 120 platform: aws: region: us-west-2 pullSecret: '{"auths": ...}' sshKey: ssh-ed25519 AAAA...
Elastic Block Storage (EBS) タイプは場所によって異なります。クラスターを実行する Local Zones で利用可能かどうかを確認するには、AWS のドキュメントを参照してください。
カスタムセキュリティーグループを持つエッジプールを使用する設定
apiVersion: v1
baseDomain: devcluster.openshift.com
metadata:
name: ipi-edgezone
compute:
- name: edge
platform:
aws:
additionalSecurityGroupIDs:
- sg-1 1
- sg-2
platform:
aws:
region: us-west-2
pullSecret: '{"auths": ...}'
sshKey: ssh-ed25519 AAAA...
- 1
- Amazon EC2 コンソールに表示されるセキュリティーグループの名前を指定します。必ず
sg
接頭辞を含めてください。
3.11.4.5. クラスターネットワークの MTU のカスタマイズ
AWS にクラスターをデプロイする前に、インフラストラクチャーのニーズに合わせて、クラスターネットワークの最大伝送単位 (MTU) をカスタマイズできます。
デフォルトでは、サポートされている Local Zones 機能を使用してクラスターをインストールすると、クラスターネットワークの MTU 値が、ネットワークプラグインによって許可される最低値に自動的に調整されます。
サポートされていない MTU 値を Local Zones インフラストラクチャーで動作する EC2 インスタンスに設定すると、OpenShift Container Platform クラスターに問題が発生する可能性があります。
Local Zone と AWS リージョンの EC2 インスタンス間の MTU 値を引き上げることが可能な場合は、より高い値を手動で設定して、クラスターネットワークのネットワークパフォーマンスを向上できます。
install-config.yaml
設定ファイルで networking.clusterNetworkMTU
パラメーターを指定することにより、クラスターの MTU をカスタマイズできます。
Local Zones 内のすべてのサブネットは、そのゾーン内の各ノードが AWS リージョン内のサービスと正常に通信してワークロードをデプロイできるように、より高い MTU 値をサポートしている必要があります。
デフォルトの MTU 値を上書きする例
apiVersion: v1 baseDomain: devcluster.openshift.com metadata: name: edge-zone networking: clusterNetworkMTU: 8901 compute: - name: edge platform: aws: zones: - us-west-2-lax-1a - us-west-2-lax-1b platform: aws: region: us-west-2 pullSecret: '{"auths": ...}' sshKey: ssh-ed25519 AAAA...
関連情報
- サポートされている最大伝送単位 (MTU) 値の詳細は、AWS ドキュメントの AWS resources supported in Local Zones を参照してください。
3.11.5. AWS Local Zones 環境のクラスターインストールオプション
以下のいずれかのインストール方法を選択して、Local Zones に定義されたエッジコンピュートノードを使用して OpenShift Container Platform クラスターを AWS にインストールします。
- 完全に自動化された方法: クラスターをインストールして、コンピュートノードをエッジコンピュートプールに迅速に拡張します。インストールプログラムが、OpenShift Container Platform クラスター用のインフラストラクチャーリソースを自動的に作成します。
-
既存の VPC を使用する方法: AWS 上のクラスターを既存の VPC にインストールします。この場合、Local Zones サブネットを
install-config.yaml
ファイルに指定します。
次のステップ
次のいずれかの方法を選択して、OpenShift Container Platform クラスターを AWS Local Zones 環境にインストールします。
3.11.6. AWS Local Zones にクラスターを迅速にインストールする
OpenShift Container Platform 4.16 では、Amazon Web Services (AWS) にクラスターをすばやくインストールして、コンピュートノードを Local Zones の場所に拡張できます。このインストール方法を使用すると、設定ファイルで定義した各ゾーンのネットワークリソースと Local Zones サブネットが、インストールプログラムによって自動的に作成されます。インストールをカスタマイズするには、クラスターをデプロイする前に、install-config.yaml
ファイル内のパラメーターを変更する必要があります。
3.11.6.1. AWS Local Zones を使用するためのインストール設定ファイルの変更
install-config.yaml
ファイルを変更して、AWS Local Zones を含めます。
前提条件
- AWS アカウントが設定されている。
-
aws configure
を実行して、AWS キーと AWS リージョンをローカル AWS プロファイルに追加している。 - OpenShift Container Platform クラスターのサブネットを自動的に作成するようにインストールプログラムを指定する際に適用される設定上の制限を理解している。
- 各ゾーンの Local Zones グループにオプトインしている。
-
「インストール設定ファイルの作成」手順を使用して、
install-config.yaml
ファイルを作成している。
手順
install-config.yaml
ファイルを変更して、エッジコンピュートプールのplatform.aws.zones
プロパティーで Local Zones 名を指定します。# ... platform: aws: region: <region_name> 1 compute: - name: edge platform: aws: zones: 2 - <local_zone_name> #...
エッジノードを
Los Angeles
とLas Vegas
の Local Zones に拡張するus-west-2
AWS リージョンにクラスターをインストールする設定の例apiVersion: v1 baseDomain: example.com metadata: name: cluster-name platform: aws: region: us-west-2 compute: - name: edge platform: aws: zones: - us-west-2-lax-1a - us-west-2-lax-1b - us-west-2-las-1a pullSecret: '{"auths": ...}' sshKey: 'ssh-ed25519 AAAA...' #...
- クラスターをデプロイします。
次のステップ
3.11.7. Local Zone のサブネットを持つ既存の VPC へのクラスターのインストール
クラスターを Amazon Web Services (AWS) 上の既存の Amazon Virtual Private Cloud (VPC) にインストールできます。インストールプログラムは、カスタマイズ可能な残りの必要なインフラストラクチャーをプロビジョニングします。インストールをカスタマイズするには、クラスターをインストールする前に、install-config.yaml
ファイルでパラメーターを変更します。
AWS 上のクラスターを既存の VPC にインストールするには、AWS Local Zones を使用してコンピュートノードをクラウドインフラストラクチャーのエッジまで拡張する必要があります。
Local Zone のサブネットは、通常のコンピュートノードをエッジネットワークに拡張します。各エッジコンピュートノードは、ユーザーワークロードを実行します。Amazon Web Services (AWS) の Local Zone 環境を作成し、クラスターをデプロイした後、エッジコンピュートノードを使用して Local Zone のサブネットにユーザーワークロードを作成できます。
プライベートサブネットを作成する場合は、提供されている CloudFormation テンプレートを変更するか、独自のテンプレートを作成する必要があります。
このドキュメントの CloudFormation テンプレートを使用して、ネットワークリソースを作成できます。さらに、テンプレートを変更してインフラストラクチャーをカスタマイズしたり、テンプレートに含まれる情報を使用して会社のポリシーに基づいて AWS リソースを作成したりできます。
installer-provisioned infrastructure のインストールを実行する手順は、例としてのみ提供されています。既存の VPC にクラスターをインストールするには、クラウドプロバイダーと OpenShift Container Platform のインストールプロセスに関する知識が必要です。CloudFormation テンプレートを使用すると、これらの手順の完了を支援したり、独自のクラスターのインストールをモデル化したりできます。CloudFormation テンプレートを使用してリソースを作成する代わりに、これらのリソースを生成するために他の方法を使用することを決定できます。
3.11.7.1. AWS での VPC の作成
OpenShift Container Platform クラスター用の Amazon Web Services (AWS) で、Virtual Private Cloud (VPC) を作成し、Local Zones のすべての場所にサブネットを作成すると、コンピュートノードをエッジロケーションに拡張できます。VPC は、VPN やルートテーブルなどの要件に合わせてさらにカスタマイズできます。初期デプロイメントに含まれていない新しい Local Zones サブネットを追加することもできます。
提供される CloudFormation テンプレートおよびカスタムパラメーターファイルを使用して、VPC を表す AWS リソースのスタックを作成できます。
このドキュメントの CloudFormation テンプレートを使用して AWS インフラストラクチャーを作成しない場合は、記載されている情報を確認し、インフラストラクチャーを手動で作成する必要があります。クラスターが適切に初期化されない場合、インストールログを用意して Red Hat サポートに問い合わせする必要がある可能性があります。
前提条件
- AWS アカウントを設定している。
-
aws configure
を実行して、AWS キーと AWS リージョンをローカル AWS プロファイルに追加している。 - AWS アカウントで AWS Local Zones にオプトインしている。
手順
CloudFormation テンプレートが必要とするパラメーター値が含まれる JSON ファイルを作成します。
[ { "ParameterKey": "VpcCidr", 1 "ParameterValue": "10.0.0.0/16" 2 }, { "ParameterKey": "AvailabilityZoneCount", 3 "ParameterValue": "3" 4 }, { "ParameterKey": "SubnetBits", 5 "ParameterValue": "12" 6 } ]
- このドキュメントの「VPC の CloudFormation テンプレート」セクションに移動し、記載されているテンプレートから構文をコピーします。コピーしたテンプレートの構文を YAML ファイルとしてローカルシステムに保存します。このテンプレートは、クラスターに必要な VPC を記述しています。
次のコマンドを実行して、CloudFormation テンプレートを起動し、VPC を表す AWS リソースのスタックを作成します。
重要単一行にコマンドを入力してください。
$ aws cloudformation create-stack --stack-name <name> \1 --template-body file://<template>.yaml \2 --parameters file://<parameters>.json 3
出力例
arn:aws:cloudformation:us-east-1:123456789012:stack/cluster-vpc/dbedae40-2fd3-11eb-820e-12a48460849f
次のコマンドを実行して、テンプレートコンポーネントが存在することを確認します。
$ aws cloudformation describe-stacks --stack-name <name>
StackStatus
がCREATE_COMPLETE
を表示した後に、出力には以下のパラメーターの値が表示されます。これらのパラメーター値を、クラスターを作成するために実行する他の CloudFormation テンプレートに指定する必要があります。VpcId
VPC の ID。
PublicSubnetIds
新規パブリックサブネットの ID。
PrivateSubnetIds
新規プライベートサブネットの ID。
PublicRouteTableId
新しいパブリックルートテーブル ID の ID。
3.11.7.2. VPC の CloudFormation テンプレート
以下の CloudFormation テンプレートを使用し、OpenShift Container Platform クラスターに必要な VPC をデプロイすることができます。
例3.32 VPC の CloudFormation テンプレート
AWSTemplateFormatVersion: 2010-09-09 Description: Template for Best Practice VPC with 1-3 AZs Parameters: VpcCidr: AllowedPattern: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(1[6-9]|2[0-4]))$ ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-24. Default: 10.0.0.0/16 Description: CIDR block for VPC. Type: String AvailabilityZoneCount: ConstraintDescription: "The number of availability zones. (Min: 1, Max: 3)" MinValue: 1 MaxValue: 3 Default: 1 Description: "How many AZs to create VPC subnets for. (Min: 1, Max: 3)" Type: Number SubnetBits: ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/19-27. MinValue: 5 MaxValue: 13 Default: 12 Description: "Size of each subnet to create within the availability zones. (Min: 5 = /27, Max: 13 = /19)" Type: Number Metadata: AWS::CloudFormation::Interface: ParameterGroups: - Label: default: "Network Configuration" Parameters: - VpcCidr - SubnetBits - Label: default: "Availability Zones" Parameters: - AvailabilityZoneCount ParameterLabels: AvailabilityZoneCount: default: "Availability Zone Count" VpcCidr: default: "VPC CIDR" SubnetBits: default: "Bits Per Subnet" Conditions: DoAz3: !Equals [3, !Ref AvailabilityZoneCount] DoAz2: !Or [!Equals [2, !Ref AvailabilityZoneCount], Condition: DoAz3] Resources: VPC: Type: "AWS::EC2::VPC" Properties: EnableDnsSupport: "true" EnableDnsHostnames: "true" CidrBlock: !Ref VpcCidr PublicSubnet: Type: "AWS::EC2::Subnet" Properties: VpcId: !Ref VPC CidrBlock: !Select [0, !Cidr [!Ref VpcCidr, 6, !Ref SubnetBits]] AvailabilityZone: !Select - 0 - Fn::GetAZs: !Ref "AWS::Region" PublicSubnet2: Type: "AWS::EC2::Subnet" Condition: DoAz2 Properties: VpcId: !Ref VPC CidrBlock: !Select [1, !Cidr [!Ref VpcCidr, 6, !Ref SubnetBits]] AvailabilityZone: !Select - 1 - Fn::GetAZs: !Ref "AWS::Region" PublicSubnet3: Type: "AWS::EC2::Subnet" Condition: DoAz3 Properties: VpcId: !Ref VPC CidrBlock: !Select [2, !Cidr [!Ref VpcCidr, 6, !Ref SubnetBits]] AvailabilityZone: !Select - 2 - Fn::GetAZs: !Ref "AWS::Region" InternetGateway: Type: "AWS::EC2::InternetGateway" GatewayToInternet: Type: "AWS::EC2::VPCGatewayAttachment" Properties: VpcId: !Ref VPC InternetGatewayId: !Ref InternetGateway PublicRouteTable: Type: "AWS::EC2::RouteTable" Properties: VpcId: !Ref VPC PublicRoute: Type: "AWS::EC2::Route" DependsOn: GatewayToInternet Properties: RouteTableId: !Ref PublicRouteTable DestinationCidrBlock: 0.0.0.0/0 GatewayId: !Ref InternetGateway PublicSubnetRouteTableAssociation: Type: "AWS::EC2::SubnetRouteTableAssociation" Properties: SubnetId: !Ref PublicSubnet RouteTableId: !Ref PublicRouteTable PublicSubnetRouteTableAssociation2: Type: "AWS::EC2::SubnetRouteTableAssociation" Condition: DoAz2 Properties: SubnetId: !Ref PublicSubnet2 RouteTableId: !Ref PublicRouteTable PublicSubnetRouteTableAssociation3: Condition: DoAz3 Type: "AWS::EC2::SubnetRouteTableAssociation" Properties: SubnetId: !Ref PublicSubnet3 RouteTableId: !Ref PublicRouteTable PrivateSubnet: Type: "AWS::EC2::Subnet" Properties: VpcId: !Ref VPC CidrBlock: !Select [3, !Cidr [!Ref VpcCidr, 6, !Ref SubnetBits]] AvailabilityZone: !Select - 0 - Fn::GetAZs: !Ref "AWS::Region" PrivateRouteTable: Type: "AWS::EC2::RouteTable" Properties: VpcId: !Ref VPC PrivateSubnetRouteTableAssociation: Type: "AWS::EC2::SubnetRouteTableAssociation" Properties: SubnetId: !Ref PrivateSubnet RouteTableId: !Ref PrivateRouteTable NAT: DependsOn: - GatewayToInternet Type: "AWS::EC2::NatGateway" Properties: AllocationId: "Fn::GetAtt": - EIP - AllocationId SubnetId: !Ref PublicSubnet EIP: Type: "AWS::EC2::EIP" Properties: Domain: vpc Route: Type: "AWS::EC2::Route" Properties: RouteTableId: Ref: PrivateRouteTable DestinationCidrBlock: 0.0.0.0/0 NatGatewayId: Ref: NAT PrivateSubnet2: Type: "AWS::EC2::Subnet" Condition: DoAz2 Properties: VpcId: !Ref VPC CidrBlock: !Select [4, !Cidr [!Ref VpcCidr, 6, !Ref SubnetBits]] AvailabilityZone: !Select - 1 - Fn::GetAZs: !Ref "AWS::Region" PrivateRouteTable2: Type: "AWS::EC2::RouteTable" Condition: DoAz2 Properties: VpcId: !Ref VPC PrivateSubnetRouteTableAssociation2: Type: "AWS::EC2::SubnetRouteTableAssociation" Condition: DoAz2 Properties: SubnetId: !Ref PrivateSubnet2 RouteTableId: !Ref PrivateRouteTable2 NAT2: DependsOn: - GatewayToInternet Type: "AWS::EC2::NatGateway" Condition: DoAz2 Properties: AllocationId: "Fn::GetAtt": - EIP2 - AllocationId SubnetId: !Ref PublicSubnet2 EIP2: Type: "AWS::EC2::EIP" Condition: DoAz2 Properties: Domain: vpc Route2: Type: "AWS::EC2::Route" Condition: DoAz2 Properties: RouteTableId: Ref: PrivateRouteTable2 DestinationCidrBlock: 0.0.0.0/0 NatGatewayId: Ref: NAT2 PrivateSubnet3: Type: "AWS::EC2::Subnet" Condition: DoAz3 Properties: VpcId: !Ref VPC CidrBlock: !Select [5, !Cidr [!Ref VpcCidr, 6, !Ref SubnetBits]] AvailabilityZone: !Select - 2 - Fn::GetAZs: !Ref "AWS::Region" PrivateRouteTable3: Type: "AWS::EC2::RouteTable" Condition: DoAz3 Properties: VpcId: !Ref VPC PrivateSubnetRouteTableAssociation3: Type: "AWS::EC2::SubnetRouteTableAssociation" Condition: DoAz3 Properties: SubnetId: !Ref PrivateSubnet3 RouteTableId: !Ref PrivateRouteTable3 NAT3: DependsOn: - GatewayToInternet Type: "AWS::EC2::NatGateway" Condition: DoAz3 Properties: AllocationId: "Fn::GetAtt": - EIP3 - AllocationId SubnetId: !Ref PublicSubnet3 EIP3: Type: "AWS::EC2::EIP" Condition: DoAz3 Properties: Domain: vpc Route3: Type: "AWS::EC2::Route" Condition: DoAz3 Properties: RouteTableId: Ref: PrivateRouteTable3 DestinationCidrBlock: 0.0.0.0/0 NatGatewayId: Ref: NAT3 S3Endpoint: Type: AWS::EC2::VPCEndpoint Properties: PolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: '*' Action: - '*' Resource: - '*' RouteTableIds: - !Ref PublicRouteTable - !Ref PrivateRouteTable - !If [DoAz2, !Ref PrivateRouteTable2, !Ref "AWS::NoValue"] - !If [DoAz3, !Ref PrivateRouteTable3, !Ref "AWS::NoValue"] ServiceName: !Join - '' - - com.amazonaws. - !Ref 'AWS::Region' - .s3 VpcId: !Ref VPC Outputs: VpcId: Description: ID of the new VPC. Value: !Ref VPC PublicSubnetIds: Description: Subnet IDs of the public subnets. Value: !Join [ ",", [!Ref PublicSubnet, !If [DoAz2, !Ref PublicSubnet2, !Ref "AWS::NoValue"], !If [DoAz3, !Ref PublicSubnet3, !Ref "AWS::NoValue"]] ] PrivateSubnetIds: Description: Subnet IDs of the private subnets. Value: !Join [ ",", [!Ref PrivateSubnet, !If [DoAz2, !Ref PrivateSubnet2, !Ref "AWS::NoValue"], !If [DoAz3, !Ref PrivateSubnet3, !Ref "AWS::NoValue"]] ] PublicRouteTableId: Description: Public Route table ID Value: !Ref PublicRouteTable PrivateRouteTableIds: Description: Private Route table IDs Value: !Join [ ",", [ !Join ["=", [ !Select [0, "Fn::GetAZs": !Ref "AWS::Region"], !Ref PrivateRouteTable ]], !If [DoAz2, !Join ["=", [!Select [1, "Fn::GetAZs": !Ref "AWS::Region"], !Ref PrivateRouteTable2]], !Ref "AWS::NoValue" ], !If [DoAz3, !Join ["=", [!Select [2, "Fn::GetAZs": !Ref "AWS::Region"], !Ref PrivateRouteTable3]], !Ref "AWS::NoValue" ] ] ]
3.11.7.3. Local Zones のサブネットの作成
OpenShift Container Platform クラスターのエッジコンピュートノードのマシンセットを設定する前に、Local Zones にサブネットを作成する必要があります。コンピュートノードをデプロイする Local Zone ごとに次の手順を実行してください。
このドキュメントの CloudFormation テンプレートを使用して、CloudFormation スタックを作成できます。その後、このスタックを使用してサブネットをカスタムプロビジョニングできます。
このドキュメントの CloudFormation テンプレートを使用して AWS インフラストラクチャーを作成しない場合は、記載されている情報を確認し、インフラストラクチャーを手動で作成する必要があります。クラスターが適切に初期化されない場合、インストールログを用意して Red Hat サポートに問い合わせする必要がある可能性があります。
前提条件
- AWS アカウントを設定している。
-
aws configure
を実行して、AWS キーおよびリージョンをローカルの AWS プロファイルに追加している。 - Local Zones グループにオプトインしている。
手順
- このドキュメントの「VPC サブネット用の CloudFormation テンプレート」セクションに移動し、テンプレートから構文をコピーします。コピーしたテンプレートの構文を YAML ファイルとしてローカルシステムに保存します。このテンプレートは、クラスターに必要な VPC を記述しています。
次のコマンドを実行して CloudFormation テンプレートをデプロイします。これにより、VPC を表す AWS リソースのスタックが作成されます。
$ aws cloudformation create-stack --stack-name <stack_name> \1 --region ${CLUSTER_REGION} \ --template-body file://<template>.yaml \2 --parameters \ ParameterKey=VpcId,ParameterValue="${VPC_ID}" \3 ParameterKey=ClusterName,ParameterValue="${CLUSTER_NAME}" \4 ParameterKey=ZoneName,ParameterValue="${ZONE_NAME}" \5 ParameterKey=PublicRouteTableId,ParameterValue="${ROUTE_TABLE_PUB}" \6 ParameterKey=PublicSubnetCidr,ParameterValue="${SUBNET_CIDR_PUB}" \7 ParameterKey=PrivateRouteTableId,ParameterValue="${ROUTE_TABLE_PVT}" \8 ParameterKey=PrivateSubnetCidr,ParameterValue="${SUBNET_CIDR_PVT}" 9
- 1
<stack_name>
は、CloudFormation スタックの名前です (cluster-wl-<local_zone_shortname>
など)。クラスターを削除する場合に、このスタックの名前が必要になります。- 2
<template>
は、保存した CloudFormation テンプレート YAML ファイルの相対パスと名前です。- 3
${VPC_ID}
は VPC ID であり、VPC 用の CloudFormation テンプレートの出力に含まれる値VpcID
です。- 4
${ZONE_NAME}
は、サブネットを作成する Local Zones 名の値です。- 5
${CLUSTER_NAME}
は、新しい AWS リソース名の接頭辞として使用する ClusterName の値です。- 6
${SUBNET_CIDR_PUB}
は、パブリックサブネットの作成に使用する有効な CIDR ブロックです。このブロックは、VPC CIDR ブロックVpcCidr
の一部である必要があります。- 7
${ROUTE_TABLE_PVT}
は、VPC の CloudFormation スタックの出力から抽出した PrivateRouteTableId です。- 8
${SUBNET_CIDR_PVT}
は、プライベートサブネットの作成に使用する有効な CIDR ブロックです。このブロックは、VPC CIDR ブロックVpcCidr
の一部である必要があります。
出力例
arn:aws:cloudformation:us-east-1:123456789012:stack/<stack_name>/dbedae40-820e-11eb-2fd3-12a48460849f
検証
次のコマンドを実行して、テンプレートコンポーネントが存在することを確認します。
$ aws cloudformation describe-stacks --stack-name <stack_name>
StackStatus
がCREATE_COMPLETE
を表示した後に、出力には以下のパラメーターの値が表示されます。これらのパラメーター値を、クラスターを作成するために実行する他の CloudFormation テンプレートに必ず指定してください。PublicSubnetId
CloudFormation スタックによって作成されたパブリックサブネットの ID。
PrivateSubnetId
CloudFormation スタックによって作成されたプライベートサブネットの ID。
3.11.7.4. VPC サブネット用の CloudFormation テンプレート
次の CloudFormation テンプレートを使用して、Local Zones インフラストラクチャー上のゾーンにプライベートサブネットとパブリックサブネットをデプロイできます。
例3.33 VPC サブネット用の CloudFormation テンプレート
AWSTemplateFormatVersion: 2010-09-09 Description: Template for Best Practice Subnets (Public and Private) Parameters: VpcId: Description: VPC ID that comprises all the target subnets. Type: String AllowedPattern: ^(?:(?:vpc)(?:-[a-zA-Z0-9]+)?\b|(?:[0-9]{1,3}\.){3}[0-9]{1,3})$ ConstraintDescription: VPC ID must be with valid name, starting with vpc-.*. ClusterName: Description: Cluster name or prefix name to prepend the Name tag for each subnet. Type: String AllowedPattern: ".+" ConstraintDescription: ClusterName parameter must be specified. ZoneName: Description: Zone Name to create the subnets, such as us-west-2-lax-1a. Type: String AllowedPattern: ".+" ConstraintDescription: ZoneName parameter must be specified. PublicRouteTableId: Description: Public Route Table ID to associate the public subnet. Type: String AllowedPattern: ".+" ConstraintDescription: PublicRouteTableId parameter must be specified. PublicSubnetCidr: AllowedPattern: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(1[6-9]|2[0-4]))$ ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-24. Default: 10.0.128.0/20 Description: CIDR block for public subnet. Type: String PrivateRouteTableId: Description: Private Route Table ID to associate the private subnet. Type: String AllowedPattern: ".+" ConstraintDescription: PrivateRouteTableId parameter must be specified. PrivateSubnetCidr: AllowedPattern: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(1[6-9]|2[0-4]))$ ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-24. Default: 10.0.128.0/20 Description: CIDR block for private subnet. Type: String Resources: PublicSubnet: Type: "AWS::EC2::Subnet" Properties: VpcId: !Ref VpcId CidrBlock: !Ref PublicSubnetCidr AvailabilityZone: !Ref ZoneName Tags: - Key: Name Value: !Join ['-', [!Ref ClusterName, "public", !Ref ZoneName]] PublicSubnetRouteTableAssociation: Type: "AWS::EC2::SubnetRouteTableAssociation" Properties: SubnetId: !Ref PublicSubnet RouteTableId: !Ref PublicRouteTableId PrivateSubnet: Type: "AWS::EC2::Subnet" Properties: VpcId: !Ref VpcId CidrBlock: !Ref PrivateSubnetCidr AvailabilityZone: !Ref ZoneName Tags: - Key: Name Value: !Join ['-', [!Ref ClusterName, "private", !Ref ZoneName]] PrivateSubnetRouteTableAssociation: Type: "AWS::EC2::SubnetRouteTableAssociation" Properties: SubnetId: !Ref PrivateSubnet RouteTableId: !Ref PrivateRouteTableId Outputs: PublicSubnetId: Description: Subnet ID of the public subnets. Value: !Join ["", [!Ref PublicSubnet]] PrivateSubnetId: Description: Subnet ID of the private subnets. Value: !Join ["", [!Ref PrivateSubnet]]
関連情報
- AWS CloudFormation コンソール に移動し、作成する CloudFormation スタックの詳細を表示できます。
3.11.7.5. AWS Local Zones サブネットを使用するためのインストール設定ファイルの変更
install-config.yaml
ファイルを変更して、Local Zones のサブネットを含めます。
前提条件
- 「Local Zone のサブネットの作成」手順を使用して、サブネットを作成している。
-
「インストール設定ファイルの作成」手順を使用して、
install-config.yaml
ファイルを作成している。
手順
install-config.yaml
設定ファイルを変更して、platform.aws.subnets
パラメーターで Local Zones のサブネットを指定します。Local Zones のサブネットを含むインストール設定ファイルの例
# ... platform: aws: region: us-west-2 subnets: 1 - publicSubnetId-1 - publicSubnetId-2 - publicSubnetId-3 - privateSubnetId-1 - privateSubnetId-2 - privateSubnetId-3 - publicSubnetId-LocalZone-1 # ...
- 1
- ゾーン (アベイラビリティーゾーンと Local Zones) 内に作成したサブネット ID のリスト。
関連情報
- 作成した CloudFormation スタックを表示する方法の詳細は、AWS CloudFormation コンソール を参照してください。
- AWS プロファイルと認証情報を設定する方法の詳細は、AWS ドキュメントの Configuration and credential file settings を参照してください。
次のステップ
3.11.8. オプション: AWS セキュリティーグループ
デフォルトでは、インストールプログラムは、セキュリティーグループを作成し、コントロールプレーンとコンピュートマシンに接続します。デフォルトのセキュリティーグループに関連付けられたルールは変更できません。
ただし、既存の VPC に関連付けられている追加の既存の AWS セキュリティーグループをコントロールプレーンとコンピュートマシンに適用できます。カスタムセキュリティーグループを適用すると、これらのマシンの受信トラフィックまたは送信トラフィックを制御する必要がある場合に、組織のセキュリティーニーズを満たすことができます。
インストールプロセスの一環として、クラスターをデプロイする前に install-config.yaml
ファイルを変更してカスタムセキュリティーグループを適用します。
詳細は、「エッジコンピュートプールと AWS Local Zones」を参照してください。
3.11.9. オプション: パブリック IP アドレスをエッジコンピュートノードに割り当てます。
ワークロードによっては、Local Zones インフラストラクチャー上のパブリックサブネットにエッジコンピュートノードをデプロイすることが必要になります。その場合は、クラスターのインストール時にマシンセットマニフェストを設定できます。
AWS Local Zones インフラストラクチャーは、指定されたゾーン内のネットワークトラフィックにアクセスします。そのため、そのゾーンに近いエンドユーザーにサービスを提供する際に、アプリケーションで低遅延を利用できます。
デフォルト設定は、プライベートサブネットにコンピュートノードをデプロイする設定であり、お客様のニーズに合わない可能性があります。そのため、インフラストラクチャーにさらにカスタマイズを適用する必要がある場合は、パブリックサブネットにエッジコンピュートノードを作成することを検討してください。
デフォルトでは、OpenShift Container Platform はプライベートサブネットにコンピュートノードをデプロイします。最高のパフォーマンスを得るには、パブリック IP アドレスがサブネットに接続されているサブネットにコンピュートノードを配置することを検討してください。
追加のセキュリティーグループを作成する必要があります。ただし、インターネット経由でグループのルールを開くのは、本当に必要な場合だけに留めてください。
手順
インストールプログラムが含まれるディレクトリーに移動し、マニフェストファイルを生成します。インストールマニフェストが
openshift
およびmanifests
ディレクトリーレベルに作成されていることを確認します。$ ./openshift-install create manifests --dir <installation_directory>
インストールプログラムが Local Zones 用に生成するマシンセットマニフェストを編集して、マニフェストがパブリックサブネットにデプロイされるようにします。
spec.template.spec.providerSpec.value.publicIP
パラメーターにtrue
を指定します。クラスターを Local Zones に迅速にインストールするためのマシンセットマニフェスト設定の例
spec: template: spec: providerSpec: value: publicIp: true subnet: filters: - name: tag:Name values: - ${INFRA_ID}-public-${ZONE_NAME}
Local Zones サブネットを持つ既存の VPC にクラスターをインストールするためのマシンセットマニフェスト設定の例
apiVersion: machine.openshift.io/v1beta1 kind: MachineSet metadata: name: <infrastructure_id>-edge-<zone> namespace: openshift-machine-api spec: template: spec: providerSpec: value: publicIp: true
3.11.10. クラスターのデプロイ
互換性のあるクラウドプラットフォームに OpenShift Container Platform をインストールできます。
インストールプログラムの create cluster
コマンドは、初期インストール時に 1 回だけ実行できます。
前提条件
- クラスターをホストするクラウドプラットフォームでアカウントを設定しました。
- OpenShift Container Platform インストールプログラムおよびクラスターのプルシークレットがある。
- ホスト上のクラウドプロバイダーアカウントに、クラスターをデプロイするための適切な権限があることが確認されました。アカウントの権限が正しくないと、インストールプロセスが失敗し、不足している権限を示すエラーメッセージが表示されます。
手順
インストールプログラムが含まれるディレクトリーに切り替え、クラスターのデプロイメントを初期化します。
$ ./openshift-install create cluster --dir <installation_directory> \ 1 --log-level=info 2
オプション: クラスターのインストールに使用した IAM アカウントから
AdministratorAccess
ポリシーを削除するか、無効にします。注記AdministratorAccess
ポリシーが提供する昇格したパーミッションはインストール時にのみ必要です。
検証
クラスターのデプロイが正常に完了すると、次のようになります。
-
ターミナルには、Web コンソールへのリンクや
kubeadmin
ユーザーの認証情報など、クラスターにアクセスするための指示が表示されます。 -
認証情報は
<installation_directory>/.openshift_install.log
にも出力されます。
インストールプログラム、またはインストールプログラムが作成するファイルを削除することはできません。これらはいずれもクラスターを削除するために必要になります。
出力例
... INFO Install complete! INFO To access the cluster as the system:admin user when using 'oc', run 'export KUBECONFIG=/home/myuser/install_dir/auth/kubeconfig' INFO Access the OpenShift web-console here: https://console-openshift-console.apps.mycluster.example.com INFO Login to the console with user: "kubeadmin", and password: "password" INFO Time elapsed: 36m22s
-
インストールプログラムが生成する Ignition 設定ファイルには、24 時間が経過すると期限切れになり、その後に更新される証明書が含まれます。証明書を更新する前にクラスターが停止し、24 時間経過した後にクラスターを再起動すると、クラスターは期限切れの証明書を自動的に復元します。例外として、kubelet 証明書を回復するために保留状態の
node-bootstrapper
証明書署名要求 (CSR) を手動で承認する必要があります。詳細は、コントロールプレーン証明書の期限切れの状態からのリカバリー に関するドキュメントを参照してください。 - 24 時間証明書はクラスターのインストール後 16 時間から 22 時間にローテーションするため、Ignition 設定ファイルは、生成後 12 時間以内に使用することを推奨します。12 時間以内に Ignition 設定ファイルを使用することにより、インストール中に証明書の更新が実行された場合のインストールの失敗を回避できます。
3.11.11. デプロイしたクラスターのステータスの確認
OpenShift Container Platform が AWS Local Zones に正常にデプロイされたことを確認します。
3.11.11.1. CLI の使用によるクラスターへのログイン
クラスター kubeconfig
ファイルをエクスポートし、デフォルトシステムユーザーとしてクラスターにログインできます。kubeconfig
ファイルには、クライアントを正しいクラスターおよび API サーバーに接続するために CLI で使用されるクラスターに関する情報が含まれます。このファイルはクラスターに固有のファイルであり、OpenShift Container Platform のインストール時に作成されます。
前提条件
- OpenShift Container Platform クラスターをデプロイしていること。
-
oc
CLI をインストールしていること。
手順
kubeadmin
認証情報をエクスポートします。$ export KUBECONFIG=<installation_directory>/auth/kubeconfig 1
- 1
<installation_directory>
には、インストールファイルを保存したディレクトリーへのパスを指定します。
エクスポートされた設定を使用して、
oc
コマンドを正常に実行できることを確認します。$ oc whoami
出力例
system:admin
3.11.11.2. Web コンソールを使用したクラスターへのログイン
kubeadmin
ユーザーは、OpenShift Container Platform のインストール後はデフォルトで存在します。OpenShift Container Platform Web コンソールを使用し、kubeadmin
ユーザーとしてクラスターにログインできます。
前提条件
- インストールホストにアクセスできる。
- クラスターのインストールを完了しており、すべてのクラスター Operator が利用可能である。
手順
インストールホストで
kubeadmin-password
ファイルからkubeadmin
ユーザーのパスワードを取得します。$ cat <installation_directory>/auth/kubeadmin-password
注記または、インストールホストで
<installation_directory>/.openshift_install.log
ログファイルからkubeadmin
パスワードを取得できます。OpenShift Container Platform Web コンソールルートをリスト表示します。
$ oc get routes -n openshift-console | grep 'console-openshift'
注記または、インストールホストで
<installation_directory>/.openshift_install.log
ログファイルからで OpenShift Container Platform ルートを取得できます。出力例
console console-openshift-console.apps.<cluster_name>.<base_domain> console https reencrypt/Redirect None
-
Web ブラウザーで前述のコマンドの出力で詳細に説明されたルートに移動し、
kubeadmin
ユーザーとしてログインします。
関連情報
3.11.11.3. エッジコンピューティングプールで作成されたノードの検証
AWS Local Zones インフラストラクチャーを使用するクラスターをインストールしたら、インストール時に作成したマシンセットマニフェストによって作成されたマシンのステータスを確認します。
install-config.yaml
ファイルに追加したサブネットから作成されたマシンセットを確認するには、次のコマンドを実行します。$ oc get machineset -n openshift-machine-api
出力例
NAME DESIRED CURRENT READY AVAILABLE AGE cluster-7xw5g-edge-us-east-1-nyc-1a 1 1 1 1 3h4m cluster-7xw5g-worker-us-east-1a 1 1 1 1 3h4m cluster-7xw5g-worker-us-east-1b 1 1 1 1 3h4m cluster-7xw5g-worker-us-east-1c 1 1 1 1 3h4m
マシンセットから作成されたマシンを確認するには、次のコマンドを実行します。
$ oc get machines -n openshift-machine-api
出力例
NAME PHASE TYPE REGION ZONE AGE cluster-7xw5g-edge-us-east-1-nyc-1a-wbclh Running c5d.2xlarge us-east-1 us-east-1-nyc-1a 3h cluster-7xw5g-master-0 Running m6i.xlarge us-east-1 us-east-1a 3h4m cluster-7xw5g-master-1 Running m6i.xlarge us-east-1 us-east-1b 3h4m cluster-7xw5g-master-2 Running m6i.xlarge us-east-1 us-east-1c 3h4m cluster-7xw5g-worker-us-east-1a-rtp45 Running m6i.xlarge us-east-1 us-east-1a 3h cluster-7xw5g-worker-us-east-1b-glm7c Running m6i.xlarge us-east-1 us-east-1b 3h cluster-7xw5g-worker-us-east-1c-qfvz4 Running m6i.xlarge us-east-1 us-east-1c 3h
エッジロールを持つノードを確認するには、次のコマンドを実行します。
$ oc get nodes -l node-role.kubernetes.io/edge
出力例
NAME STATUS ROLES AGE VERSION ip-10-0-207-188.ec2.internal Ready edge,worker 172m v1.25.2+d2e245f
次のステップ
- インストールの検証
- 必要に応じて、リモートヘルスをオプトアウト できます。