WorkloadEntry

WorkloadEntry を使用すると、オペレーターは、VM やベアメタルサーバーなどの単一の非 Kubernetes ワークロードのプロパティを、メッシュにオンボーディングされた状態のまま記述できます。WorkloadEntry には、適切なラベルでワークロードを選択し、MESH_INTERNAL サービス(ホスト名、ポートプロパティなど)のサービス定義を提供する Istio ServiceEntry が必要です。ServiceEntry オブジェクトは、サービスエントリに指定されたラベルセレクターに基づいて、複数のワークロードエントリと Kubernetes ポッドを選択することもできます。

ワークロードが `istiod` に接続すると、カスタムリソースのステータスフィールドが更新され、ポッドのステータスを Kubernetes が更新する方法と同様に、ワークロードのヘルス状態やその他の詳細が表示されます。

以下の例は、details.bookinfo.comサービスのVMを表すワークロードエントリを宣言しています。このVMには、details-legacyサービスアカウントを使用してインストールおよびブートストラップされたサイドカーが搭載されています。このサービスは、メッシュ内のアプリケーションに対してポート80で公開されています。このサービスへのHTTPトラフィックはIstio相互TLSでラップされ、ターゲットポート8080のVM上のサイドカーに送信され、そこから同じポートのlocalhost上のアプリケーションに転送されます。

apiVersion: networking.istio.io/v1
kind: WorkloadEntry
metadata:
  name: details-svc
spec:
  # use of the service account indicates that the workload has a
  # sidecar proxy bootstrapped with this service account. Pods with
  # sidecars will automatically communicate with the workload using
  # istio mutual TLS.
  serviceAccount: details-legacy
  address: 2.2.2.2
  labels:
    app: details-legacy
    instance-id: vm1

および関連するサービスエントリ

apiVersion: networking.istio.io/v1
kind: ServiceEntry
metadata:
  name: details-svc
spec:
  hosts:
  - details.bookinfo.com
  location: MESH_INTERNAL
  ports:
  - number: 80
    name: http
    protocol: HTTP
    targetPort: 8080
  resolution: STATIC
  workloadSelector:
    labels:
      app: details-legacy

次の例は、完全修飾DNS名を使用して同じVMワークロードを宣言しています。クライアント側のサイドカーがリクエスト転送前に実行時にDNS名を動的に解決することを示すために、サービスエントリの解決モードをDNSに変更する必要があります。

apiVersion: networking.istio.io/v1
kind: WorkloadEntry
metadata:
  name: details-svc
spec:
  # use of the service account indicates that the workload has a
  # sidecar proxy bootstrapped with this service account. Pods with
  # sidecars will automatically communicate with the workload using
  # istio mutual TLS.
  serviceAccount: details-legacy
  address: vm1.vpc01.corp.net
  labels:
    app: details-legacy
    instance-id: vm1

および関連するサービスエントリ

apiVersion: networking.istio.io/v1
kind: ServiceEntry
metadata:
  name: details-svc
spec:
  hosts:
  - details.bookinfo.com
  location: MESH_INTERNAL
  ports:
  - number: 80
    name: http
    protocol: HTTP
    targetPort: 8080
  resolution: DNS
  workloadSelector:
    labels:
      app: details-legacy

次の例は、アドレスのないVMワークロードを宣言しています。istiodがリモートAPIサーバーから読み取る代わりに、リモートネットワーク内のWorkloadを表現するローカルクラスタにWorkloadEntryを書き込むことができます。重み付きの単一のWorkloadEntryは、特定のリモートネットワーク内のすべての実際のワークロードの集計を表します。

apiVersion: networking.istio.io/v1
kind: WorkloadEntry
metadata:
  name: foo-workloads-cluster-2
spec:
  serviceAccount: foo
  network: cluster-2-network
  labels:
    app: foo

WorkloadEntry

WorkloadEntryを使用すると、VMやベアメタルサービスなど、単一の非Kubernetesワークロードのプロパティを指定できます。これらはサービスエントリで参照できます。

項目説明必須
address文字列

ポートを除くネットワークエンドポイントに関連付けられたアドレス。ドメイン名は、解決がDNSに設定されている場合に限り使用でき、ワイルドカードを含まない完全修飾名である必要があります。Unixドメインソケットエンドポイントには、unix:///absolute/path/to/socketの形式を使用します。addressが空の場合、networkを指定する必要があります。

いいえ
portsmap<string, uint32>

エンドポイントに関連付けられたポートのセット。ポートマップを指定する場合は、servicePortNameをこのエンドポイントのポートにマッピングするマップにする必要があります。これにより、サービスポートへのトラフィックはこのエンドポイントのポートに転送されます。省略した場合、targetPortがサービスのポート仕様の一部として指定されている場合、サービスポートへのトラフィックは、指定されたtargetPortのエンドポイントのいずれかに転送されます。targetPortとエンドポイントのポートマップの両方が指定されていない場合、サービスポートへのトラフィックは、同じポートのエンドポイントのいずれかに転送されます。

注記1:unix://アドレスには使用しないでください。

注記2:エンドポイントポートマップはtargetPortよりも優先されます。

いいえ
labelsmap<string, string>

エンドポイントに関連付けられた1つ以上のラベル。

いいえ
network文字列

Networkを使用すると、Istioは同じL3ドメイン/ネットワークに存在するエンドポイントをグループ化できます。同じネットワーク内のすべてのエンドポイントはお互いに直接到達可能であると見なされます。異なるネットワーク内のエンドポイントがお互いに直接到達できない場合は、Istio Gatewayを使用して接続を確立できます(通常はGatewayサーバーでAUTO_PASSTHROUGHモードを使用)。これは、複数のクラスタにIstioメッシュを拡張するために一般的に使用される高度な構成です。addressが提供されない場合は必須です。

いいえ
locality文字列

エンドポイントに関連付けられたロケーション。ロケーションは障害ドメイン(例:国/地域/ゾーン)に対応します。各包含障害ドメインを/で区切ることで、任意の障害ドメイン階層を表すことができます。たとえば、米国、米国東部1リージョン、アベイラビリティゾーンaz-1、データセンターラックr11にあるエンドポイントのロケーションは、us/us-east-1/az-1/r11と表すことができます。Istioは、サイドカーと同じロケーション内のエンドポイントにルーティングするようにサイドカーを構成します。ロケーション内のエンドポイントが利用できない場合、親ロケーション(ただし同じネットワークID内)のエンドポイントが選択されます。たとえば、同じネットワーク(networkID "n1")に2つのエンドポイント、つまりロケーションus/us-east-1/az-1/r11のe1とロケーションus/us-east-1/az-2/r12のe2があるとします。us/us-east-1/az-1/r11ロケーションのサイドカーは、異なるロケーションのe2よりも同じロケーションのe1を優先します。エンドポイントe2は、ゲートウェイ(ネットワークn1とn2をブリッジする)に関連付けられたIP、または標準サービスエンドポイントに関連付けられたIPである可能性があります。

いいえ
weightuint32

エンドポイントに関連付けられたロードバランシングの重み。重みの高いエンドポイントには、比例して高いトラフィックが送られます。

いいえ
serviceAccount文字列

ワークロードにサイドカーが存在する場合、ワークロードに関連付けられたサービスアカウント。サービスアカウントは、構成(WorkloadEntryまたはServiceEntry)と同じ名前空間に存在する必要があります。

いいえ
この情報は役に立ちましたか?
改善のための提案はありますか?

ご意見ありがとうございます!