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ワークロードのプロパティを指定できます。これらはサービスエントリで参照できます。