NetApp Astra Service を使ってみる ①GKE事前準備編


初版: 2021/6/25
2021/10/3, 2022/2/2 新しい記事のリンクを追加

はじめに

前回の記事では、NetAppが提供するAstraの概要や特徴について記載しました。
続けて実際にAstraがどのようなものか解説していこうと思いますが、まずは利用するために必要な事項を以下に記載していきます。

本投稿は、Google Kubernetes Engine(GKE)を使用した手順をご紹介しています。

関連投稿一覧

GKEでNetApp Astraを使用するためには、以下の準備が必要です。

1. NetAppが提供するストレージサービスの用意

Astra Control Serviceは、永続ボリュームのバックエンドストレージとしてGoogleCloud用のCloud Volumes Serviceを使用します。
Google Cloudのマーケットプレイスから「NetApp Cloud Volume Service」を登録します。

利用規約などにチェックを入れ、再度「登録」ボタンを押してサービスの利用を開始します。

「プロダクトページに移動」ボタンをクリックします。

Cloud Volumes ServiceのAPIを有効にします。「有効にする」ボタンをクリックします。

「同意する」をクリックして進めます。

Cloud Volumes Serviceは、以下の2つのサービスタイプがあります。
NetApp Cloud Centralのグローバルリージョンマップを参照し、展開するリージョンと使用するサービスタイプをを決めておきます。

サービスタイプ 内容
CVS Google Cloud Consoleからボリュームを作成するときのサービスのデフォルトのサービスタイプです。軽〜中程度のパフォーマンス(最大100MiB/s)を必要とする汎用のLinuxおよびWindowsワークロード向けに設計されています。ストレージボリュームに2つのサービスレベル(シングルゾーンとマルチゾーンの高可用性)を提供し、リージョン内でのボリュームの可用性を保証します。
CVS-Performance 高スループット、低遅延を求めるLinuxおよびWindowsワークロードを対象とした高性能のサービスタイプです。Cloud Volumes Service APIからボリュームを作成するときは、こちらがデフォルトのサービスタイプとなります。3つのサービスレベルが利用でき、サービスレベルを動的に調整して、パフォーマンスをワークロードに合わせることができるため、アプリケーションのワークロードに必要なパフォーマンスに合わせてコストを最適化できます。

2. 必要なAPIを有効にする

Google Cloud console、または gcloud CLIを使って以下のAPIを有効にします。
APIを有効にする方法の詳細は、こちらのビデオを参照ください。

  • Kubernetes Engine API

  • Cloud Storage API

  • Google Cloud Storage JSON API

  • Service Usage API

  • Cloud Resource Manager API

  • Service Consumer Management API

  • Service Networking API

  • Service Management API

3. サービスアカウントの作成

AstraがKubernetesクラスタにアクセスするための専用のアカウントを作成します。

  • Google Cloud SDK (gcloudコマンド) がインストールされている環境で実施します。
  • サービスアカウントを作成するプロジェクトが指定されていることを確認します。
$ gcloud config list
[core]
account = [メールアドレス]
disable_usage_reporting = False
project = [プロジェクト名]

Your active configuration is: [default]
  • 作成するサービスアカウントの名前を変数に設定します サービスアカウント名は、6~30文字で、小文字で始まる、小文字の英数字である必要があります。(ハイフンは利用可)
$ SA=[サービスアカウント名]
例
$ SA=netapp-astra
$ echo $SA
  • プロジェクトを変数に設定します
$ PROJECT_ID=`gcloud config list --format="text(core.project)" | awk '{print $NF}'`
$ echo $PROJECT_ID
  • サービスアカウントを作成します
$ gcloud iam service-accounts create ${SA}
Created service account [netapp-astra].
  • 作成したサービスアカウントに必要な権限を追加します
Compute Network Viewer ロールの追加
$ gcloud projects add-iam-policy-binding ${PROJECT_ID} --member=serviceAccount:${SA}@${PROJECT_ID}.iam.gserviceaccount.com --role=roles/compute.networkViewer --condition=None

Kubernetes Engine Admin ロールの追加
$ gcloud projects add-iam-policy-binding ${PROJECT_ID} --member=serviceAccount:${SA}@${PROJECT_ID}.iam.gserviceaccount.com --role=roles/container.admin --condition=None

Cloud Volumes Admin ロールの追加
$ gcloud projects add-iam-policy-binding ${PROJECT_ID} --member=serviceAccount:${SA}@${PROJECT_ID}.iam.gserviceaccount.com --role=roles/netappcloudvolumes.admin --condition=None

Service Usage Viewer ロールの追加
$ gcloud projects add-iam-policy-binding ${PROJECT_ID} --member=serviceAccount:${SA}@${PROJECT_ID}.iam.gserviceaccount.com --role=roles/serviceusage.serviceUsageViewer --condition=None

Storage Admin ロールの追加
$ gcloud projects add-iam-policy-binding ${PROJECT_ID} --member=serviceAccount:${SA}@${PROJECT_ID}.iam.gserviceaccount.com --role=roles/storage.admin --condition=None
  • 上記のロールが追加されたことを確認します。
$ gcloud projects get-iam-policy ${PROJECT_ID} --flatten="bindings[].members" --format="table(bindings.role)" --filter=bindings.members:${SA}@${PROJECT_ID}.iam.gserviceaccount.com
ROLE
roles/compute.networkViewer
roles/container.admin
roles/netappcloudvolumes.admin
roles/serviceusage.serviceUsageViewer
roles/storage.admin

Google Cloud Console からの追加する場合は、こちらのビデオを参照ください。

4. サービスアカウントキーの作成

Google Cloud Consoleの「IAMと管理」にて「サービスアカウント」で、先程作成したサービスアカウントをクリックし、「キー」のタブから鍵を作成します。
「鍵を追加」をプルダウンして「新しい鍵を作成」をクリックします。

キーのタイプは「JSON」を選択します。「作成」ボタンをクリックすると、鍵がダウンロードされます。

鍵の作成方法の詳細については、こちらを参照ください。

5. VPCのネットワークピアリングを設定

Google CloudPlatformのCloudVolumesの「管理」のボタンをクリックし、「ボリューム」の「Create」ボタンをクリックしボリューム作成画面を表示します。
実際にはボリュームは作成しませんが、ボリューム作成の途中で表示されるコマンドを使用してVPCネットワークピアリングを設定します。

「Service Type」は、リージョンに適したサービスタイプを選択します。
「Region」で、該当のリージョンを選択します。
「Network Details」で、該当のVPCを選択します。VPCを作成していない場合は「VPCネットワーク」にて作成します。

VPCネットワークピアリングを設定していない場合は、次の通知が表示されます。


「VIEW COMMANDS HOW TO SET UP NETWORK REERING」ボタンをクリックします。

表示されたコマンドを実行してVPCネットワークピアリング用のグローバルIPを払い出し、VPCネットワークピアリングを作成します。
ネットワークピアリングの作成が完了したら「CANCEL」ボタンをクリックして画面を閉じます。

6. Kubernetesクラスタの作成

Kubernetesクラスタは、Astra Control ServiceからKubernetesクラスタを管理できるよう、以下の要件を満たしている必要があります。

項目 要件
サポートされるK8sバージョン v1.17-1.20
workerノードのイメージ Ubuntu またはContainer-Optimized OS をサポートします
K8sクラスタの状態 Online状態のworkerノードが最低1台必要です
Google Cloudのリージョン K8sクラスタは、NetApp Cloud Volumes Service がサポートされているリージョンで実行されている必要があります。Astra Control Serviceは、CVSとCVS-Performanceの両方のサービスタイプをサポートしています。
ネットワーク K8sクラスタは、Cloud Volumes Service とピアリングされているVPCに存在する必要があります
プライベートクラスタ クラスタがプライベートの場合、以下のAstra Control ServiceのIPアドレスを許可するようネットワークを設定する必要があります。
GKEクラスターの動作モード Standardモードを使用する必要があります。現時点では、Autopilotモードはテストされていません。
Astra Control ServiceのIPアドレス
54.164.233.140/32
3.218.120.204/32
34.193.99.138/32

GKEクラスタを作成していない場合は、Google Cloud Consoleから作成します。

使用するクラスタモードは、「標準」または「Autopilot」から選択します。
AutopilotはGKEの新しいモードで、Googleがworkerノードの基本的な管理を実施してくれます。(AutopilotモードはAstraではテストされておりません)
ここでは「標準」を選択します。

「クラスタの基本」タブで、クラスタの名前やゾーンなどを選択します。

「ネットワーキング」タブで該当のVPCを選択します。

「作成」ボタンを押してクラスタを作成します。

ここまで完了したら、次は登録したクラスタ上のアプリケーションのデータ保護をAstraのUI上で操作してみたいと思います。
NetApp Astra Service を使ってみる ③UIの操作編に続きます。