クラスタを追加するための前提条件
クラスタを追加する前に、前提条件が満たされていることを確認する必要があります。また、資格チェックを実行して、アストラコントロールセンターにクラスタを追加する準備ができていることを確認する必要があります。
クラスタを追加する前に必要な作業
クラスタがに記載された要件を満たしていることを確認します "アプリケーションクラスタの要件"。
管理対象のコンピューティングリソースとして 2 つ目の OpenShift 4.6 、 4.7 、または 4.8 クラスタを追加する場合は、 Astra Trident ボリュームスナップショット機能が有効になっていることを確認する必要があります。ネットアップの公式 Astra Trident をご覧ください "手順" Trident を使用して、ボリューム Snapshot を有効にしてテストしてください。 |
-
で構成されたAstra Trident StorageClasses "サポートされるストレージバックエンド" (すべてのタイプのクラスタに必要)
-
Astra Control Center を使用してアプリケーションをバックアップおよび復元するためにバックアップ ONTAP システムで設定されたスーパーユーザーおよびユーザー ID 。ONTAP コマンドラインで次のコマンドを実行します。
export-policy rule modify -vserver <storage virtual machine name> -policyname <policy name> -ruleindex 1 -superuser sysm --anon 65534
-
Astra Trident
volumesnapshotclass
管理者によって定義されたオブジェクト。Astra Trident の詳細をご確認ください "手順" Trident を使用して、ボリューム Snapshot を有効にしてテストしてください。 -
Kubernetes クラスタにデフォルトのストレージクラスが 1 つだけ定義されていることを確認します。
資格チェックを実行します
次の資格チェックを実行して、 Astra Control Center にクラスタを追加する準備ができていることを確認します。
-
Trident のバージョンを確認
kubectl get tridentversions -n trident
Trident が存在する場合は、次のような出力が表示されます。
NAME VERSION trident 21.04.0
Trident が存在しない場合は、次のような出力が表示されます。
error: the server doesn't have a resource type "tridentversions"
Trident がインストールされていない場合や、インストールされているバージョンが最新でない場合は、次に進む前に最新バージョンの Trident をインストールする必要があります。を参照してください "Trident のドキュメント" 手順については、を参照し -
サポートされている Trident ドライバをストレージクラスが使用しているかどうかを確認します。プロビジョニング担当者の名前はとします
csi.trident.netapp.io
。次の例を参照してください。kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE ontap-gold (default) csi.trident.netapp.io Delete Immediate true 5d23h thin kubernetes.io/vsphere-volume Delete Immediate false 6d
admin ロールの kubeconfig を作成します
手順を実行する前に、マシンに次のものがあることを確認してください。
-
kubectl
V1.19以降がインストールされている -
アクティブなコンテキストのクラスタ管理者権限があるアクティブな kubeconfig です
-
次の手順でサービスアカウントを作成します。
-
という名前のサービスアカウントファイルを作成します
astracontrol-service-account.yaml
。名前と名前空間を必要に応じて調整します。ここで変更を行った場合は、以降の手順でも同じ変更を適用する必要があります。
astracontrol-service-account.yaml
+
apiVersion: v1 kind: ServiceAccount metadata: name: astracontrol-service-account namespace: default
-
サービスアカウントを適用します。
kubectl apply -f astracontrol-service-account.yaml
-
-
(オプション)権限付きポッドの作成を許可しない制限付きポッドセキュリティポリシーをクラスタで使用している場合、またはポッドコンテナ内のプロセスをルートユーザとして実行できるようにしていない場合は、 Astra Control でポッドを作成および管理できるように、クラスタ用のカスタムポッドセキュリティポリシーを作成します。手順については、を参照してください "カスタムのポッドセキュリティポリシーを作成します"。
-
次のようにクラスタ管理者権限を付与します。
-
を作成します
ClusterRoleBinding
という名前のファイルですastracontrol-clusterrolebinding.yaml
。必要に応じて、サービスアカウントの作成時に変更した名前と名前空間を調整します。
astracontrol-clusterrolebinding.yaml
+
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: astracontrol-admin roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: astracontrol-service-account namespace: default
-
クラスタロールバインドを適用します。
kubectl apply -f astracontrol-clusterrolebinding.yaml
-
-
サービスアカウントのシークレットを一覧表示します(置き換えます)
<context>
インストールに適したコンテキストを使用して、次の操作を行います。kubectl get serviceaccount astracontrol-service-account --context <context> --namespace default -o json
出力の末尾は次のようになります。
"secrets": [ { "name": "astracontrol-service-account-dockercfg-vhz87"}, { "name": "astracontrol-service-account-token-r59kr"} ]
内の各要素のインデックス
secrets
アレイは0から始まります。上記の例では、のインデックスですastracontrol-service-account-dockercfg-vhz87
は0、のインデックスですastracontrol-service-account-token-r59kr
は1です。出力で、 "token" という単語が含まれるサービスアカウント名のインデックスをメモしてください。 -
次のように kubeconfig を生成します。
-
を作成します
create-kubeconfig.sh
ファイル。交換してくださいTOKEN_INDEX
次のスクリプトの先頭に正しい値を入力します。create-kubeconfig.sh
# Update these to match your environment. # Replace TOKEN_INDEX with the correct value # from the output in the previous step. If you # didn't change anything else above, don't change # anything else here. SERVICE_ACCOUNT_NAME=astracontrol-service-account NAMESPACE=default NEW_CONTEXT=astracontrol KUBECONFIG_FILE='kubeconfig-sa' CONTEXT=$(kubectl config current-context) SECRET_NAME=$(kubectl get serviceaccount ${SERVICE_ACCOUNT_NAME} \ --context ${CONTEXT} \ --namespace ${NAMESPACE} \ -o jsonpath='{.secrets[TOKEN_INDEX].name}') TOKEN_DATA=$(kubectl get secret ${SECRET_NAME} \ --context ${CONTEXT} \ --namespace ${NAMESPACE} \ -o jsonpath='{.data.token}') TOKEN=$(echo ${TOKEN_DATA} | base64 -d) # Create dedicated kubeconfig # Create a full copy kubectl config view --raw > ${KUBECONFIG_FILE}.full.tmp # Switch working context to correct context kubectl --kubeconfig ${KUBECONFIG_FILE}.full.tmp config use-context ${CONTEXT} # Minify kubectl --kubeconfig ${KUBECONFIG_FILE}.full.tmp \ config view --flatten --minify > ${KUBECONFIG_FILE}.tmp # Rename context kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \ rename-context ${CONTEXT} ${NEW_CONTEXT} # Create token user kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \ set-credentials ${CONTEXT}-${NAMESPACE}-token-user \ --token ${TOKEN} # Set context to use token user kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \ set-context ${NEW_CONTEXT} --user ${CONTEXT}-${NAMESPACE}-token-user # Set context to correct namespace kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \ set-context ${NEW_CONTEXT} --namespace ${NAMESPACE} # Flatten/minify kubeconfig kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \ view --flatten --minify > ${KUBECONFIG_FILE} # Remove tmp rm ${KUBECONFIG_FILE}.full.tmp rm ${KUBECONFIG_FILE}.tmp
-
コマンドをソースにし、 Kubernetes クラスタに適用します。
source create-kubeconfig.sh
-
-
( * オプション * )クラスタにわかりやすい名前にコベ econfig の名前を変更します。クラスタのクレデンシャルを保護します。
chmod 700 create-kubeconfig.sh mv kubeconfig-sa.txt YOUR_CLUSTER_NAME_kubeconfig
次の手順
前提条件が満たされていることを確認したら、次は準備ができています "クラスタを追加"。