プリフライト チェックについて理解する

このページは、インフラストラクチャ オペレータまたはプラットフォーム管理者を対象としています。

Anthos のプライベート モードでは、状況に応じてプリフライト チェックを実行できます。

  • Anthos プライベート モードでは、actl を使用して管理クラスタ、ユーザー クラスタ、ノードプール リソースを作成または更新する際に、プリフライト チェックを実行します。チェックで不合格になると、何も行われません。また、こうしたチェックをバイパスすることもできます。
  • Anthos プライベート モードでは、管理クラスタからユーザー クラスタに Kubernetes リソースを適用する際に、内部のプリフライト チェックが実行されます。このチェックは、影響を受けるユーザー クラスタに変更が実際に適用される前に実行されます。チェックで不合格になると、何も行われません。これらのチェックをバイパスすることも、明示的に実行することもできます。

actl を使用したクラスタ作成時のプリフライト チェック

actl コマンドを使用して管理クラスタまたはユーザー クラスタを作成すると、Anthos プライベート モードが、変更が行われる前に自動的にプリフライト チェックを実行します。

チェックに合格すると、Anthos プライベート モードでクラスタが作成されます。

自動プリフライト チェックの結果を無視する

自動化されたプリフライト チェックをバイパスする場合は、コマンドでオプションの --force フラグを使用します。

プリフライト チェックを個別に実行する

クラスタを作成する前にプリフライト チェックを自動的に実行することもできます。マシンとノードのリソースが確実にチェックに合格するため時間を節約できます。

このコマンドは、マシンとネットワークにクラスタを作成する準備が整っているかどうかを確認します。

actl clusters baremetal check preflight CLUSTER_NAME

ユーザー クラスタ作成に対するプリフライト チェック

既存の管理クラスタからユーザー クラスタが作成されます。Anthos プライベート モードが、変更が行われる前に自動的にプリフライト チェックを実行します。また、クラスタを作成する前に kubectl でプリフライト チェックを実行することもできます。

  1. サンプル ユーザー構成ファイルの手順に沿って、ユーザー クラスタ構成ファイルを作成します。

  2. 新しいユーザー クラスタの Namespace を作成します。たとえば、user1 という名前の新しいユーザー クラスタを作成するために、cluster-user1 という名前の Namespace を作成できます。Namespace を作成する kubectl コマンドは次のとおりです。ここで、ADMIN_KUBECONFIG には、管理クラスタの kubeconfig ファイルのパスを指定します。

    kubectl --kubeconfig ADMIN_KUBECONFIG create namespace cluster-user1
    

  3. SSH 秘密鍵ファイルをシークレットとして新しい Namespace にアップロードし、認証情報を確立します。コマンドの例を次に示します。ここで、ADMIN_KUBECONFIG には管理クラスタの kubeconfig ファイルへのパスを指定し、SSH_PRIVATE_KEY_FILE_PATH には SSH 秘密鍵ファイルへのパスを指定します。

    kubectl --kubeconfig ADMIN_KUBECONFIG create secret generic ssh-key -n cluster-user1 --from-file=id_rsa=SSH_PRIVATE_KEY_FILE_PATH
    

  4. 以下の構成で、新しいプリフライト チェック YAML ファイルを作成します。configYAML フィールドには、ステップ 1 で作成したユーザー クラスタ構成ファイルのテキストの内容を入力します。

    apiVersion: baremetal.cluster.gke.io/v1
    kind: PreflightCheck
    metadata:
    generateName: preflightcheck-
    namespace: cluster-user1
    spec:
    configYAML: |
    # insert user cluster config file content here.
    
  5. 次の kubectl コマンドを使用して、ユーザー クラスタのプリフライト チェックを実行します。ここで、ADMIN_KUBECONFIG は管理クラスタの kubeconfig ファイルのパスを指定し、USER_CLUSTER_PREFLIGHT_CHECK_CONFIG は前の手順で作成したプリフライト チェック YAML ファイルへのパスを指定します。

    kubectl --kubeconfig ADMIN_KUBECONFIG create -f USER_CLUSTER_PREFLIGHT_CHECK_CONFIG
    
    たとえば、user1-preflight.yaml という名前のユーザー クラスタのプリフライト チェック構成の場合、コマンドは次のようになります。
    kubectl --kubeconfig ADMIN_KUBECONFIG create -f user1-preflight.yaml
    
    プリフライト チェックのジョブ ID とともに次のメッセージが返されます。
    preflightcheck.baremetal.cluster.gke.io/preflightcheck-g7hfo4 created

  6. kubectl コマンドを使用して、プリフライト チェック ジョブのステータスを確認します。

    kubectl --kubeconfig ADMIN_KUBECONFIG -n cluster-user1 get preflightchecks preflightcheck-g7hfo4
    

プリフライト チェック ジョブで不合格となった場合は、ステータスと詳細なジョブログをチェックして、不合格となったチェックを確認します。ジョブで指摘された問題を適切に修正したら、再度チェックを実行します。

既存のクラスタに対する内部プリフライト チェック

既存の管理クラスタに Cluster Kubernetes リソースを適用すると、Anthos プライベート モードで内部プリフライト チェックも実行されます。いずれかのチェックが失敗した場合、明示的にチェックをバイパスしていない限り、Anthos プライベート モードで関連ノードは変更されません。

Kubernetes リソース適用時のプリフライト チェックをバイパスする

Cluster リソースを既存の管理クラスタに適用する際の内部プリフライト チェックを無視するには、クラスタ リソースで BypassPreflightCheck フィールドを true に設定する必要があります。

以下は、クラスタ構成 YAML ファイルの一部ですが、bypassPreflightCheck フィールドが true に設定されています。

# Sample cluster config to bypass preflight check errors:

apiVersion: v1
kind: Namespace
metadata:
  name: cluster-user1
---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: user1
  namespace: cluster-user1
spec:
  type: user
  bypassPreflightCheck: true
  # Anthos cluster version.
  anthosBareMetalVersion: 1.9.3
....

プリフライト チェックを再度有効にする

プリフライト チェックが正常に終了すると、Anthos プライベート モードがクラスタを更新または新規作成できるように、プリフライト チェックを新たに明示的にトリガーできます。

  1. 次の構成で、新しいプリフライト チェック YAML ファイルを作成します。namespace フィールドと clusterName フィールドに作成するクラスタの名前を入力します。

    apiVersion: baremetal.cluster.gke.io/v1
    kind: PreflightCheck
    metadata:
    generateName: preflightcheck-
    namespace: CLUSTER_NAMESPACE
    spec:
    clusterName: CLUSTER_NAME
    

  2. kubectl コマンドを発行してクラスタのプリフライト チェックを実行します。ここで、ADMIN_KUBECONFIG には管理クラスタの kubeconfig ファイルへのパスを指定し、CLUSTER_PREFLIGHT_CHECK_CONFIG には事前に作成したプリフライト チェック YAML ファイルへのパスを指定します。

    kubectl --kubeconfig ADMIN_KUBECONFIG create -f CLUSTER_PREFLIGHT_CHECK_CONFIG
    
    たとえば、user1-preflight.yaml という名前のユーザー クラスタのプリフライト チェック構成の場合、コマンドは次のようになります。
    kubectl --kubeconfig ADMIN_KUBECONFIG create -f user1-preflight.yaml
    
    システムは、プリフライト チェックのジョブ ID で応答します。
    preflightcheck.baremetal.cluster.gke.io/preflightcheck-g7hfo4 created
    

  3. kubectl コマンドを使用して、プリフライト チェック ジョブのステータス ID をクエリします。

    kubectl --kubeconfig ADMIN_KUBECONFIG -n cluster-cluster1 get preflightchecks preflightcheck-g7hfo4
    

プリフライト チェックジョブが正常に完了すると、Anthos プライベート モードでクラスタとクラスタのリソースが作成されます。

インストールのプリフライト チェックの詳細

Anthos プライベート モードは、プリフライト チェックを実行する際に、さまざまなオペレーティング システム、ソフトウェア、マシンの前提条件をチェックします。

詳細については、要件をご覧ください。

認証のプリフライト チェック

認証目的で、プリフライト チェックにより OpenID Connect(OIDC)構成が検証され、誤った OIDC プロファイルの適用を防ぐことができます。

これらのチェックでは、/.well-known/openid-configuration の OIDC 検出メカニズムを使用した OIDC エンドポイントの ping などが行われます。

次のステップ