仮想サービスの作成
サービス・メッシュの仮想サービスを作成します。
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>
をDISABLED
、PERMISSIVE
または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。
- ライフサイクルの状態(
ACTIVE
、FAILED
など)。 - 仮想サービスを作成する作業リクエストの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ファイルを指定して仮想サービスを作成します。
-
仮想サービスのサンプルJSONファイルを生成します:
oci service-mesh virtual-service create --generate-full-command-json-input
- 前のステップで生成されたサンプル出力を含むJSONファイルを作成し、フィールドを適切な値で更新します。
-
virtual-service createコマンドにJSONファイルを指定します。
oci service-mesh virtual-service create --from-json file:///<filename>
CLIの使用方法の詳細は、次を参照してください:
仮想サービスを作成するには、CreateVirtualService操作を使用します。