使用 IstioRevisionTag 资源启用 sidecar 注入

如果你的 revision 名称不是 default,仍然可以使用 istio-injection=enabled 标签。为此,你必须先创建一个名为 defaultIstioRevisionTag 资源,并将其指向你的 Istio 资源。

参考

前提条件

  • 已安装 Alauda Service Mesh v2 Operator,已创建一个 Istio 资源,并且 Istio 已由 Operator 部署。
  • 已创建一个 IstioCNI 资源,并且所需的 IstioCNI pods 已由 Operator 部署。
  • 计划纳入 mesh 的 namespaces 已存在,并且可以被 Istio control plane 发现。
  • 可选:mesh 的 workloads 已经部署完成。在这些示例中,Bookinfo 原生应用存在于 bookinfo namespace 中,但尚未配置 sidecar 注入(如步骤 2 所述)。有关更多信息,请参阅“部署 Bookinfo 原生应用”。

操作步骤

  1. 要查找你的 Istio 资源名称,请执行以下命令:

    kubectl get istio

    示例输出

    NAME      NAMESPACE      PROFILE   REVISIONS   READY   IN USE   ACTIVE REVISION   STATUS    VERSION   AGE
    default   istio-system             1           1       0        default-v1-28-6   Healthy   v1.28.6   37s

    在此示例中,Istio 资源名为 default,但其底层 revision 为 default-v1-28-6

  2. 在 YAML 文件中定义 IstioRevisionTag 资源:

    IstioRevisionTag 资源 YAML 示例

    apiVersion: sailoperator.io/v1
    kind: IstioRevisionTag
    metadata:
      name: default
    spec:
      targetRef:
        kind: Istio
        name: default
  3. 使用以下命令应用 IstioRevisionTag 资源:

    kubectl apply -f istioRevisionTag.yaml
  4. 使用以下命令确认 IstioRevisionTag 资源已成功创建:

    kubectl get istiorevisiontags.sailoperator.io

    示例输出

    NAME      STATUS    IN USE   REVISION          AGE
    default   Healthy   True     default-v1-28-6   15s

    如示例所示,新标签现在引用了你的活动 revision,即 default-v1-28-6。现在你可以像 revision 名称为 default 一样使用 istio-injection=enabled 标签。

  5. 通过执行以下命令,检查 pods 是否在没有 sidecars 的情况下运行。目标 namespace 中所有现有 workloads 的 READY 容器列都应显示为 1/1

    kubectl get pods -n bookinfo

    示例输出

    NAME                              READY   STATUS    RESTARTS   AGE
    details-v1-85c7fcfd5b-fdx4q       1/1     Running   0          5m48s
    productpage-v1-775ffc67d8-89n5c   1/1     Running   0          5m48s
    ratings-v1-6c79fdf684-cdkzc       1/1     Running   0          5m48s
    reviews-v1-685fb87cb6-pgzm5       1/1     Running   0          5m48s
    reviews-v2-76c4659bc6-lgtp4       1/1     Running   0          5m48s
    reviews-v3-f7b4c8678-x2hnp        1/1     Running   0          5m48s
  6. 使用以下命令将注入标签添加到 bookinfo namespace:

    kubectl label namespace bookinfo istio-injection=enabled

    示例输出

    namespace/bookinfo labeled
  7. 要启用 sidecar 注入,请运行以下命令,触发 bookinfo namespace 中 workloads 的重新部署:

    kubectl -n bookinfo rollout restart deployments

验证

  1. 运行以下命令检查 rollout 是否成功,并确认新创建的 pods 在 READY 列中显示 2/2 容器:

    kubectl get pods -n bookinfo

    示例输出

    NAME                              READY   STATUS    RESTARTS   AGE
    details-v1-d964f49cb-bdlwn        2/2     Running   0          38s
    productpage-v1-79fbc54dfb-wbtf2   2/2     Running   0          38s
    ratings-v1-6f4bf85f96-glkg9       2/2     Running   0          38s
    reviews-v1-57d48b8c6b-hlfbt       2/2     Running   0          38s
    reviews-v2-6d65c788d4-q98pl       2/2     Running   0          38s
    reviews-v3-6cf5df6bb6-phnj9       2/2     Running   0          38s