11.2. Cluster API の使用開始
Machine API と Cluster API は、同様のリソースを持つ異なる API グループです。これらの API グループを使用して、OpenShift Container Platform クラスター上のインフラストラクチャーリソースの管理を自動化できます。
Cluster API を使用したマシン管理は、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
3 つのコントロールプレーンノードと 3 つのコンピュートノードを持ち、デフォルトの設定オプションを使用する標準の OpenShift Container Platform クラスターをインストールすると、インストールプログラムは openshift-machine-api namespace に以下のインフラストラクチャーリソースをプロビジョニングします。
- 3 つのコントロールプレーンマシンを管理する 1 つのコントロールプレーンマシンセット。
- 3 台のコンピュートマシンを管理する 1 つ以上のコンピュートマシンセット。
- スポットインスタンスを管理する 1 つのマシンヘルスチェック。
Cluster API を使用してインフラストラクチャーリソースの管理をサポートするクラスターをインストールすると、インストールプログラムは openshift-cluster-api namespace に以下のリソースをプロビジョニングします。
- 1 つのクラスターリソース。
- 1 つのプロバイダー固有のインフラストラクチャークラスターリソース。
Machine API リソースから Cluster API リソースへの移行をサポートするクラスターでは、双方向同期コントローラーによってこれらのプライマリーリソースが自動的に作成されます。詳細は、Machine API リソースの Cluster API リソースへの移行 を参照してください。
11.2.1. Cluster API のプライマリーリソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
Machine API リソースから Cluster API リソースへの移行をサポートしていないクラスターの場合は、openshift-cluster-api namespace に次の Cluster API リソースを手動で作成する必要があります。
- コンピュートマシンセットに対応する 1 つ以上のマシンテンプレート。
- 3 台のコンピュートマシンを管理する 1 つ以上のコンピュートマシンセット。
11.2.1.1. Cluster API のマシンテンプレートの作成 リンクのコピーリンクがクリップボードにコピーされました!
YAML マニフェストファイルを作成し、それを OpenShift CLI (oc) で適用することで、プロバイダー固有のマシンテンプレートリソースを作成できます。
前提条件
- OpenShift Container Platform クラスターをデプロイした。
- Cluster API の使用を有効化している。
-
cluster-admin権限を持つアカウントを使用してクラスターにアクセスできる。 -
OpenShift CLI (
oc) がインストールされている。
手順
以下のような YAML ファイルを作成します。この手順では、ファイル名の例として
<machine_template_resource_file>.yamlを使用します。apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 kind: <machine_template_kind>1 metadata: name: <template_name>2 namespace: openshift-cluster-api spec: template: spec:3 - 1
- マシンテンプレートの種類を指定します。この値は、プラットフォームの値と一致する必要があります。次の値が有効です。
Expand クラスターインフラストラクチャープロバイダー 値 Amazon Web Services (AWS)
AWSMachineTemplateGoogle Cloud
GCPMachineTemplateMicrosoft Azure
AzureMachineTemplateRed Hat OpenStack Platform (RHOSP)
OpenStackMachineTemplateVMware vSphere
VSphereMachineTemplateベアメタル
Metal3MachineTemplate - 2
- マシンテンプレートの名前を指定します。
- 3
- 環境の詳細を指定します。これらのパラメーターはプロバイダー固有です。詳細は、各プロバイダーの Cluster API マシンテンプレートのサンプル YAML を参照してください。
次のコマンドを実行して、マシンテンプレート CR を作成します。
$ oc create -f <machine_template_resource_file>.yaml
検証
次のコマンドを実行して、マシンテンプレート CR が作成されたことを確認します。
$ oc get <machine_template_kind> -n openshift-cluster-api<machine_template_kind>は、プラットフォームに対応する値です。出力例
NAME AGE <template_name> 77m
11.2.1.2. Cluster API のコンピュートマシンセットの作成 リンクのコピーリンクがクリップボードにコピーされました!
Cluster API を使用して、選択した特定のワークロードのマシンコンピュートリソースを動的に管理するマシンセットを作成できます。
前提条件
- OpenShift Container Platform クラスターをデプロイした。
- Cluster API の使用を有効化している。
-
cluster-admin権限を持つアカウントを使用してクラスターにアクセスできる。 -
OpenShift CLI (
oc) がインストールされている。 - マシンテンプレートリソースを作成している。
手順
以下のような YAML ファイルを作成します。この手順では、ファイル名の例として
<machine_set_resource_file>.yamlを使用します。apiVersion: cluster.x-k8s.io/v1beta1 kind: MachineSet metadata: name: <machine_set_name>1 namespace: openshift-cluster-api spec: clusterName: <cluster_name>2 replicas: 1 selector: matchLabels: test: example template: metadata: labels: test: example spec:3 # ...- 1
- コンピュートマシンセットの名前を指定します。通常、この値のパターンは、クラスター ID、マシンのロール、およびリージョンにより、
<cluster_name>-<role>-<region>という形で構成されます。 - 2
- クラスターの名前を指定します。次のコマンドを実行して、クラスター ID 値を取得します。
$ oc get infrastructure cluster \ -o jsonpath='{.status.infrastructureName}' - 3
- 環境の詳細を指定します。これらのパラメーターはプロバイダー固有です。詳細は、各プロバイダーの Cluster API コンピュートマシンセットのサンプル YAML を参照してください。
次のコンピュートコマンドを実行して、マシンセット CR を作成します。
$ oc create -f <machine_set_resource_file>.yaml次のコマンドを実行して、コンピュートマシンセット CR が作成されたことを確認します。
$ oc get machineset.cluster.x-k8s.io -n openshift-cluster-api出力例
NAME CLUSTER REPLICAS READY AVAILABLE AGE VERSION <machine_set_name> <cluster_name> 1 1 1 17m新しいコンピュートマシンセットが利用可能な場合、
REPLICASとAVAILABLEの値が一致します。コンピュートマシンセットが使用できない場合は、数分待ってからコマンドを再実行してください。
検証
コンピュートマシンセットが必要な設定に従ってマシンを作成していることを確認するには、次のコマンドを実行して、クラスター内のマシンとノードのリストを確認します。
Cluster API マシンのリストを表示します。
$ oc get machine.cluster.x-k8s.io -n openshift-cluster-api出力例
NAME CLUSTER NODENAME PROVIDERID PHASE AGE VERSION <machine_set_name>-<string_id> <cluster_name> <ip_address>.<region>.compute.internal <provider_id> Running 8m23sノードのリストを表示します。
$ oc get node出力例
NAME STATUS ROLES AGE VERSION <ip_address_1>.<region>.compute.internal Ready worker 5h14m v1.28.5 <ip_address_2>.<region>.compute.internal Ready master 5h19m v1.28.5 <ip_address_3>.<region>.compute.internal Ready worker 7m v1.28.5