Virtual Private Endpoint(VPE)とは
VPEは、自分のVPCのサブネット内のIPを指定してIBM Cloudのサービスにアクセスできる機能です。あたかも自分のVPCのサブネットにIBM Cloudのサービスがあるかのように使えます。
まずはこちらのDocsと記事を読むと理解が早いと思います。
https://cloud.ibm.com/docs/vpc?topic=vpc-about-vpe
https://qiita.com/testnin2/items/4663169274975bdb7a9e
VPEは、対応サービスが徐々に増えてきており、ICOSも使えるようになったので試してみました。
対応サービスのリストは下記にあります。
https://cloud.ibm.com/docs/vpc?topic=vpc-vpe-supported-services
VPCを作成
VPCはあらかじめ定義しておきます。今回は、東京リージョンの3つのAvailability Zoneで構成し、各ゾーンに1つずつサブネットを作成しておきます。10.244.0.0/24, 10.244.64.0/24, 10.244.128.0/24のサブネットを作りました。
VPE画面にアクセス
左上のメニューボタンから、VPCインフラストラクチャ > エンドポイント・ゲートウェイを選択します。
作成ボタンを押します。
今回は、東京リージョンのVPCに、東京リージョンのICOSへのエンドポイント・ゲートウェイを作成します。
エンドポイント・ゲートウェイが作られたら、東京リージョンの各ゾーンに1つずつVPE用のIPを予約します。
VPC内の仮想サーバーから動作確認
それぞれのサブネットに1台ずつ仮想サーバーを作成しました。
通常、s3.direct.tok.ap.cloud-object-storage.appdomain.cloudは、161.26.x.xに名前解決されます。今回、VPEを使って、10.244.x.xがICOSのエンドポイントとして動作するよう設定した事により、ゾーン1内からの名前解決要求については、自動的にIBM Cloud内のDNSで、s3.direct.tok.ap.cloud-object-storage.appdomain.cloudが10.244.0.6に名前解決されるようになっていました。
(10.244.0.6を使うために、IPアドレスの直指定やhostsファイルでの解決は不要です。)
# nslookup s3.direct.tok.ap.cloud-object-storage.appdomain.cloud
Server: 161.26.0.7
Address: 161.26.0.7#53
Non-authoritative answer:
Name: s3.direct.tok.ap.cloud-object-storage.appdomain.cloud
Address: 10.244.0.6
#
上記の名前解決を使い、awscliで、bucket一覧を取得できました。
(credentialにはICOSのHMAC形式のaccess_key_idとsecret_access_keyを指定しています)
# cat ~/.aws/config
[default]
region = jp-tok-smart
output = json
#
# aws --endpoint-url https://s3.direct.tok.ap.cloud-object-storage.appdomain.cloud s3 ls
2020-10-21 09:56:51 bucket1021
2020-10-28 01:31:47 bucket1028
#
zone2のサーバー(10.244.64.0/24)では、s3.direct.tok.ap.cloud-object-storage.appdomain.cloudはゾーン2のVPEのIPに名前解決されます。
# nslookup s3.direct.tok.ap.cloud-object-storage.appdomain.cloud
Server: 161.26.0.7
Address: 161.26.0.7#53
Non-authoritative answer:
Name: s3.direct.tok.ap.cloud-object-storage.appdomain.cloud
Address: 10.244.64.4
#
zone3のサーバー(10.244.128.0/24)では、s3.direct.tok.ap.cloud-object-storage.appdomain.cloudはゾーン3のVPEのIPに名前解決されます。
# nslookup s3.direct.tok.ap.cloud-object-storage.appdomain.cloud
Server: 161.26.0.7
Address: 161.26.0.7#53
Non-authoritative answer:
Name: s3.direct.tok.ap.cloud-object-storage.appdomain.cloud
Address: 10.244.128.5
#
以上で、VPEを使って、自分のサブネット内のIPを指定し、ICOSが使えるようになりました。