主-从架构的安装

    继续安装之前,请先确认完成了准备工作中的步骤。

    如果您使用 kind 测试多集群,您可以使用 让 LoadBalancer 服务使用 EXTERNAL-IP

    在此配置中,集群 cluster1 将监测两个集群 API Server 的服务端点。 以这种方式,控制平面就能为两个集群中的工作负载提供服务发现。

    服务的工作负载( Pod 到 Pod )可跨集群边界直接通讯。

    cluster2 中的服务将通过专用的东西向网关流量访问 cluster1 的控制平面。

    Primary and remote clusters on the same network

    目前,从集群配置档在从集群安装 Istio 服务器,该服务器用来为集群中的工作负载注入 CA 和 Webhook。 但是,服务发现会被指向主集群的控制平面。

    cluster1 创建 Istio 配置文件:

    将配置文件应用到 cluster1

    1. $ istioctl install --context="${CTX_CLUSTER1}" -f cluster1.yaml

    cluster1 安装东西向网关

    在 中安装东西向流量专用网关,默认情况下,此网关将被公开到互联网上。 生产环境可能需要增加额外的准入限制(即:通过防火墙规则)来防止外部攻击。 咨询你的云供应商,了解可用的选项。

    1. $ @samples/multicluster/gen-eastwest-gateway.sh@ \
    2. --mesh mesh1 --cluster cluster1 --network network1 | \
    3. istioctl --context="${CTX_CLUSTER1}" install -y -f -

    如果随着版本修正已经安装控制面板,在 gen-eastwest-gateway.sh 命令中添加 --revision rev 标志。

    等待东西向网关获取外部 IP 地址:

    在安装 cluster2 之前,我们需要开放 cluster1 的控制平面, 以便 cluster2 中的服务能访问到服务发现:

    Zip

    1. @samples/multicluster/expose-istiod.yaml@

    启用 API Server 访问 cluster2 配置

    • 开启控制平面的身份认证功能,以验证 cluster2 中工作负载的连接请求。如果没有 API Server 的访问权限,控制平面将会拒绝该请求。

    • cluster2 的服务端点开启服务发现。

    为了能够访问 cluster2 API Server,我们要生成一个从集群的 Secret,并把它应用到 cluster1

    1. $ istioctl x create-remote-secret \
    2. --name=cluster2 | \
    3. kubectl apply -f - --context="${CTX_CLUSTER1}"

    保存 cluster1 东西向网关的地址。

    现在,为 cluster2 创建一个从集群配置:

    1. $ cat <<EOF > cluster2.yaml
    2. apiVersion: install.istio.io/v1alpha1
    3. kind: IstioOperator
    4. profile: remote
    5. values:
    6. global:
    7. meshID: mesh1
    8. multiCluster:
    9. clusterName: cluster2
    10. network: network1
    11. remotePilotAddress: ${DISCOVERY_ADDRESS}
    12. EOF

    将此配置应用到 cluster2

    恭喜! 你已经成功地安装了跨主-从集群的 Istio 网格!

    后续步骤

    现在,你可以。