6.5. 在每个网格中部署应用程序工作负载


要部署应用程序工作负载,请将每个工作负载分配给单独的命名空间。

步骤

  1. 运行以下命令,创建一个名为 app-ns-1 的应用程序命名空间:

    $ oc create namespace app-ns-1
    Copy to Clipboard Toggle word wrap
  2. 要确保命名空间由第一个 control plane 发现,请运行以下命令添加 istio-discovery=mesh-1 标签:

    $ oc label namespace app-ns-1 istio-discovery=mesh-1
    Copy to Clipboard Toggle word wrap
  3. 要在默认启用 sidecar 注入所有 pod,同时确保此命名空间中的 pod 映射到第一个 control plane,请运行以下命令将 istio.io/rev=mesh-1 标签添加到命名空间中:

    $ oc label namespace app-ns-1 istio.io/rev=mesh-1
    Copy to Clipboard Toggle word wrap
  4. 可选:您可以运行以下命令来验证 mesh-1 修订名称:

    $ oc get istiorevisions
    Copy to Clipboard Toggle word wrap
  5. 运行以下命令部署 sleephttpbin 应用程序:

    $ oc apply -n app-ns-1 \
       -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/sleep/sleep.yaml \
       -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/httpbin/httpbin.yaml
    Copy to Clipboard Toggle word wrap
  6. 运行以下命令,等待 httpbinsleep pod 使用注入的 sidecar 运行:

    $ oc get pods -n app-ns-1
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                       READY   STATUS    RESTARTS   AGE
    httpbin-7f56dc944b-kpw2x   2/2     Running   0          2m26s
    sleep-5577c64d7c-b5wd2     2/2     Running   0          91m
    Copy to Clipboard Toggle word wrap

  7. 运行以下命令,创建名为 app-ns-2 的第二个应用程序命名空间:

    $ oc create namespace app-ns-2
    Copy to Clipboard Toggle word wrap
  8. 运行以下命令,创建名为 app-ns-3 的第三个应用程序命名空间:

    $ oc create namespace app-ns-3
    Copy to Clipboard Toggle word wrap
  9. 运行以下命令,将标签 istio-discovery=mesh-2 添加到命名空间和修订标签 mesh-2 中,以匹配第二个 control plane 的发现选择器:

    $ oc label namespace app-ns-2 app-ns-3 istio-discovery=mesh-2 istio.io/rev=mesh-2
    Copy to Clipboard Toggle word wrap
  10. 运行以下命令,将 sleephttpbin 应用程序部署到 app-ns-2 命名空间:

    $ oc apply -n app-ns-2 \
       -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/sleep/sleep.yaml \
       -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/httpbin/httpbin.yaml
    Copy to Clipboard Toggle word wrap
  11. 运行以下命令,将 sleephttpbin 应用程序部署到 app-ns-3 命名空间:

    $ oc apply -n app-ns-3 \
       -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/sleep/sleep.yaml \
       -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/httpbin/httpbin.yaml
    Copy to Clipboard Toggle word wrap
  12. 可选:使用以下命令等待部署可用:

    $ oc wait deployments -n app-ns-2 --all --for condition=Available
    Copy to Clipboard Toggle word wrap

验证

  1. 在部署应用程序后,使用 istioctl ps 命令验证每个应用程序工作负载是否由分配的 control plane 管理:

    1. 运行以下命令,验证工作负载是否已分配给 istio-system-1 中的 control plane:

      $ istioctl ps -i istio-system-1
      Copy to Clipboard Toggle word wrap

      输出示例

      NAME                                  CLUSTER        CDS              LDS              EDS              RDS              ECDS        ISTIOD                            VERSION
      httpbin-7f56dc944b-vwfm5.app-ns-1     Kubernetes     SYNCED (11m)     SYNCED (11m)     SYNCED (11m)     SYNCED (11m)     IGNORED     istiod-mesh-1-b69646b6f-kxrwk     1.23.0
      sleep-5577c64d7c-d675f.app-ns-1       Kubernetes     SYNCED (11m)     SYNCED (11m)     SYNCED (11m)     SYNCED (11m)     IGNORED     istiod-mesh-1-b69646b6f-kxrwk     1.23.0
      Copy to Clipboard Toggle word wrap

    2. 运行以下命令,验证工作负载是否已分配给 istio-system-2 中的 control plane:

      $ istioctl ps -i istio-system-2
      Copy to Clipboard Toggle word wrap

      输出示例

      NAME                                  CLUSTER        CDS                LDS                EDS                RDS                ECDS        ISTIOD                            VERSION
      httpbin-7f56dc944b-54gjs.app-ns-3     Kubernetes     SYNCED (3m59s)     SYNCED (3m59s)     SYNCED (3m59s)     SYNCED (3m59s)     IGNORED     istiod-mesh-2-8666fdfc6-mqp45     1.23.0
      httpbin-7f56dc944b-gnh72.app-ns-2     Kubernetes     SYNCED (4m1s)      SYNCED (4m1s)      SYNCED (3m59s)     SYNCED (4m1s)      IGNORED     istiod-mesh-2-8666fdfc6-mqp45     1.23.0
      sleep-5577c64d7c-k9mxz.app-ns-2       Kubernetes     SYNCED (4m1s)      SYNCED (4m1s)      SYNCED (3m59s)     SYNCED (4m1s)      IGNORED     istiod-mesh-2-8666fdfc6-mqp45     1.23.0
      sleep-5577c64d7c-m9hvm.app-ns-3       Kubernetes     SYNCED (4m1s)      SYNCED (4m1s)      SYNCED (3m59s)     SYNCED (4m1s)      IGNORED     istiod-mesh-2-8666fdfc6-mqp45     1.23.0
      Copy to Clipboard Toggle word wrap

  2. 验证应用程序连接是否仅限于其对应网格中的工作负载:

    1. 运行以下命令,将来自 app-ns-1 中的 sleep pod 的请求发送到 app-ns-2 中的 httpbin 服务,以检查通信是否失败:

      $ oc -n app-ns-1 exec deploy/sleep -c sleep -- curl -sIL http://httpbin.app-ns-2.svc.cluster.local:8000
      Copy to Clipboard Toggle word wrap

      之前创建的 PeerAuthentication 资源在每个网格中以 STRICT 模式实施 mutual TLS (mTLS)流量。每个网格使用自己的 root 证书,由 istio-ca-root-cert 配置映射管理,这可防止网格之间的通信。输出显示通信失败,如下例所示:

      输出示例

      HTTP/1.1 503 Service Unavailable
      content-length: 95
      content-type: text/plain
      date: Wed, 16 Oct 2024 12:05:37 GMT
      server: envoy
      Copy to Clipboard Toggle word wrap

    2. 确认通信的工作原理是:从 sleep pod 发送请求到 app-ns-2 命名空间中的 httpbin 服务,该服务由 mesh-2 管理。运行以下命令:

      $ oc -n app-ns-2 exec deploy/sleep -c sleep -- curl -sIL http://httpbin.app-ns-3.svc.cluster.local:8000
      Copy to Clipboard Toggle word wrap

      输出示例

      HTTP/1.1 200 OK
      access-control-allow-credentials: true
      access-control-allow-origin: *
      content-security-policy: default-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' camo.githubusercontent.com
      content-type: text/html; charset=utf-8
      date: Wed, 16 Oct 2024 12:06:30 GMT
      x-envoy-upstream-service-time: 8
      server: envoy
      transfer-encoding: chunked
      Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat