工作負載條目
WorkloadEntry
可讓運算子描述單一非 Kubernetes 工作負載 (例如 VM 或裸機伺服器) 在載入網格時的屬性。WorkloadEntry
必須搭配 Istio ServiceEntry
,後者會透過適當的標籤選取工作負載,並為 MESH_INTERNAL
服務 (主機名稱、連接埠屬性等) 提供服務定義。ServiceEntry
物件可以根據服務條目中指定的標籤選取器,選取多個工作負載條目以及 Kubernetes Pod。
當工作負載連線至 istiod
時,自訂資源中的狀態欄位將會更新,以指出工作負載的健全狀況和其他詳細資訊,類似於 Kubernetes 如何更新 Pod 的狀態。
以下範例宣告一個工作負載條目,代表 details.bookinfo.com
服務的 VM。此 VM 已安裝 Sidecar,並使用 details-legacy
服務帳戶啟動。該服務在連接埠 80 上公開給網格中的應用程式。此服務的 HTTP 流量會封裝在 Istio 相互 TLS 中,並傳送到 VM 上目標連接埠 8080 上的 Sidecar,然後再將其轉送到相同連接埠上 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,以指示客戶端 Sidecar 應在執行時動態解析 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 伺服器讀取之外,另一種替代方法是在本機叢集中寫入一個 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 可讓您指定單個非 Kubernetes 工作負載的屬性,例如 VM 或裸機服務,這些工作負載可由服務條目引用。