仮想サービスの作成

サービス・メッシュの仮想サービスを作成します。

重要

続行する前に、仮想サービス・リソースに適切なOCIポリシーを設定する必要があります。詳細は、仮想サービスに必要なIAMポリシーを参照してください。
    1. ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「コンテナおよびアーティファクト」で、「サービス・メッシュ」をクリックします。
    2. 「サービス・メッシュ」をクリックします。
    3. 「サービス・メッシュ」ページの左側にあるコンパートメントのリストから、コンパートメントを選択します。
    4. メッシュのリストから、仮想サービスを作成するメッシュ名をクリックします。
    5. メッシュの詳細ページの「仮想サービス」表で、「仮想サービスの作成」をクリックします。
    6. 「仮想サービスの作成」パネルで、次の詳細を指定します:
      • 名前: 仮想サービスの名前。名前は同じサービス・メッシュ内で一意である必要があり、作成後に変更できません(変更不可)。名前は、文字またはアンダースコアで始まり、文字、数字、ハイフンまたはアンダースコアが続く必要があります。長さは1から255文字です。機密情報を入力しないでください。
      • 説明: (オプション)仮想サービスの説明。機密情報を入力しないでください。
      • コンパートメント: 仮想サービスを作成するコンパートメント。デフォルト・コンパートメントは前に選択したコンパートメントですが、作業権限を持つ任意のコンパートメントを選択できます。
      • デフォルト・ルーティング・ポリシー: (オプション)仮想サービス内の仮想デプロイメント全体のデフォルトのルーティング・ポリシー。仮想サービスのルート表が存在しない場合、仮想サービスはデフォルトのルーティング・ポリシーを適用します。

        ルーティング・オプションは次のとおりです。

        • 均一: 仮想デプロイメント間でトラフィックを均一に分散します。
        • 拒否: デフォルト・オプションです。ルーティングを無効にします。仮想デプロイメントにトラフィックを送信しません。

        詳細は、仮想サービスでのトラフィックのルーティングを参照してください。

      • mTLSモード: (オプション)メッシュ内の他の仮想サービスまたはイングレス・ゲートウェイからのリクエストを受信するときに使用するmTLS認証モード。セキュリティのレベルを選択します。
        • Disabled: raw TCPトラフィックを受け入れます。このメッシュ内の最小仮想サービスは、mTLS認証モードを使用できません。
        • 許容: mTLSトラフィックとRAW TCPトラフィックの両方を受け入れます。このメッシュ内の仮想サービスは、許容モードまたは厳密モードのいずれかを使用します。
        • 厳格: mTLSトラフィックを受け入れます。このメッシュ内のすべての仮想サービスは、「厳密」モードを使用する必要があります。

        サービス・メッシュでのmTLSの使用の詳細は、サービス・メッシュでのmTLSの使用を参照してください。

      • 証明書最大有効性(日): 仮想サービスの作成時に証明書の最大有効性を設定します。
        ノート

        最大有効期間は、最小45日から最大90日までです。デフォルト値は45日です。
      • ホスト: (オプション)コール元が使用する仮想サービスのDNSホスト名。接頭辞形式のワイルドカード・ホスト名をサポートします。最大10個の DNSホスト名を指定します。有効なホスト名の例を次に示します: www.example.com, *.example.com, *.com, www.example.com:9080, *.example.com:9080。仮想サービスにTCP仮想デプロイメントのみがある場合、省略できます。
        警告

        このリソースでは、サービス・メッシュ予約ポート15000、15003、15006および9901を使用しないでください。

        HTTPベースの仮想デプロイメントを使用するサービスの場合、ホスト名は、サービスとの通信に使用されるHTTPホスト・ヘッダーと一致する必要があります。不一致が発生した場合、このサービスに接続しているアプリケーションは404エラーを受け取ります。HTTPホストヘッダーの形式は、標準ポート80および443の場合は example.comです。9080などの非標準ポートの場合、ホスト・ヘッダーの形式はexample.com:9080です。

        TLS_PASSTHROUGHに基づく仮想デプロイメントを持つサービスの場合、ホスト名は、サービスとの通信に使用されるサーバー名指示(SNI)と一致する必要があります。不一致が発生した場合、このサービスに接続しているアプリケーションはTLSハンドシェイク・エラーを受信します。このサービスでは、プリフィクス・フォームでワイルドカードを使用できますが、包括ワイルドカード(*)は許可されません。

        SNIはHTTPホスト・ヘッダーに似ていますが、TLS用です。ただし、SNIにはポート情報は必要ありません。たとえば、SNI example.comおよび非標準ポート9080でKubernetesサービスを実行している場合は、仮想サービスのホストとしてexample.comを定義する必要があります。

        重要

        ホスト・エントリは、エグレス専用サービスには必要ありません。エグレス専用サービスは、他のサービスからのコールを受信しないマイクロサービスです。

        さらにホストを追加するには、「+別のホストの追加」をクリックします。

      • +別の仮想デプロイメントの追加: このボタンは、この仮想サービスに仮想デプロイメントを追加します。

        仮想デプロイメントの詳細は、仮想デプロイメントの管理を参照してください。

      • +別のルート表の追加: この仮想サービスにルーティング表を追加します。

        ルート表の詳細は、仮想サービス・ルート表の管理を参照してください。

    7. (オプション)仮想サービスにタグを追加するには、「拡張オプションの表示」をクリックします。タグ付けの詳細は、リソース・タグを参照してください。
    8. 「Create virtual service」をクリックします。
  • virtual-service createで使用可能な操作を確認するには、次を使用します:

    oci service-mesh virtual-service create -h

    CLIを使用して仮想サービスを作成するには、oci service-mesh virtual-service createを実行して仮想サービスを作成します:

    oci service-mesh virtual-service create --name "<name>" --compartment-id <compartmentId> --description <description> --mesh-id <meshId> --default-routing-policy <defaultRoutingPolicy> --hosts  <hosts> --mtls <mtls>

    説明:

    • <name>: 仮想サービスの名前。名前は同じサービス・メッシュ内で一意である必要があり、作成後に変更できません(変更不可)。名前は、文字またはアンダースコアで始まり、文字、数字、ハイフンまたはアンダースコアが続く必要があります。長さは1から255文字です。機密情報を入力しないでください。
    • <compartmentId>: 仮想サービスが属するコンパートメントのOCID。
    • <meshId>: この仮想サービスが作成されるサービス・メッシュのOCID。
    • <description>: (オプション)仮想サービスの説明。機密情報を入力しないでください。
    • <defaultRoutingPolicy>: 仮想サービス内の仮想デプロイメント全体のデフォルトのルーティング・ポリシー。仮想サービスのルート表が存在しない場合、仮想サービスはデフォルトのルーティング・ポリシーを適用します。オプションは、DENYまたはUNIFORMです。デフォルトのルーティング・ポリシーはDENYです。キーがtypeでパラメータを指定し、選択したルーティング・オプションの値を指定します。パラメータは、有効なJSON形式(文字列として、またはパスを含むfile:///<filename>構文を使用してファイルとして渡される)である必要があります。

      ルーティング・オプションは次のとおりです。

      • 均一: 仮想デプロイメント間でトラフィックを均一に分散します。
      • 拒否: デフォルト・オプションです。ルーティングを無効にします。仮想デプロイメントにトラフィックを送信しません。

      詳細は、仮想サービスでのトラフィックのルーティングを参照してください。

    • <hosts>コール元が使用する仮想サービスのDNSホスト名。接頭辞形式のワイルドカード・ホスト名をサポートします。最大10個の DNSホスト名を指定します。有効なホスト名の例を次に示します: www.example.com, *.example.com, *.com, www.example.com:9080, *.example.com:9080。仮想サービスにTCP仮想デプロイメントのみがある場合、省略できます。<hosts>の値は、有効なJSON形式(文字列として、またはパスを含むfile:///<filename>構文を使用してファイルとして渡される)である必要があります。
      警告

      このリソースでは、サービス・メッシュ予約ポート15000、15003、15006および9901を使用しないでください。

      HTTPベースの仮想デプロイメントを使用するサービスの場合、ホスト名は、サービスとの通信に使用されるHTTPホスト・ヘッダーと一致する必要があります。不一致が発生した場合、このサービスに接続しているアプリケーションは404エラーを受け取ります。HTTPホストヘッダーの形式は、標準ポート80および443の場合は example.comです。9080などの非標準ポートの場合、ホスト・ヘッダーの形式はexample.com:9080です。

      TLS_PASSTHROUGHに基づく仮想デプロイメントを持つサービスの場合、ホスト名は、サービスとの通信に使用されるサーバー名指示(SNI)と一致する必要があります。不一致が発生した場合、このサービスに接続しているアプリケーションはTLSハンドシェイク・エラーを受信します。このサービスでは、プリフィクス・フォームでワイルドカードを使用できますが、包括ワイルドカード(*)は許可されません。

      SNIはHTTPホスト・ヘッダーに似ていますが、TLS用です。ただし、SNIにはポート情報は必要ありません。たとえば、SNI example.comおよび非標準ポート9080でKubernetesサービスを実行している場合は、仮想サービスのホストとしてexample.comを定義する必要があります。

      重要

      ホスト・エントリは、エグレス専用サービスには必要ありません。エグレス専用サービスは、他のサービスからのコールを受信しないマイクロサービスです。
    • <mtls>メッシュ内の他の仮想サービスまたはイングレス・ゲートウェイからのリクエストを受信するときに使用するmTLS認証モード。次のリストの説明に従って、mTLS <mode>DISABLEDPERMISSIVEまたはSTRICTに設定します。また、<maximumValidity>を指定して、mTLS証明書の有効日数を決定します。45から90の間の値を指定しますデフォルト値は45日です。<mtls>の値は、有効なJSON形式(文字列として、またはパスを含むfile:///<filename>構文を使用してファイルとして渡される)である必要があります。
      • <mode>:
        • Disabled: raw TCPトラフィックを受け入れます。このメッシュ内の最小仮想サービスは、mTLS認証モードを使用できません。
        • 許容: mTLSトラフィックとRAW TCPトラフィックの両方を受け入れます。このメッシュ内の仮想サービスは、PERMISSIVEまたはSTRICTモードのいずれかです。
        • 厳格: mTLSトラフィックを受け入れます。このメッシュ内のすべての仮想サービスは、STRICTモードを使用する必要があります。

        サービス・メッシュでのmTLSの使用の詳細は、サービス・メッシュでのmTLSの使用を参照してください。

    例:

    oci service-mesh virtual-service create --compartment-id ocid1.compartment.oc1..aaa... --mesh-id ocid1.mesh.oc1..aaa... --name "my virtual-service" --description "virtual-service description" --default-routing-policy '{"type":"UNIFORM"}' --hosts '["www.example.com"]' --mtls '{"maximum-validity":45,"mode":"STRICT"}'

    コマンドへのレスポンスには、次が含まれます:

    • 仮想サービスのOCID。
    • ライフサイクルの状態(ACTIVEFAILEDなど)。
    • 仮想サービスを作成する作業リクエストのID(作業リクエストの詳細は、完了、取消または失敗の後の7日間利用可能です)。

    仮想サービスがアクティブになるか、リクエストが失敗するまでコマンドが制御を返すのを待機する場合は、次のいずれかまたは両方のパラメータを含めます。

    • --wait-for-state SUCCEEDED
    • --wait-for-state FAILED

    例:

    oci service-mesh virtual-service create --compartment-id ocid1.compartment.oc1..aaa... --mesh-id ocid1.mesh.oc1..aaa... --name "my virtual-service" --description "virtual-service description" --default-routing-policy '{"type":"UNIFORM"}' --hosts '["www.example.com"]' --mtls '{"maximum-validity":45,"mode":"STRICT"}' --wait-for-state SUCCEEDED
    ヒント

    作業リクエストが正常に作成されて仮想サービスがアクティブになるまで、仮想サービスを使用できません。

    仮想サービス・ステータスのチェック

    仮想サービスのステータスを表示するには、次のように入力します。

    oci service-mesh virtual-service get --virtual-service-id <virtualServiceId>

    仮想サービスを作成する作業リクエストのステータスを表示するには、サービス・メッシュ作業リクエストを参照してください。

    JSONファイルを使用した仮想サービスの作成

    または、createコマンドにJSONファイルを指定して仮想サービスを作成します。

    1. 仮想サービスのサンプルJSONファイルを生成します:

      oci service-mesh virtual-service create --generate-full-command-json-input
    2. 前のステップで生成されたサンプル出力を含むJSONファイルを作成し、フィールドを適切な値で更新します。
    3. virtual-service createコマンドにJSONファイルを指定します。

      oci service-mesh virtual-service create --from-json file:///<filename>

    CLIの使用方法の詳細は、次を参照してください:

  • 仮想サービスを作成するには、CreateVirtualService操作を使用します。