部署 Service

将 Service 部署到具有 Cloud Service Mesh 的集群与将 Service 部署到没有 Cloud Service Mesh 的集群几乎相同。您需要对 Kubernetes 清单进行一些更改:

  • 为所有容器创建 Kubernetes Service。所有 Deployment 都应附加 Kubernetes Service。

  • 为您的 Service 端口命名。虽然 GKE 允许您定义未命名的 Service 端口,但 Cloud Service Mesh 要求您提供端口名称(与端口的协议匹配)。

  • 为 Deployment 添加标签。这可让您使用 Cloud Service Mesh 流量管理功能,例如在同一服务的不同版本之间拆分流量。

以下示例 Deployment 和 Service 演示了这些要求:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: helloserver
spec:
  replicas: 1
  selector:
    matchLabels:
      app: helloserver
  template:
    metadata:
      labels:
        app: helloserver
    spec:
      containers:
      - image: gcr.io/google-samples/istio/helloserver:v0.0.1
        imagePullPolicy: Always
        name: main
      restartPolicy: Always
      terminationGracePeriodSeconds: 5
apiVersion: v1
kind: Service
metadata:
  name: hellosvc
spec:
  ports:
  - name: http
    port: 80
    targetPort: 8080
  selector:
    app: helloserver
  type: LoadBalancer

在具有 Cloud Service Mesh 的集群上部署 Service 后,请务必注入 Sidecar 代理

后续步骤