12.4. API を使用したホストの追加
Assisted Installer の REST API を使用して、ホストをクラスターに追加できます。
前提条件
-
OpenShift Cluster Manager CLI (
ocm) をインストールしている。 - クラスター作成権限を持つユーザーで OpenShift Cluster Manager にログインする。
-
jqをインストールする。 - 拡張するクラスターに必要なすべての DNS レコードが存在することを確認する。
手順
- Assisted Installer の REST API に対して認証し、セッションの API トークンを生成します。生成されたトークンは 15 分間のみ有効です。
次のコマンドを実行して、
$API_URL変数を設定します。export API_URL=<api_url>
$ export API_URL=<api_url>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<api_url>を Assisted Installer API の URL に置き換えます (例:https://api.openshift.com)。
以下のコマンドを実行してクラスターをインポートします。
$CLUSTER_ID変数を設定します。クラスターにログインし、次のコマンドを実行します。export CLUSTER_ID=$(oc get clusterversion -o jsonpath='{.items[].spec.clusterID}')$ export CLUSTER_ID=$(oc get clusterversion -o jsonpath='{.items[].spec.clusterID}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターのインポートに使用される
$CLUSTER_REQUEST変数を設定します。export CLUSTER_REQUEST=$(jq --null-input --arg openshift_cluster_id "$CLUSTER_ID" '{$ export CLUSTER_REQUEST=$(jq --null-input --arg openshift_cluster_id "$CLUSTER_ID" '{ "api_vip_dnsname": "<api_vip>",1 "openshift_cluster_id": $CLUSTER_ID, "name": "<openshift_cluster_name>"2 }')Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターをインポートし、
$CLUSTER_ID変数を設定します。以下のコマンドを実行します。CLUSTER_ID=$(curl "$API_URL/api/assisted-install/v2/clusters/import" -H "Authorization: Bearer ${API_TOKEN}" -H 'accept: application/json' -H 'Content-Type: application/json' \ -d "$CLUSTER_REQUEST" | tee /dev/stderr | jq -r '.id')$ CLUSTER_ID=$(curl "$API_URL/api/assisted-install/v2/clusters/import" -H "Authorization: Bearer ${API_TOKEN}" -H 'accept: application/json' -H 'Content-Type: application/json' \ -d "$CLUSTER_REQUEST" | tee /dev/stderr | jq -r '.id')Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のコマンドを実行して、クラスターの
InfraEnvリソースを生成し、$INFRA_ENV_ID変数を設定します。- console.redhat.com の Red Hat OpenShift Cluster Manager からプルシークレットファイルをダウンロードします。
$INFRA_ENV_REQUEST変数を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<path_to_pull_secret_file>を、console.redhat.com の Red Hat OpenShift Cluster Manager からダウンロードしたプルシークレットを含むローカルファイルへのパスに置き換えます。- 2
<path_to_ssh_pub_key>を、ホストへのアクセスに必要な公開 SSH キーへのパスに置き換えます。この値を設定しないと、検出モードでホストにアクセスできません。- 3
<infraenv_name>をInfraEnvリソースのプレーンテキスト名に置き換えます。- 4
<iso_image_type>をfull-isoまたはminimal-isoのいずれかの ISO イメージタイプに置き換えます。
$INFRA_ENV_REQUESTを /v2/infra-envs API に送信し、$INFRA_ENV_ID変数を設定します。INFRA_ENV_ID=$(curl "$API_URL/api/assisted-install/v2/infra-envs" -H "Authorization: Bearer ${API_TOKEN}" -H 'accept: application/json' -H 'Content-Type: application/json' -d "$INFRA_ENV_REQUEST" | tee /dev/stderr | jq -r '.id')$ INFRA_ENV_ID=$(curl "$API_URL/api/assisted-install/v2/infra-envs" -H "Authorization: Bearer ${API_TOKEN}" -H 'accept: application/json' -H 'Content-Type: application/json' -d "$INFRA_ENV_REQUEST" | tee /dev/stderr | jq -r '.id')Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のコマンドを実行して、クラスターホストの検出 ISO の URL を取得します。
curl -s "$API_URL/api/assisted-install/v2/infra-envs/$INFRA_ENV_ID" -H "Authorization: Bearer ${API_TOKEN}" | jq -r '.download_url'$ curl -s "$API_URL/api/assisted-install/v2/infra-envs/$INFRA_ENV_ID" -H "Authorization: Bearer ${API_TOKEN}" | jq -r '.download_url'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
https://api.openshift.com/api/assisted-images/images/41b91e72-c33e-42ee-b80f-b5c5bbf6431a?arch=x86_64&image_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2NTYwMjYzNzEsInN1YiI6IjQxYjkxZTcyLWMzM2UtNDJlZS1iODBmLWI1YzViYmY2NDMxYSJ9.1EX_VGaMNejMhrAvVRBS7PDPIQtbOOc8LtG8OukE1a4&type=minimal-iso&version=4.12
https://api.openshift.com/api/assisted-images/images/41b91e72-c33e-42ee-b80f-b5c5bbf6431a?arch=x86_64&image_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2NTYwMjYzNzEsInN1YiI6IjQxYjkxZTcyLWMzM2UtNDJlZS1iODBmLWI1YzViYmY2NDMxYSJ9.1EX_VGaMNejMhrAvVRBS7PDPIQtbOOc8LtG8OukE1a4&type=minimal-iso&version=4.12Copy to Clipboard Copied! Toggle word wrap Toggle overflow ISO をダウンロードします。
curl -L -s '<iso_url>' --output rhcos-live-minimal.iso
$ curl -L -s '<iso_url>' --output rhcos-live-minimal.iso1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<iso_url>を前の手順の ISO の URL に置き換えます。
-
ダウンロードした
rhcos-live-minimal.isoから新しいワーカーホストを起動します。 インストールされていない クラスター内のホストのリストを取得します。新しいホストが表示されるまで、次のコマンドを実行し続けます。
curl -s "$API_URL/api/assisted-install/v2/clusters/$CLUSTER_ID" -H "Authorization: Bearer ${API_TOKEN}" | jq -r '.hosts[] | select(.status != "installed").id'$ curl -s "$API_URL/api/assisted-install/v2/clusters/$CLUSTER_ID" -H "Authorization: Bearer ${API_TOKEN}" | jq -r '.hosts[] | select(.status != "installed").id'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
2294ba03-c264-4f11-ac08-2f1bb2f8c296
2294ba03-c264-4f11-ac08-2f1bb2f8c296Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しいホストの
$HOST_ID変数を設定します。以下に例を示します。HOST_ID=<host_id>
$ HOST_ID=<host_id>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<host_id>を前の手順のホスト ID に置き換えます。
以下のコマンドを実行して、ホストがインストールできる状態であることを確認します。
注記完全な
jq式を含むコマンド全体をコピーしてください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前のコマンドでホストの準備ができていることが示されたら、次のコマンドを実行し、/v2/infra-envs/{infra_env_id}/hosts/{host_id}/actions/install API を使用してインストールを開始します。
curl -X POST -s "$API_URL/api/assisted-install/v2/infra-envs/$INFRA_ENV_ID/hosts/$HOST_ID/actions/install" -H "Authorization: Bearer ${API_TOKEN}"$ curl -X POST -s "$API_URL/api/assisted-install/v2/infra-envs/$INFRA_ENV_ID/hosts/$HOST_ID/actions/install" -H "Authorization: Bearer ${API_TOKEN}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow インストールが進行すると、ホストに対して保留中の証明書署名要求 (CSR) が生成されます。
重要インストールを完了するには、CSR を承認する必要があります。
次の API 呼び出しを実行し続けて、クラスターのインストールを監視します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 次のコマンドを実行して、クラスターのすべてのイベントを表示します。
curl -s "$API_URL/api/assisted-install/v2/events?cluster_id=$CLUSTER_ID" -H "Authorization: Bearer ${API_TOKEN}" | jq -c '.[] | {severity, message, event_time, host_id}'$ curl -s "$API_URL/api/assisted-install/v2/events?cluster_id=$CLUSTER_ID" -H "Authorization: Bearer ${API_TOKEN}" | jq -c '.[] | {severity, message, event_time, host_id}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - クラスターにログインし、保留中の CSR を承認してインストールを完了します。
検証
新規ホストが
Readyのステータスでクラスターに正常に追加されたことを確認します。oc get nodes
$ oc get nodesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME STATUS ROLES AGE VERSION control-plane-1.example.com Ready master,worker 56m v1.25.0 compute-1.example.com Ready worker 11m v1.25.0
NAME STATUS ROLES AGE VERSION control-plane-1.example.com Ready master,worker 56m v1.25.0 compute-1.example.com Ready worker 11m v1.25.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow