BlueXPを使って、Google Cloud上にNetApp Cloud Volumes Serviceを作成してみた


# はじめに
[「BlueXPのGUIにより、TokyoとOsakaにCVOを作成」](BlueXPのGUIにより、TokyoとOsakaにCVOを作成)の記事ではAmazon Cloud上にNetApp Cloud Volulmes ONTAP(CVO)の作成手順をご紹介しました。この記事ではGoogle Cloud上にNetApp Cloud Volumes Service(CVS)を作って見たいと思います。

そもそも、BlueXP、NetApp Cloud Volulmes ONTAP(CVO)とNetApp Cloud Volumes Service(CVS)とは？疑問をお持ちの方は、こちらの[Keyword](https://qiita.com/heyanxia/items/47772e6de946d9c87705#keyword)、またこちらのドキュメント [Cloud Volumes ONTAP documentation](https://docs.netapp.com/us-en/cloud-manager-cloud-volumes-ontap/)、[Cloud Volumes Service for Google Cloud documentation](https://docs.netapp.com/us-en/cloud-manager-cloud-volumes-service-gcp/index.html)、[NetApp Cloud Volumes Service for AWS documentation](https://docs.netapp.com/us-en/cloud_volumes/aws/)から詳細を確認できます。せっかくなら、最近話題になっているOpenAIの[ChatGPT](https://openai.com/blog/chatgpt/)に聞いて見ましょう。(OpenAIのアカウントを持っていない方はこちらの[OpenAIのアカウント作成](https://qiita.com/s_yosh1d/items/6774760fd046c0314618#1-openai%E3%81%AE%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E4%BD%9C%E6%88%90)を参考して簡単に作れます。)
* BlueXP
SaaSモデルとして、ハイブリッド・マルチクラウドのストレージやデータサービスを統合コントロールできるサービスです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/e705a000-c02f-28d6-214a-2b39fcf87c5a.png)
* NetApp Cloud Volulmes ONTAP(CVO)
ONTAPストレージオペレーティングシステムを使用したクラウド上のストレージサービスです。これにより、クラウド上にあるデータを管理し、保護し、最適化することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/d21dfaa6-e1dd-61c5-89b2-08f49e39c938.png)
* NetApp Cloud Volumes Service(CVS)とNetApp Cloud Volumes Service for Google Cloud
高いパフォーマンス、スケーラビリティ、可用性を提供し、オンプレミスとクラウド間でのデータの移行や、ハイブリッドクラウド環境の構築も可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/0e3f8ecc-dca6-04b4-a82b-5cf732cb22a5.png)
他にもテストとして、BlueXP ConnectorをGoogle Cloud Tokyoリージョンに作成するTerraform templateサンプルやCVSの作成方法など聞くと、色々教えてくれて面白いです。Templateはある程度のサンプルなので、細かい設定は要確認です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/a3c291eb-5734-96e3-76e3-46ccf0ad4708.png)
では、今回はBlueXPのGUIからNetApp Cloud Volumes Service(CVS)をGoogle Cloud上にデプロイして見たいと思います。

# 手順
1.BlueXP Connectorを作成
2.Cloud Volumes Service(CVS)を作成
3.CVSにVolumeを追加・確認
[Google Cloud Architecture](https://googlecloudcheatsheet.withgoogle.com/architecture)を利用して作成した構成イメージ：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/89b32d90-3fb1-3310-8e0a-bdac362fd501.png)

# 1.BlueXP Connectorを作成
こちらの記事[「Google Cloud Platform上にNetApp BlueXP Connectorを作成」](https://qiita.com/heyanxia/items/2d98f4e58507ae223b65)を参照して、簡単にBlueXP Connectorを作成することができます。BlueXPのGUIに`Active`と表示されることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/59692c34-f5d8-2193-0573-2165bb6374fa.png)

# 2.Cloud Volumes Service(CVS)を作成
こちらの[Workflow for managing cloud volumes](https://cloud.google.com/architecture/partners/netapp-cloud-volumes/workflow?hl=en_US)の流れを参照して、Google Consoleから`Enable billing and APIs-> Subscribe CVS-> BlueXPのGUIからCVSを追加`の順番で行きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/41b5f944-319f-61f7-066a-f525cac8c80c.png)
* Enable billing and APIs
[Enabling billing and APIs](https://cloud.google.com/architecture/partners/netapp-cloud-volumes/before-you-begin-cloud-volumes?hl=en_US)の手順に従い、projectを確認してコマンドを実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/f749bbf6-a17c-95d5-90ee-46a772e5023a.png)
`gcloud --project=Your_project service list |grep service`で必要なAPI Serivceが`enabled`になってるかを確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/344508a9-e632-706a-91c5-651282a0a7cf.png)
* Subscribe CVS
こちらの[NetApp TV:Cloud Volumes Service Demo](https://www.netapp.tv/player/25370/stream?assetType=movies&mcid=88947363915153731162653798198544845839)も参照して、Google Cloud上のCVSサービスを`Subscribe`します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/68671c39-5efa-13d6-becb-233c411483e3.png)
Tips：`pin`を押すと、次回`PINDED`の所から見つけやすいです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/76135e8d-9a85-b833-3923-a082596af706.png)
* BlueXP GUIからCVSを追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/4a1eccd0-6192-69f3-f4b4-e13c2144d977.png)
次は、`Cloud Volumes Service Credentials`を作ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/087fd72b-5a9b-43b6-54a7-30e4814582f2.png)
上記の`required permission`をクリックして、[「Set up a service account」](https://docs.netapp.com/us-en/cloud-manager-cloud-volumes-service-gcp/task-set-up-google-cloud.html#enable-the-cloud-volumes-service-api)を参照して、Google ConsoleからCVSのService Accountを作ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/f84c1a9a-eab9-dafc-b14d-3df384f60de6.png)
`Service Account Credentials`のKey(JSON)を保存して、同じprojectであることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/71ab6c56-1317-360c-a9a1-5861e5e76ffe.png)
Credentialsをそのまま全てコピーして、BlueXPの方に`Apply`します。問題がなければ、作成したprojectが選べるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/05f5558e-2957-9d00-7079-99a1ab645a0d.png)
`Continue`を押して、BlueXPにWorking Environmentとして追加されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/d2288b1a-616d-7668-332e-5f6610c24ad5.png)
ここまでは、Cloud Volumes Service(CVS)を作成できました。次はVolumesを追加して確認します。

# 3.CVSにVolumeを追加・確認
上記の作成したCVSにVolulmeを追加する方法は幾つかがあります。事前に`Region`と`VPC Network`などの情報を確認してBlueXPのGUIから簡単に追加できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/74abcaf3-c578-13f7-b3d7-b537c96baaf5.png)
`Region`に関しては、`Tokyo`と`Osaka`に作成できる`Service Type`が異なっています。こちらの[Global Regions Maps](https://bluexp.netapp.com/cloud-volumes-global-regions#cvsGc)により、現在Tokyoは`CVS-Performance`、Osakaは`CVS`となっています。それぞれの違いはこちらの[Service Type](https://cloud.google.com/architecture/partners/netapp-cloud-volumes/service-types?hl=en_US)から詳細を確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/17b33d15-3c81-69f4-32a9-19357be8f6cd.png)
今回はGoogle Consoleから先程`PIN`した`Cloud Volumes`をクリックして、`CREATE`します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/31697cad-76ea-de63-9bc4-53f0223e8a96.png)
* Create Volume `CVS-performance` in Tokyo
Projectを間違いない様に、`CVS-Performance`と`asia-northest1`(Tokyo)を選びます。この場合は`Region`の所に`asia-northest2`(Osaka)が出てこないです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/af572160-e19a-aa75-bd4a-ff9048ba0444.png)
デモのため、`Service Level`は`Standard`にします。`Volume Path`は自動生成のままでも手動入力でも大丈夫です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/5b84c9fe-b638-3ca6-1601-e4b0c24ea6ad.png)
Networkに関しては、`default`また自作のVPCどちらでも初めての場合は、`network peering`を設定する必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/70bd311b-f71a-3985-2bfa-0fb86ed2f1f0.png)
提示のメッセージをクリックして、`Commands to set up VPC peering`のコマンドを同じprojectであることを確認し、そのままコピーして実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/19abfc14-a362-d483-fb23-bcd3d8773f24.png)
問題なく`VPC peering`が出来上がると、エラーメッセージがなくなり、`SAVE`して`creating`になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/6c079cd1-1c8d-d77c-8f5d-5d789b250abd.png)
暫く待つと、BlueXPのGUIとGoogle Consoleから作成したVolumeがAvailableになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/2bff6312-b2f0-2be6-bb8e-5c58d76a8eb5.png)

* Volumeをmount
BlueXPのGUIから`Mount the volume`をクリックして、手順を参照できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/df06b58c-bb8e-90ec-13ea-653438d12b9a.png)
こちらの[ドキュメント](https://cloud.google.com/architecture/partners/netapp-cloud-volumes/creating-nfs-volumes?authuser=2)により、Google Consoleから、Volumeの`Mount Instructions`をクリックして手順を参照できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/b1389ec2-a2d5-d691-98ac-7b62fc1a5572.png)
BlueXPのConnectorにSSHで入って、ガイドのコマンドをコピーしてmountします。mountができたら、テストデータを書き込んで、BlueXPのGUIからデータが増えたのを確認できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/07488884-46e5-8309-70c9-49c97d4b7609.png)


# 注意事項＆ChatGPTを使ってDebug
先頭にも書かれているように、ChatGPTにNetApp Volumes ONTAPやNetApp Cloud Volumes Serviceなどを尋ねると答えてくれました。せっかくなので、mountの時エラーになった場合は再びChatGPTに投げてみたら、色々考えられる原因を教えてくれて、Debugとして助かりました。

1.`Connection timed out`
ChatGPTが答えてくれた通りに、`Connection timed out`の場合は、まずNetworkの設定を確認します。Client(今回はBlueXP connection)側とServer(CVS)両方のVPC firewallをちゃんとチェックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/104600ba-791b-b986-4b15-d8d2b05f3522.png)
`VPC nectworks ->FIREWALLS`の方を行って、`port`、`Ingress`と`Egress`などを確認して、`ADD FIREWALL RULE`で追加・編集できます。今回はテストの為、`Apply to all`に設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/e5bf25b9-dd92-9901-4cd3-4bc8f710c08f.png)
2. `Server denied`
またChatGPTに聞いて見たら、考えられる原因を箇条書きでいくつかリストしてくれました。その中でヒントを考えて、今回確かに自分はVolumeの`Export policy`に引っ掛かりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/f2af439c-3766-c760-c10c-0ca6db89ca56.png)
Volumeの`Export policy`を確認して、SSHで入るclient(この記事はBlueXPのConnector)のIPやaccess権限があるかをチェックします。ない場合は`Edit`ですぐに追加できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/558d0a1a-7cb4-0790-e31d-f2232fa5a444.png)
3. `allow-ingress-from-iap`
BlueXPのConnectorからSSHでログインする時、下記のようなメッセージが出る場合は、[こちらのガイド](https://cloud.google.com/iap/docs/using-tcp-forwarding)を参照して解決できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/4b69ec4b-b696-37ef-43c7-765b1f28ff14.png)
`ConnectorのVPC ->Firewall ->Create a firewall rule`をガイドに従って追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2807172/39d64ca6-c24b-8d19-7cb4-7c0a28ad0183.png)
# 最後に
BlueXPのGUIからGoogle Cloud上にNetApp Cloud Volumes Service(CVS)を作ってみました。途中で問題になった時、ChatGPTを使って簡単にDebugができました。今回は`Tokyo(asia-northest1)`に`CVS-Performance`typeのVolumeを作成したが、`Osaka(asia-northeast2)`に`CVS`typeのVolumeを作成する手順がちょっと異なるので、次回また検証してご紹介したいと思います。

# 参考リンク
1.[NetApp Cloud Volumes Service for Google Cloud documentation](https://cloud.google.com/architecture/partners/netapp-cloud-volumes?hl=en_US)
2.[Google Cloud Platform:Creating a custom role](https://cloud.google.com/iam/docs/creating-custom-roles#creating_a_custom_role)
3.[Google Cloud Platform:Creating a service account](https://cloud.google.com/iam/docs/creating-managing-service-accounts#creating)
4.[BlueXP: Learn about Connectors](https://docs.netapp.com/us-en/cloud-manager-setup-admin/concept-connectors.html#when-a-connector-is-required)
5.[Google Cloud region](https://cloud.google.com/compute/docs/regions-zones?hl=en)
6.[Global Regions Maps: Cloud Volumes Service for Google Cloud](https://bluexp.netapp.com/cloud-volumes-global-regions#cvsGc)
7.[Size your system in GCP](https://docs.netapp.com/us-en/cloud-manager-cloud-volumes-ontap/task-planning-your-config-gcp.html#understand-storage-limits)
8.[NetApp TV:Cloud Volumes Service Demo](https://www.netapp.tv/player/25370/stream?assetType=movies&mcid=88947363915153731162653798198544845839)
9.[Google Cloud Platform上にNetApp BlueXP Connectorを作成](https://qiita.com/heyanxia/private/2d98f4e58507ae223b65)
10.[NetApp Cloud Volumes Service for Google Cloud doc: private services access](https://cloud.google.com/architecture/partners/netapp-cloud-volumes/setting-up-private-services-access?hl=en_US)
11.[NetApp Cloud Volumes Service for Google Cloud: Workflow for managing cloud volumes](https://cloud.google.com/architecture/partners/netapp-cloud-volumes/workflow?hl=en_US)
12[Creating and managing NFS volumes](https://cloud.google.com/architecture/partners/netapp-cloud-volumes/creating-nfs-volumes?authuser=2)
13.[Mounting NFS exports to Compute Engine instances](https://cloud.google.com/architecture/partners/netapp-cloud-volumes/creating-nfs-volumes?authuser=2#mount_nfs_exports_to_compute_engine_instances)
14.[Using IAP for TCP forwarding](https://cloud.google.com/iap/docs/using-tcp-forwarding)
15.[Cloud Volumes Service for Google Cloud: Mount cloud volumes](https://docs.netapp.com/us-en/cloud-manager-cloud-volumes-service-gcp/task-create-volumes.html#create-volumes)