概要
この度、Code EngineのVirtual Private Endpoint(VPE)機能が追加されました。
IBM Cloud Virtual Private Endpoint (VPE) for VPC を使用すると、サポートされている IBM Cloud サービスにプライベートネットワークからアクセスできます。具体的には、VPC のネットワークから、選択した IP アドレス (VPC のサブネットから割り振られるアドレス) を使用して接続することができます。
本記事では、Code EngineのVPE利用の設定方法を記載します。
- VPE Gatewayの作成
- Code Engineアプリのprivate公開
参考
本記事は以下のdocsに従っています。
-
Code Engine での仮想プライベート・エンドポイントの使用
VPE機能のより詳細な情報については、以下を参照ください。 - 仮想プライベート・エンドポイント・ゲートウェイについて
- IBM Cloud: VPCのVirtual Private Endpoint機能について試してみた
設定VPE手順
本章では、ibmcloud CLIを用いてアプリケーションをVPE経由で公開する手順を記載します。
前提条件
- 使用可能なVPCがある
- 1つ以上の仮想サーバーを作成している
- 浮動IPを予約し、ssh鍵を用いて仮想サーバーに接続できる
- IBM CloudポータルにてUI・CLI・APIを使用できる
- アプリをデプロイできるCode Engineのプロジェクトを作成している
作業手順
VPEのオーダー
初めにVPEをオーダーします。
左上のハンバーガーメニューより、VPC INfrastructure
->Virtual private endpoint gateways
を選択します。
作成
をクリックし、各項目を入力します。
ここで、リージョンには指定したいVPCがある場所を選択します。
Cloud service
にCode Engine
を選択し、Cloud service regions
にCode Engineプロジェクトを作成したリージョンを選択します。
Reserve IP
にて、VPEに割り振るIPをVPCのSubnetから決定します。
アプリのprivate公開
1. ibmcloud CLIにてログインし、アプリを公開するCode Engineのプロジェクトを選択します。
$ ibmcloud login -apikey [APIキー] -g [リソースグループ] -r [Code Engineプロジェクトのリージョン]
$ ibmcloud ce project select -n [プロジェクト名]
2. コンテナ・レジストリーより、指定のアプリをprivate公開でにデプロイします。
今回はコンテナ・イメージにCode Engineのチュートリアルにあるhellowaroldイメージを指定しました。
アプリで使用するportはデフォルトで8080
ですが、アプリがポート 8080 以外のポートで listen する場合は、--port xxx
で指定します。
$ ibmcloud ce application create -n myapp-hello --image icr.io/codeengine/helloworld --visibility=private
Creating application 'myapp-hello'...
The Route is still working to reflect the latest desired specification.
Configuration 'myapp-hello' is waiting for a Revision to become ready.
Ingress has not yet been reconciled.
Waiting for load balancer to be ready.
Run 'ibmcloud ce application get -n myapp-hello' to check the application status.
OK
https://myapp-hello.xxxxxxxxxxx.private.jp-tok.codeengine.appdomain.cloud
作成されたURLにprivateが含まれていればIBM Cloud外からのアクセスはできません。
private公開になっているか確認
同VPC内のWindowsサーバーのブラウザで確認してみます。
自PC(IBM Cloud外)からアクセスしてみます。
アクセスに失敗したので、private公開になっていることが確認できました。
curlで確認します。
VPEを作成したVPCにある仮想サーバーからcurlしてみます。
以下のように応答が返ってきました。
root@takamura-scc-target-ubuntu2004:~# curl https://myapp-hello.xxxxxxxxx.private.jp-tok.codeengine.appdomain.cloud
Hello World from:
. ___ __ ____ ____
./ __)/ \( \( __)
( (__( O )) D ( ) _)
.\___)\__/(____/(____)
.____ __ _ ___ __ __ _ ____
( __)( ( \ / __)( )( ( \( __)
.) _) / /( (_ \ )( / / ) _)
(____)\_)__) \___/(__)\_)__)(____)
自PCからも試してみます。
以下のようにcurlに失敗しました。
$ curl https://myapp-hello.xxxxxxxxx.private.jp-tok.codeengine.appdomain.cloud
curl: (6) Could not resolve host: myapp-hello-xxxxxxxxx.private.jp-tok.codeengine.appdomain.cloud
注意
VPE suport前に作成されたプロジェクトではVPEを利用できません。VPEが必要な場合は、Caseにて既存プロジェクトをVPE対応に変更することが可能です。
GUIで確認する方法
新規application作成画面にて、以下のような注意書きが表示される場合はサポートされていません。
CLIで確認する方法
以下のコマンドを実行し、Application Private Visibility Supported
がFalse
になっている場合、VPEはサポートされていませんのでご注意ください。
$ ibmcloud ce project get -n myproject
Getting project 'myproject'...
OK
Name: myproject
ID: abcdabcd-abcd-abcd-abcd-f1de4aab5d5d
Status: active
Enabled: true
Application Private Visibility Supported: false ### 確認する行 ###
Selected: true
Region: us-south
Resource Group: default
Service Binding Service ID: ServiceId-1234abcd-abcd-abcd-1111-1a2b3c4d5e6f
Age: 52d
Created: Tue, 28 Sep 2021 05:12:16 -0500
Updated: Tue, 28 Sep 2021 05:12:19 -0500
Quotas:
...