10.13. 仮想マシンのサービスメッシュへの接続
OpenShift Virtualization は、Red Hat OpenShift Service Mesh と統合されました。IPv4 を使用したデフォルトの Pod ネットワーク上で仮想マシン (VM) ワークロードを実行する Pod 間のトラフィックを監視、視覚化、および制御できます。
10.13.1. サービスメッシュへの仮想マシンの追加 リンクのコピーリンクがクリップボードにコピーされました!
仮想マシン (VM) ワークロードをサービスメッシュに追加するには、sidecar.istio.io/inject アノテーションを true に設定して、仮想マシン設定ファイルでサイドカーの自動注入を有効にします。次に、仮想マシンをサービスとして公開し、メッシュでアプリケーションを表示します。
ポートの競合を回避するには、Istio サイドカープロキシーが使用するポートを使用しないでください。これには、ポート 15000、15001、15006、15008、15020、15021、および 15090 が含まれます。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 - Service Mesh Operator がインストールされました。
手順
仮想マシン設定ファイルを編集し、
sidecar.istio.io/inject: "true"アノテーションを追加します。設定ファイルの例:
apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: labels: kubevirt.io/vm: vm-istio name: vm-istio spec: runStrategy: Always template: metadata: labels: kubevirt.io/vm: vm-istio app: vm-istio annotations: sidecar.istio.io/inject: "true" spec: domain: devices: interfaces: - name: default masquerade: {} disks: - disk: bus: virtio name: containerdisk - disk: bus: virtio name: cloudinitdisk resources: requests: memory: 1024M networks: - name: default pod: {} terminationGracePeriodSeconds: 180 volumes: - containerDisk: image: registry:5000/kubevirt/fedora-cloud-container-disk-demo:devel name: containerdisk-
spec.template.metadata.labels.app は、サービスセレクター属性と一致させる必要があるキー/値のペア (ラベル) を指定します。 -
spec.template.metadata.annotations.sidecar.istio.io/injectは、サイドカーの自動注入を有効にするためのアノテーションです。 -
spec.template.spec.domain.devices.interfaces.masqueradeは、デフォルトの Pod ネットワークで使用するバインディング方法 (マスカレードモード) です。
-
仮想マシン設定を適用するには、次のコマンドを実行してください。
$ oc apply -f <vm_name>.yamlここでは、以下のようになります。
<vm_name>- 仮想マシンの YAML ファイルの名前を指定します。
サービスメッシュに仮想マシンを公開するための
サービスオブジェクトを作成します。apiVersion: v1 kind: Service metadata: name: vm-istio spec: selector: app: vm-istio ports: - port: 8080 name: http protocol: TCP-
spec.selector.app は、サービスが対象とする Pod のセットを決定するサービスセレクターを指定します。この属性は、仮想マシン設定ファイルのspec.metadata.labelsフィールドに対応します。上記の例では、vm-istioという名前のServiceオブジェクトは、ラベルがapp=vm-istioの Pod の TCP ポート 8080 をターゲットにします。
-
以下のコマンドを実行してサービスを作成します。
$ oc create -f <service_name>.yamlここでは、以下のようになります。
< サービス名 >- サービス YAML ファイルの名前を指定します。