使用 IstioRevisionTag 资源启用 sidecar 注入

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

参考

前提条件

  • 已安装 Alauda Service Mesh v2 Operator,已创建 Istio 资源,并且 Istio 已由 Operator 部署。
  • 已创建 IstioCNI 资源,且所需的 IstioCNI pods 已由 Operator 部署。
  • 计划加入网格的命名空间已存在,且可被 Istio 控制平面发现。
  • 可选:网格的工作负载已部署。在这些示例中,Bookinfo 应用存在于 bookinfo 命名空间,但尚未配置 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-3   Healthy   v1.28.3   37s

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

  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-3   15s

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

  5. 通过执行以下命令检查 pods 是否未注入 sidecar。目标命名空间中所有现有工作负载的 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 命名空间添加注入标签:

    kubectl label namespace bookinfo istio-injection=enabled

    示例输出

    namespace/bookinfo labeled
  7. 为激活 sidecar 注入,通过运行以下命令触发 bookinfo 命名空间中工作负载的重新部署:

    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