本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

添加部署与服务并集成 Istio sidecar

Rancher-Istio 自 Rancher v2.12.0 起已被弃用;请转向 SUSE 应用程序集合 版本的 Istio,以获得增强的安全性(包含在 SUSE Rancher Prime 订阅中)。 详细信息可以在 此公告 中找到。

前提条件:

要为工作负载启用 Istio,集群和命名空间必须安装 Istio 应用。

在命名空间中启用 Istio 仅对新工作负载自动注入 sidecar。要为现有工作负载启用 Envoy sidecar,您需要手动为每个工作负载启用它。

要在命名空间中对现有工作负载注入 Istio sidecar,

  1. 在左上角,点击 ☰ > 集群管理

  2. 在*集群*页面上,转到您想查看可视化的集群,然后单击*探索*。

  3. 单击*工作负载*。

  4. 转到您想要注入 Istio sidecar 的工作负载,然后点击 ⋮ > 重新部署。当工作负载重新部署时,它将自动注入 Envoy sidecar。

等待几分钟,让工作负载升级后具备 Istio sidecar。点击它并转到容器部分。您应该能够看到 istio-proxy 与您的原始工作负载并排显示。这意味着工作负载已启用 Istio sidecar。Istio 正在处理 Envoy sidecar 的所有连接。现在,如果您在 YAML 中启用它们,Istio 可以自动执行所有功能。

添加部署和服务

在您的命名空间中添加新 部署 有几种方法:

  1. 单击 ☰ > 集群管理

  2. 转到您创建的集群并单击*Explore*.

  3. 单击*工作负载*。

  4. 单击*创建*。

  5. 点击 部署

  6. 填写表单,或 以 YAML 编辑

  7. 单击*创建*。

要向您的命名空间添加 服务

  1. 单击 ☰ > 集群管理

  2. 转到您创建的集群并单击*Explore*.

  3. 点击 menu:服务发现[服务]。

  4. 单击*创建*。

  5. 选择您想要的服务类型。

  6. 填写表单,或 以 YAML 编辑

  7. 单击*创建*。

您还可以使用 kubectl 外壳 创建部署和服务。

  1. 如果您的文件存储在集群中,请运行 kubectl create -f <name of service/deployment file>.yaml

  2. 或者运行 `cat<< EOF | kubectl apply -f -`,将文件内容粘贴到终端中,然后运行 EOF 完成命令。

示例部署和服务

接下来,我们为 BookInfo 应用在 Istio 文档中添加示例部署和服务所需的 Kubernetes 资源。

  1. 单击 ☰ > 集群管理

  2. 前往您创建的集群并点击 探索

  3. 在顶部导航栏中,打开 kubectl 外壳。

  4. 运行 cat<< EOF | kubectl apply -f -

  5. 将以下资源复制到外壳中。

  6. 运行 EOF

这将设置来自 Istio 示例 BookInfo 应用的以下示例资源:

服务和部署的详细信息:

  • 一个 details 服务

  • 一个 bookinfo-details 的 ServiceAccount

  • 一个 details-v1 部署

评分服务和部署:

  • 一个 ratings 服务

  • 一个 bookinfo-ratings 的 ServiceAccount

  • 一个 ratings-v1 部署

评论服务和部署(三个版本):

  • 一个 reviews 服务

  • 一个 bookinfo-reviews 的 ServiceAccount

  • 一个 reviews-v1 部署

  • 一个 reviews-v2 部署

  • 一个 reviews-v3 部署

产品页面服务和部署:

这是应用的主页,可以从网页浏览器访问。其他服务将从此页面调用。

  • 一个 productpage 服务

  • 一个 bookinfo-productpage 的 ServiceAccount

  • 一个 productpage-v1 部署

资源 YAML

# Copyright 2017 Istio Authors
#
#   Licensed under the Apache License, Version 2.0 (the "License");
#   you may not use this file except in compliance with the License.
#   You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.

##################################################################################################
# Details service
##################################################################################################
apiVersion: v1
kind: Service
metadata:
  name: details
  labels:
    app: details
    service: details
spec:
  ports:
  - port: 9080
    name: http
  selector:
    app: details
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: bookinfo-details
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: details-v1
  labels:
    app: details
    version: v1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: details
      version: v1
  template:
    metadata:
      labels:
        app: details
        version: v1
    spec:
      serviceAccountName: bookinfo-details
      containers:
      - name: details
        image: docker.io/istio/examples-bookinfo-details-v1:1.15.0
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 9080
---
##################################################################################################
# Ratings service
##################################################################################################
apiVersion: v1
kind: Service
metadata:
  name: ratings
  labels:
    app: ratings
    service: ratings
spec:
  ports:
  - port: 9080
    name: http
  selector:
    app: ratings
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: bookinfo-ratings
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: ratings-v1
  labels:
    app: ratings
    version: v1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: ratings
      version: v1
  template:
    metadata:
      labels:
        app: ratings
        version: v1
    spec:
      serviceAccountName: bookinfo-ratings
      containers:
      - name: ratings
        image: docker.io/istio/examples-bookinfo-ratings-v1:1.15.0
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 9080
---
##################################################################################################
# Reviews service
##################################################################################################
apiVersion: v1
kind: Service
metadata:
  name: reviews
  labels:
    app: reviews
    service: reviews
spec:
  ports:
  - port: 9080
    name: http
  selector:
    app: reviews
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: bookinfo-reviews
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: reviews-v1
  labels:
    app: reviews
    version: v1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: reviews
      version: v1
  template:
    metadata:
      labels:
        app: reviews
        version: v1
    spec:
      serviceAccountName: bookinfo-reviews
      containers:
      - name: reviews
        image: docker.io/istio/examples-bookinfo-reviews-v1:1.15.0
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 9080
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: reviews-v2
  labels:
    app: reviews
    version: v2
spec:
  replicas: 1
  selector:
    matchLabels:
      app: reviews
      version: v2
  template:
    metadata:
      labels:
        app: reviews
        version: v2
    spec:
      serviceAccountName: bookinfo-reviews
      containers:
      - name: reviews
        image: docker.io/istio/examples-bookinfo-reviews-v2:1.15.0
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 9080
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: reviews-v3
  labels:
    app: reviews
    version: v3
spec:
  replicas: 1
  selector:
    matchLabels:
      app: reviews
      version: v3
  template:
    metadata:
      labels:
        app: reviews
        version: v3
    spec:
      serviceAccountName: bookinfo-reviews
      containers:
      - name: reviews
        image: docker.io/istio/examples-bookinfo-reviews-v3:1.15.0
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 9080
---
##################################################################################################
# Productpage services
##################################################################################################
apiVersion: v1
kind: Service
metadata:
  name: productpage
  labels:
    app: productpage
    service: productpage
spec:
  ports:
  - port: 9080
    name: http
  selector:
    app: productpage
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: bookinfo-productpage
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: productpage-v1
  labels:
    app: productpage
    version: v1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: productpage
      version: v1
  template:
    metadata:
      labels:
        app: productpage
        version: v1
    spec:
      serviceAccountName: bookinfo-productpage
      containers:
      - name: productpage
        image: docker.io/istio/examples-bookinfo-productpage-v1:1.15.0
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 9080
---