インベントリ マシンの登録
プラットフォーム管理者がユーザー クラスタを作成するには、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 認証鍵を使用できます。それらを必要とするユーザー クラスタの前に作成する必要があります。
すべてのインベントリ マシンに SSH 公開鍵を配布します。
管理クラスタ内に 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
ユーザー クラスタを作成するときに、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 は、使用するユーザー クラスタを作成する前に作成しておく必要があります。
以下の関数を使います。
kubectl create configmap <configmap-name> --kubeconfig=${ADMIN_KUBECONFIG} \ --from-file=<path/to/manifests> --namespace=anthos-management-center
サービスのブートストラップに必要なすべてのマニフェストを含む configmap を作成します。
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
追加の Bootstrap Services が必要な場合は、上の手順を繰り返します。