リソースの登録

インベントリ マシンの登録

プラットフォーム管理者がユーザー クラスタを作成するには、Anthos が使用可能なアイドル状態のマシンのプールが必要になります。このセクションでは、Anthos 管理クラスタにインベントリ マシンを登録して、プラットフォーム管理者が後でユーザー クラスタを作成するために使用できるようにします。これらのマシンは、管理クラスタノードと同じ要件を満たす必要があります。

kubectl apply -f <path/to/example-machine.yaml> --kubeconfig=${ADMIN_KUBECONFIG}

例:

apiVersion: baremetal.cluster.gke.io/v1alpha1
kind: InventoryMachine
metadata:
  name: <ip address of the machine. e.g., 10.200.0.10>
  labels:
    "mykey": "myvalue"
    "rack": "r1020"
spec:
  address: <ip address of the machine. e.g., 10.200.0.10>

labels は、リソースに関連付けられる自由形式の Key-Value ペアです。後で Management Center で使用して、マシンをフィルタリングできます。たとえば、ラベルを使用して、ラックの位置、特殊なハードウェア構成などを特定できます。

(省略可)インベントリ マシンごとに異なる SSH 認証鍵を使用する

デフォルトでは、Anthos プライベート モードは、sshPrivateKeyPath (管理クラスタのマシンへのアクセスに使用)により提供される ssh-key を使用して、これらのインベントリ マシンにアクセスします。管理クラスタマシンとインベントリ マシン(ユーザー クラスタ用)をより適切に分離するには、インベントリ マシンに別の SSH 認証鍵を使用できます。それらを必要とするユーザー クラスタの前に作成する必要があります。

  1. すべてのインベントリ マシンに SSH 公開鍵を配布します。

  2. 管理クラスタ内に SSH 秘密鍵を Secret として保存します(例: user-cluster-ssh-key)。

    kubectl create secret generic user-cluster-ssh-key -n anthos-creds --kubeconfig=${ADMIN_KUBECONFIG} \
      --from-file=id_rsa=/path/to/KEYPAIR_PRIVATE_KEY_FILENAME
    
  3. ユーザー クラスタを作成するときに、Namespace anthos-creds でステップ 1 で作成した Secret(user-cluster-ssh-key など)を指定します。

    これは、API を使用してクラスタを作成する場合にのみサポートされます。ユーザー クラスタの yaml ファイル内のクラスタ定義に、SSH 認証鍵を sshKeySecret として追加し、imagePullSecret を指定します。次に例を示します。

      apiVersion: baremetal.cluster.gke.io/v1
      kind: Cluster
      metadata:
        name: <cluster-name>
        namespace: cluster-<cluster-name>
      spec:
        type: user
        credentials:
          sshKeySecret:
            name: user-cluster-ssh-key
            namespace: anthos-creds
          ....
        nodeAccess:
          loginUser: <login user name>
          ....
    

VIP アドレスプールの登録

プラットフォーム管理者が InventoryMachines 以外のユーザー クラスタを作成するには、Anthos が使用可能なすべての仮想 IP のプールが必要になります。これは、Management Center の UI によって使用され、使用可能な仮想 IP をプラットフォーム管理者に通知し、ユーザークラスターの作成中にVIPの可用性を検証します。

このセクションでは、ユーザー クラスタの作成で後ほど使用するために、Anthos 管理クラスタに AddressPool を登録します。anthos-addresspool-default 名を使用して、アドレスプールを 1 つだけ作成する必要があります。各ユーザー クラスタには、このアドレスプールの VIP の使用が強制適用され、同じ範囲の VIP を再利用することはできません。仮想 IP は、管理クラスタに使用される VIP と同じ要件を満たす必要があります。また、ノードの IP と重複しないようにする必要があります。説明フィールドを使用すると、UI に追加の手順を付加できます。

kubectl apply -f <path/to/example-addresspool.yaml> --kubeconfig=${ADMIN_KUBECONFIG}

例:

apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1
kind: AddressPool
metadata:
  name: anthos-addresspool-default
spec:
  description: <description text>
  addresses:
  - <vip address pool. e.g, 10.200.0.100-10.200.0.200>

Bootstrap Service の登録

Bootstrap Service は、ユーザー クラスタが作成されるとストレージ サービスや GPU ドライバなどの追加リソースをプリインストールして、すぐに使用できるようにするための仕組みです。Bootstrap Service は、使用するユーザー クラスタを作成する前に作成しておく必要があります。

  1. 以下の関数を使います。

    kubectl create configmap <configmap-name> --kubeconfig=${ADMIN_KUBECONFIG} \
      --from-file=<path/to/manifests> --namespace=anthos-management-center
    

    サービスのブートストラップに必要なすべてのマニフェストを含む configmap を作成します。

  2. configmap を参照する Bootstrap Service オブジェクトを作成します。

    apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1
    kind: BootstrapService
    metadata:
      name: <bootstrap-service-name>
      namespace: anthos-management-center
    spec:
      # If set to True, this configuration can be applied to many user clusters,
      # e.g. a GPU driver configuration. If False, this configuration can only be
      # applied to a single user cluster, e.g. a CSI Driver + StorageClass
      # combination which is intended for exclusive use by a single user cluster.
      # Defaults to False.
      isReusable: False
      configMapRef:
        name: <configmap-name>
        namespace: anthos-management-center
    
  3. 追加の Bootstrap Services が必要な場合は、上の手順を繰り返します。