使用 IstioRevisionTag 资源启用 sidecar 注入

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

参考

前提条件

  • 已安装 Alauda Service Mesh v2 Operator,已创建 Istio 资源,并且 Istio 已由 Operator 部署。
  • 已创建 IstioCNI 资源,并且所需的 IstioCNI pod 已由 Operator 部署。
  • 计划加入网格的 namespace 已存在,并且可被 Istio 控制平面发现。
  • 可选:网格所需的工作负载已部署。在这些示例中,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-30-4   Healthy   v1.30.4   37s

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

  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-30-4   15s

    如示例所示,新标签现在引用您的活动 revision default-v1-30-4。现在,您可以使用 istio-injection=enabled 标签,就像您的 revision 名为 default 一样。

  5. 执行以下命令,检查 pod 是否在没有 sidecar 的情况下运行。目标 namespace 中的所有现有工作负载都应在 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 中工作负载的重新部署:

    kubectl -n bookinfo rollout restart deployments

验证

  1. 运行以下命令检查 rollout 是否成功,并确认新创建的 pod 在 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