2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IBM Cloud: 東京/大阪リージョンのprivate onlyの環境からインターネットに出ることなくCLIを実行する方法

2
Last updated at Posted at 2022-07-12

1. はじめに

現在は、東京/大阪リージョンで、private onlyのVSIからCLIを直接実行することはできない。
回避策として、publicへのアクセスが可能なproxyサーバーを指定してCLIを実行することもできるが、本稿では別の回避策を紹介したい。

以下では、自動的にCLI更新を試行しないようにあらかじめ以下が構成されている。

$ ibmcloud config --check-version false

2. private endpoint(CSE)経由での東京リージョンへの直接アクセス -> 失敗

これは、東京リージョンに、private.jp-tok.iam.cloud.ibm.comというendpointが存在しないためである。このendpointがないため、USリージョンなどにproxyを配置しても結局動かない。

実行例
$ ibmcloud login -a private.cloud.ibm.com --apikey @ibmcloud_apikey -r jp-tok
API endpoint: https://private.cloud.ibm.com
Targeted region jp-tok

Authenticating...
Post "https://private.jp-tok.iam.cloud.ibm.com/identity/token": dial tcp: lookup private.jp-tok.iam.cloud.ibm.com on 161.26.0.7:53: no such host

API endpoint:   https://private.cloud.ibm.com
Region:         jp-tok
Not logged in.
FAILED
Unable to authenticate.
debug情報
$ IBMCLOUD_TRACE=true ibmcloud login -a private.cloud.ibm.com --apikey @ibmcloud_apikey -r jp-tok 2>&1 | grep -i host
Host: private.us-south.globalcatalog.cloud.ibm.com
Host: private.us-south.globalcatalog.cloud.ibm.com
Host: private.us-south.globalcatalog.cloud.ibm.com
Host: private.us-south.globalcatalog.cloud.ibm.com
Host: private.us-south.globalcatalog.cloud.ibm.com
Host: private.us-south.globalcatalog.cloud.ibm.com
Host: private.jp-tok.iam.cloud.ibm.com
Post "https://private.jp-tok.iam.cloud.ibm.com/identity/token": dial tcp: lookup private.jp-tok.iam.cloud.ibm.com on 161.26.0.7:53: no such host

3. private endpoint(CSE)経由でのUSリージョンに一旦アクセスして東京リージョンに切り替え -> 成功

ただ、docsにはus-southとus-eastしかCSE経由ではアクセスできない旨の記述があるため、将来的にこの辺りの挙動は変わる可能性がある。
https://cloud.ibm.com/docs/cli?topic=cli-service-connection#cli-private-vpc

実行例
$ ibmcloud login -a private.cloud.ibm.com --apikey @ibmcloud_apikey -r us-south
API endpoint: https://private.cloud.ibm.com
Targeted region us-south

Authenticating...
Retrieving API key token...
OK

Targeted account itz-cp-jpn (xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) <-> xxxxxxx


API endpoint:     https://private.cloud.ibm.com
Region:           us-south
User:             xxxxxxx@xx.xxx.xxx
Account:          xxx (xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) <-> xxxxxxx
Resource group:   No resource group targeted, use 'ibmcloud target -g RESOURCE_GROUP'

$ ibmcloud target -r jp-tok
Switched to region jp-tok



API endpoint:     https://private.cloud.ibm.com
Region:           jp-tok
User:             xxxxxxx@xx.xxx.xxx
Account:          xxx (xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) <-> xxxxxxx
Resource group:   No resource group targeted, use 'ibmcloud target -g RESOURCE_GROUP'

$ ibmcloud is instances
(問題なく東京リージョンのサーバーが表示された)
Debug情報。この時はprivate.jp-tok.iam.cloud.ibm.comにアクセスしていない。
$ IBMCLOUD_TRACE=true ibmcloud login -a private.cloud.ibm.com --apikey @ibmcloud_apikey -r us-south 2>&1 | grep -i host
Host: private.us-south.globalcatalog.cloud.ibm.com
Host: private.us-south.globalcatalog.cloud.ibm.com
Host: private.us-south.globalcatalog.cloud.ibm.com
Host: private.us-south.globalcatalog.cloud.ibm.com
Host: private.us-south.globalcatalog.cloud.ibm.com
Host: private.us-south.globalcatalog.cloud.ibm.com
Host: private.us-south.iam.cloud.ibm.com
Host: private.us-south.iam.cloud.ibm.com
Host: private.us-south.accounts.cloud.ibm.com

$ IBMCLOUD_TRACE=true ibmcloud target -r jp-tok 2>&1 | grep -i host
Host: private.us-south.globalcatalog.cloud.ibm.com
Host: private.us-south.globalcatalog.cloud.ibm.com
Host: private.us-south.globalcatalog.cloud.ibm.com
Host: private.us-south.globalcatalog.cloud.ibm.com
Host: private.us-south.globalcatalog.cloud.ibm.com
Host: private.us-south.globalcatalog.cloud.ibm.com

4. TOKのVPC上にあるprivate endpoint(VPE)経由でのアクセス -> 失敗

TOKのVPC上でVPE経由でのCLIアクセスを利用するには、以下のVPEがサポートされている必要がある。詳細はこちら。

  • Account Management
  • Cloud Object Storage
  • Identity Access Management
  • Global Catalog
  • Global Search
  • Global Tagging
  • Usage Metering
  • Enterprise Management
  • Resource Controller
  • User Management

残念ながら、東京リージョンはまだこれらのVPEがまだサポートされていない。。

  • 東京リージョンの場合。例えば、Account Managementが存在しない。
    image.png
  • USリージョンの場合。image.png
実行例
$ ibmcloud login -a private.cloud.ibm.com --vpc --apikey @ibmcloud_apikey
API endpoint: https://private.cloud.ibm.com
Authenticating...
Retrieving API key token...
OK

FAILED
Get "https://private.accounts.cloud.ibm.com/v1/accounts": dial tcp: lookup private.accounts.cloud.ibm.com on 161.26.0.7:53: no such host.
Tip: The service you are accessing does not support the private endpoint in the current region.
Run the 'ibmcloud login -r REGION' command to switch the region and try again.
debug情報。Account Managementにアクセスできない。
$ IBMCLOUD_TRACE=true ibmcloud login -a private.cloud.ibm.com --vpc --apikey @ibmcloud_apikey -r jp-tok 2>&1 | grep -i host
Host: private.iam.cloud.ibm.com
Host: private.iam.cloud.ibm.com
Host: private.accounts.cloud.ibm.com
Get "https://private.accounts.cloud.ibm.com/v1/accounts": dial tcp: lookup private.accounts.cloud.ibm.com on 161.26.0.7:53: no such host.

5. DALのProxyサーバー経由でVPEアクセスする方法 -> 成功

  1. DALにVPCを構成し、proxyサーバーをsquidなどで構成する。

  2. DALに以下のVPEの構成を行う。

    • Account Management
    • Cloud Object Storage
    • Identity Access Management
    • Global Catalog
    • Global Search
    • Global Tagging
    • Usage Metering
    • Enterprise Management
    • Resource Controller
    • User Management
  3. TGWでTokyoおよびOsakaのVPCと、このDALのVPCを接続する。

  4. Security Groupを構成し、Tokyo/OsakaのCLIを呼び出すVSIからDALのproxyサーバーに対してアクセス許可を与える。

  5. Tokyo/OsakaのCLIを呼び出すVSIで、DALのproxyサーバー(以下の例では192.168.0.19)を利用するように構成する。参考

    $ export https_proxy=http://192.168.0.19:3128
    
  6. プライベートエンドポイント(private.cloud.ibm.com)と--vpcオプションを指定してアクセスする。

    $ ibmcloud login -a private.cloud.ibm.com --vpc --apikey @ibmcloud_apikey -r jp-tok
    API endpoint: https://private.cloud.ibm.com
    Targeted region jp-tok
    
    Authenticating...
    OK
    
    Targeted account xxx (xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) <-> xxxxxxx
    
    API endpoint:      https://private.cloud.ibm.com
    Region:            jp-tok
    User:              xxxxxx@xx.xxx.xxx
    Account:           xxx (xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) <-> xxxxxxx
    Resource group:    No resource group targeted, use 'ibmcloud target -g RESOURCE_GROUP'
    CF API endpoint:
    Org:
    Space:
    
    $ ibmcloud plugin install vpc-infrastructure
    
    $ ibmcloud is vpcs
    (問題なく東京リージョンのサーバーが表示された)
    
    $ ibmcloud is instances
    (問題なく東京リージョンのサーバーが表示された)
    

    以下より、VPEアクセスの際にはtokyoなどのキーワードが入らないアドレスにアクセスしていることがわかる。

    debug情報
    $ IBMCLOUD_TRACE=true ibmcloud login -a private.cloud.ibm.com --vpc --apikey @ibmcloud_apikey -r jp-tok 2>&1 | grep -i host
    Host: private.globalcatalog.cloud.ibm.com
    Host: private.globalcatalog.cloud.ibm.com
    Host: private.globalcatalog.cloud.ibm.com
    Host: private.globalcatalog.cloud.ibm.com
    Host: private.globalcatalog.cloud.ibm.com
    Host: private.globalcatalog.cloud.ibm.com
    Host: private.iam.cloud.ibm.com
    Host: private.iam.cloud.ibm.com
    Host: private.accounts.cloud.ibm.com
    Host: private.user-management.cloud.ibm.com
    Host: private.user-management.cloud.ibm.com
    
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?