Code Engine でサービス・エンドポイントを使用する

すべての IBM Cloud® Code Engine プロジェクトは、 IBM Cloud® サービス・エンドポイントとの統合を提供している。 このサポートにより、 クラシック・インフラストラクチャー Code Engine ワークロードに接続し、 IBM Cloud ネットワーク内にとどまることができる。

Code Engine ワークロードの可視性を制御し、アプリケーションまたは機能をパブリックまたはプライベートのエンドポイントに公開するかどうかを指定できます。 visibility = private 用に構成されたアプリケーションまたは機能は、サービス・エンドポイントを介してアクセスされます。 サービス・エンドポイントを介してアクセスされるアプリケーションや機能は、 IBM ネットワークを離れず、 IBM Cloud ネットワーク内に留まる。

パブリック・エンドポイント

パブリック・ネットワーク上のデプロイメントには、パブリック・エンドポイントを使用して接続します。 プロビジョン時には、すべてのデプロイメントでパブリック・エンドポイントがデフォルト・オプションになります。 デプロイメントに接続するには、インターネットにアクセスできる環境を使用しなければなりません。

プライベート・エンドポイント

プライベート・ネットワーク上のサービス・エンドポイントを使用するデプロイメントでは、パブリック・インターネットからはアクセスできないエンドポイントを利用できます。 すべてのトラフィックは、Code Engine デプロイメント専用のハードウェアにルーティングされ、IBM Cloud プライベート・ネットワーク上に留まります。 このエンドポイントを発着するトラフィックはすべて無料であり、トラフィックが IBM Cloud のままであることを条件に料金は発生しない。 使用環境から IBM Cloud プライベート・ネットワークにアクセスできるようになった後は、インターネット接続がなくてもデプロイメントに接続できます。

Code Engine プライベート・エンドポイントを持つアプリケーション・デプロイメントは、プライベート・ネットワーク内のどのアカウントアクセス可能であり、各インスタンスへのアクセスには認証が必要である。 このアクセスを特定のIPアドレス、IPアドレスの範囲、 IBM Cloud サービス、またはVPCに制限するには、 コンテキスト・ベースの制限ルールを 構成します。

サービス・エンドポイントを使用した Code Engine リソースの安全な管理

  1. プライベート・エンドポイントを使用するCode Engineプロジェクトを指定します。 CLI でのみプライベート・エンドポイントを使用するように Code Engine プロジェクトを構成できます。 プロジェクトを作成するには、--endpoint=privateオプションを指定して ibmcloud ce project createコマンドを使用します。

    ibmcloud ce project create --name myproject --endpoint=private
    

    プロジェクトがactive状況になるまで待ちます。 CLI では、ibmcloud ce project get コマンドを使用してプロジェクトの状況を確認できます。

    既存の Code Engineプロジェクトでプライベート・エンドポイントを使用する場合は、--endpoint=privateオプションを指定してibmcloud ce project selectコマンドを使用します。

    ibmcloud ce project select --name myproject --endpoint=private
    

    **project createコマンドおよびproject select**コマンドでは、--endpointオプションが明示的に指定されていない場合、動作はシステムによって決定されます。 IBM Cloud CLI がprivate.cloud.ibm.comに接続されている場合、Code Engineプロジェクトは--endpointprivateであるかのように動作します。 IBM Cloud CLI がcloud.ibm.comに接続されている場合、Code Engineプロジェクトは--endpointpublicであるかのように動作します。

  2. 新しいプロジェクトを作成せず、既存のプロジェクトを選択し、アプリケーションをプライベート・エンドポイントにのみ表示したい場合は、既存のプロジェクトがプライベート表示可能なアプリケーションをサポートしていることを確認します。 ibmcloud ce project getコマンドを使用して、Application Private Visibility Supportedの出力がtrueに設定されていることを確認します。 値がfalseの場合、IBM サポートへの連絡は、既存のプロジェクト内でこの機能を有効にします。

    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:
    Category                                  Used  Limit
    App revisions                             1     60
    Apps                                      1     20
    Build runs                                1     100
    Builds                                    2     100
    Configmaps                                2     100
    CPU                                       0     64
    Ephemeral storage                         0     256G
    Instances (active)                        0     250
    Instances (total)                         0     2500
    Job runs                                  0     100
    Jobs                                      0     100
    Memory                                    0     256G
    Secrets                                   6     100
    Subscriptions (cron)                      0     100
    Subscriptions (IBM Cloud Object Storage)  0     100
    Subscriptions (Kafka)                     0     100
    
  3. プライベート・エンドポイントからしか見えないアプリケーションや関数を作成する。 --visibility=private オプションを指定して、 ibmcloud ce application create または ibmcloud ce function create コマンドを使用します。 また、コンソールを使用してアプリケーションや関数を作成または更新し、 アプリの可視性を 設定することもできます。

    ibmcloud ce application create -n myapp --visibility=private
    

サービスエンドポイントを使用してアプリケーションに安全にアクセスする

  1. Code Engineプロジェクトから、アプリケーションが visibility=private設定で構成されていることを確認します。 プライベート・エンドポイントを使用したアプリケーションのデプロイを 参照してください。

  2. プライベート・ネットワークに公開されている Code Engineアプリケーションの URL を取得します。 URL の形式は次のとおりです<app>.<uuid>.private.<region>.codeengine.appdomain.cloud

    • Code Engine コンソールから、アプリケーションの [Domain mappings(ドメインマッピング)] タブに移動して、アプリケーションの可視性と使用可能な URL を表示します。

    • Code Engine CLI から、 --option url オプションを指定して ibmcloud ce application get コマンドを使用します。 以下の例では、 myapp の可視性が visibility=private に設定されているため、このコマンドで --option url を指定すると、プライベート・ネットワークに URL出力される。

      ibmcloud ce application get -n myapp -output url
      

      出力例

      http://myapp.4svg40kna19.private.us-south.codeengine.appdomain.cloud
      
  3. IBM Cloud プライベート・ネットワーク内からアプリケーションを呼び出す(例えば、 IBM Cloud シェルから アプリケーションを呼び出す)。

    myappアプリケーションは、単純な Hello World アプリケーションです。 cURL, Hello World を使って myapp アプリケーションを実行すると、 が返される。 例えば、 IBM Cloud シェルから実行する:

    curl http://myapp.4svg40kna19.private.us-south.codeengine.appdomain.cloud
    

サービス・エンドポイントを使用した機能への安全なアクセス

  1. Code Engine プロジェクトから、あなたの機能が visibility=private 設定で構成されていることを確認します。 プライベート・エンドポイントを使用した機能のデプロイ を参照してください。

  2. プライベートネットワークに公開されている Code Engine 関数の URL を取得する。 URL の形式は次のとおりです<function>.<uuid>.private.<region>.codeengine.appdomain.cloud

    • Code Engine コンソールから、関数の Domain mappings タブに移動し、関数の可視性と使用可能な URL を表示します。

    • Code Engine CLI から ibmcloud ce function get コマンドを使用します。 以下の例では、 myfunction の可視性が visibility=private に設定されているため、このコマンドはプライベート・ネットワークに URLを出力する。

      ibmcloud ce function get -n myfunction
      

      出力例

      http://myfunction.1abc23def19.private.us-south.codeengine.appdomain.cloud