×

OpenShift虚拟化现在已与OpenShift服务网格集成。您可以使用IPv4监控、可视化和控制在默认Pod网络上运行虚拟机工作负载的Pod之间的流量。

将虚拟机添加到服务网格

要将虚拟机(VM)工作负载添加到服务网格,请在虚拟机配置文件中启用自动sidecar注入,方法是将sidecar.istio.io/inject注释设置为true。然后将您的虚拟机公开为服务,以便在网格中查看您的应用程序。

为避免端口冲突,请勿使用Istio sidecar代理使用的端口。这些端口包括15000、15001、15006、15008、15020、15021和15090。

先决条件
  • 您已安装服务网格运算符。

  • 您已创建服务网格控制平面。

  • 您已将VM项目添加到服务网格成员角色。

步骤
  1. 编辑虚拟机配置文件以添加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 (1)
          annotations:
            sidecar.istio.io/inject: "true" (2)
        spec:
          domain:
            devices:
              interfaces:
              - name: default
                masquerade: {} (3)
              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
    1 必须与服务选择器属性匹配的关键/值对(标签)。
    2 启用自动sidecar注入的注释。
    3 与默认Pod网络一起使用的绑定方法(伪装模式)。
  2. 应用虚拟机配置

    $ oc apply -f <vm_name>.yaml (1)
    1 虚拟机YAML文件的名称。
  3. 创建Service对象以将您的虚拟机公开到服务网格。

    apiVersion: v1
    kind: Service
    metadata:
      name: vm-istio
    spec:
      selector:
        app: vm-istio (1)
      ports:
        - port: 8080
          name: http
          protocol: TCP
    1 服务选择器,用于确定服务目标的 Pod 集。此属性对应于 VM 配置文件中的spec.metadata.labels字段。在上面的示例中,名为vm-istioService对象的目标是任何带有标签app=vm-istio的 Pod 上的 TCP 8080 端口。
  4. 创建服务

    $ oc create -f <service_name>.yaml (1)
    1 服务 YAML 文件的名称。