仮想サービスの更新

仮想サービスのデフォルトのルーティング・ポリシーまたはmTLSモードを更新します。

重要

続行する前に、仮想サービス・リソースに適切なOCIポリシーを設定する必要があります。詳細は、仮想サービスに必要なIAMポリシーを参照してください。
    1. ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「コンテナおよびアーティファクト」で、「サービス・メッシュ」をクリックします。
    2. 「サービス・メッシュ」をクリックします。
    3. 「サービス・メッシュ」ページの左側にあるコンパートメントのリストから、コンパートメントを選択します。
    4. メッシュのリストから、仮想サービスを含むメッシュ名をクリックします。
    5. 詳細ページで、更新する仮想サービスの名前をクリックします。
    6. 仮想サービスの詳細ページで、「編集」をクリックします。
    7. 「仮想サービスの編集」パネルで、必要に応じて詳細を更新します。証明書の説明、デフォルトのルーティング・ポリシー、mTLSモードおよび最大有効性を変更できます。
    8. 「変更の保存」をクリックします。
  • virtual-service updateで使用可能な操作を確認するには、次を使用します:

    oci service-mesh virtual-service update -h

    CLIを使用して仮想サービスを更新するには、oci service-mesh virtual-service updateオプションを使用します:

    oci service-mesh virtual-service update --virtual-service-id <virtualServiceId> --description <description> --default --routing-policy <defaultRoutingPolicy> --hosts <hosts> --mtls <mtls>

    場所:

    • <virtualServiceId>: 更新する仮想サービスのOCID。仮想サービスの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>構文を使用してファイルとして渡される)である必要があります。
      • Disabled: raw TCPトラフィックを受け入れます。このメッシュ内の最小仮想サービスは、mTLS認証モードを使用できません。
      • 許容: mTLSトラフィックとRAW TCPトラフィックの両方を受け入れます。このメッシュ内の仮想サービスは、PERMISSIVEまたはSTRICTモードのいずれかです。
      • 厳格: mTLSトラフィックを受け入れます。このメッシュ内のすべての仮想サービスは、STRICTモードを使用する必要があります。

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

    たとえば:

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

    コマンドへの応答は次のとおりです。

    • 仮想サービスOCID。
    • ライフサイクルの状態(ACTIVE、FAILEDなど)。
    • 仮想サービスを更新する作業リクエストのID。作業リクエストの詳細は、完了、取消または失敗の7日間使用できます。

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

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

    例:

    oci service-mesh virtual-service update --virtual-service-id ocid1.meshvirtualservice.oc1..aaa... --description "my virtual-service updated" --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ファイルを使用した仮想サービスの更新

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

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

      oci service-mesh virtual-service update --generate-full-command-json-input
    2. 生成された出力例を含むJSONファイルを作成します。
    3. フィールドを適切な値で更新します。
    4. virtual-service updateコマンドにJSONファイルを指定します:
      oci service-mesh virtual-service update --from-json file:///<filename>

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

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