安装多主多网络网格

在两个集群上安装多主多网络拓扑的 Istio。

NOTE

在本操作步骤中,CLUSTER1East 集群,CLUSTER2West 集群。

您可以根据需要调整这些说明,以支持跨越两个以上集群的网格。

拓扑

跨集群边界的服务工作负载通过专用的东西向网关间接通信。 每个集群中的网关必须能被另一个集群访问。

多主多网络拓扑

前提条件

  • 您已在组成网格的所有集群上安装了 Alauda Container Platform Networking for Multus 插件。
  • 您已在组成网格的所有集群上安装了 Alauda Service Mesh v2 Operator。
  • 您已完成为多集群网格创建证书
  • 您已完成将证书应用于多网络多集群拓扑
  • 您已在本地安装了 istioctl,以便运行这些操作步骤。

目录

操作步骤

创建定义要安装的 Istio 版本的 ISTIO_VERSION 环境变量

export ISTIO_VERSION=1.26.3

East 集群上安装 Istio

  1. 通过运行以下命令,在 East 集群上创建一个 Istio 资源:

    cat <<EOF | kubectl --context "${CTX_CLUSTER1}" apply -f -
    apiVersion: sailoperator.io/v1
    kind: Istio
    metadata:
      name: default
    spec:
      version: v${ISTIO_VERSION}
      namespace: istio-system
      values:
        global:
          meshID: mesh1
          network: network1
          multiCluster:
            clusterName: cluster1
    EOF
  2. 通过运行以下命令,等待控制平面返回 Ready 状态条件:

    kubectl --context "${CTX_CLUSTER1}" wait --for condition=Ready istio/default --timeout=3m
  3. 通过运行以下命令,在 East 集群上创建东西向网关:

    点击展开
    kubectl --context "${CTX_CLUSTER1}" apply -f https://raw.githubusercontent.com/alauda-mesh/sail-operator/main/docs/deployment-models/resources/east-west-gateway-net1.yaml
  4. 通过运行以下命令,通过网关暴露服务:

    点击展开
    kubectl --context "${CTX_CLUSTER1}" apply -n istio-system -f https://raw.githubusercontent.com/alauda-mesh/sail-operator/main/docs/deployment-models/resources/expose-services.yaml

West 集群上安装 Istio

  1. 通过运行以下命令,在 West 集群上创建一个 Istio 资源:

    cat <<EOF | kubectl --context "${CTX_CLUSTER2}" apply -f -
    apiVersion: sailoperator.io/v1
    kind: Istio
    metadata:
      name: default
    spec:
      version: v${ISTIO_VERSION}
      namespace: istio-system
      values:
        global:
          meshID: mesh1
          network: network2
          multiCluster:
            clusterName: cluster2
    EOF
  2. 通过运行以下命令,等待控制平面返回 Ready 状态条件:

    kubectl --context "${CTX_CLUSTER2}" wait --for condition=Ready istio/default --timeout=3m
  3. 通过运行以下命令,在 West 集群上创建东西向网关:

    kubectl --context "${CTX_CLUSTER2}" apply -f https://raw.githubusercontent.com/alauda-mesh/sail-operator/main/docs/deployment-models/resources/east-west-gateway-net2.yaml
  4. 通过运行以下命令,通过网关暴露服务:

    kubectl --context "${CTX_CLUSTER2}" apply -n istio-system -f https://raw.githubusercontent.com/alauda-mesh/sail-operator/main/docs/deployment-models/resources/expose-services.yaml

East 集群创建 istio-reader-service-account 服务账户

kubectl --context="${CTX_CLUSTER1}" create serviceaccount istio-reader-service-account -n istio-system

West 集群创建 istio-reader-service-account 服务账户

kubectl --context="${CTX_CLUSTER2}" create serviceaccount istio-reader-service-account -n istio-system

East 集群添加 cluster-reader 角色

kubectl --context="${CTX_CLUSTER1}" create clusterrolebinding cluster-reader-istio-reader-sa \
  --clusterrole=cluster-reader \
  --serviceaccount=istio-system:istio-reader-service-account

West 集群添加 cluster-reader 角色

kubectl --context="${CTX_CLUSTER2}" create clusterrolebinding cluster-reader-istio-reader-sa \
  --clusterrole=cluster-reader \
  --serviceaccount=istio-system:istio-reader-service-account

East 集群上安装提供访问 West 集群 API 服务器的远程 secret

istioctl create-remote-secret \
  --context="${CTX_CLUSTER2}" \
  --name=cluster2 \
  --create-service-account=false | \
  kubectl --context="${CTX_CLUSTER1}" apply -f -

West 集群上安装提供访问 East 集群 API 服务器的远程 secret

istioctl create-remote-secret \
  --context="${CTX_CLUSTER1}" \
  --name=cluster1 \
  --create-service-account=false | \
  kubectl --context="${CTX_CLUSTER2}" apply -f -