多集群配置概述

要配置多集群拓扑,必须执行以下操作:

  • 为每个集群安装 Alauda Container Platform Networking for Multus 插件,并且 kube-ovn 必须是 v4.1.5 或更高版本。
  • 为每个集群安装 Alauda Service Mesh operator。
  • 每个集群中的 API Server 必须可被 mesh 中的其他集群访问。
  • 为每个集群创建或获取根证书和中间证书。
  • 将安全证书应用到每个集群。
  • 为每个集群安装 Istio。

为多集群 mesh 创建证书

为两个集群创建根证书和中间证书颁发机构(CA)证书。

先决条件

  • 本地已安装 OpenSSL

操作步骤

创建根 CA 证书

  1. 通过运行以下命令为根证书创建密钥:

    openssl genrsa -out root-key.pem 4096
  2. 为根 CA 证书创建一个名为 root-ca.conf 的 OpenSSL 配置证书文件:

    根证书配置文件示例
    encrypt_key = no
    prompt = no
    utf8 = yes
    default_md = sha256
    default_bits = 4096
    req_extensions = req_ext
    x509_extensions = req_ext
    distinguished_name = req_dn
    [ req_ext ]
    subjectKeyIdentifier = hash
    basicConstraints = critical, CA:true
    keyUsage = critical, digitalSignature, nonRepudiation, keyEncipherment, keyCertSign
    [ req_dn ]
    O = Istio
    CN = Root CA
  3. 通过运行以下命令创建证书签名请求:

    openssl req -sha256 -new -key root-key.pem \
        -config root-ca.conf \
        -out root-cert.csr
  4. 通过运行以下命令创建共享根证书:

    openssl x509 -req -sha256 -days 3650 \
        -signkey root-key.pem \
        -extensions req_ext -extfile root-ca.conf \
        -in root-cert.csr \
        -out root-cert.pem

East 集群创建中间 CA 证书

  1. 通过运行以下命令创建名为 east 的目录:

    mkdir east
  2. 通过运行以下命令为 East 集群的中间证书创建密钥:

    openssl genrsa -out east/ca-key.pem 4096
  3. east/ 目录中为 East 集群的中间证书创建一个名为 intermediate.conf 的 OpenSSL 配置文件。复制以下示例文件并将其保存在本地:

    配置文件示例
    [ req ]
    encrypt_key = no
    prompt = no
    utf8 = yes
    default_md = sha256
    default_bits = 4096
    req_extensions = req_ext
    x509_extensions = req_ext
    distinguished_name = req_dn
    [ req_ext ]
    subjectKeyIdentifier = hash
    basicConstraints = critical, CA:true, pathlen:0
    keyUsage = critical, digitalSignature, nonRepudiation, keyEncipherment, keyCertSign
    subjectAltName=@san
    [ san ]
    DNS.1 = istiod.istio-system.svc
    [ req_dn ]
    O = Istio
    CN = Intermediate CA
    L = east
  4. 通过运行以下命令创建证书签名请求:

    openssl req -new -config east/intermediate.conf \
      -key east/ca-key.pem \
      -out east/cluster-ca.csr
  5. 通过运行以下命令为 East 集群创建中间 CA 证书:

    openssl x509 -req -sha256 -days 3650 \
      -CA root-cert.pem \
      -CAkey root-key.pem -CAcreateserial \
      -extensions req_ext -extfile east/intermediate.conf \
      -in east/cluster-ca.csr \
      -out east/ca-cert.pem
  6. 通过运行以下命令,为 east 集群从中间 CA 和根 CA 证书创建证书链:

    cat east/ca-cert.pem root-cert.pem > east/cert-chain.pem && cp root-cert.pem east

West 集群创建中间 CA 证书

  1. 通过运行以下命令创建名为 west 的目录:

    mkdir west
  2. 通过运行以下命令为 West 集群的中间证书创建密钥:

    openssl genrsa -out west/ca-key.pem 4096
  3. west/ 目录中为 West 集群的中间证书创建一个名为 intermediate.conf 的 OpenSSL 配置文件。复制以下示例文件并将其保存在本地:

    配置文件示例
    [ req ]
    encrypt_key = no
    prompt = no
    utf8 = yes
    default_md = sha256
    default_bits = 4096
    req_extensions = req_ext
    x509_extensions = req_ext
    distinguished_name = req_dn
    [ req_ext ]
    subjectKeyIdentifier = hash
    basicConstraints = critical, CA:true, pathlen:0
    keyUsage = critical, digitalSignature, nonRepudiation, keyEncipherment, keyCertSign
    subjectAltName=@san
    [ san ]
    DNS.1 = istiod.istio-system.svc
    [ req_dn ]
    O = Istio
    CN = Intermediate CA
    L = west
  4. 通过运行以下命令创建证书签名请求:

    openssl req -new -config west/intermediate.conf \
      -key west/ca-key.pem \
      -out west/cluster-ca.csr
  5. 通过运行以下命令为 West 集群创建中间 CA 证书:

    openssl x509 -req -sha256 -days 3650 \
      -CA root-cert.pem \
      -CAkey root-key.pem -CAcreateserial \
      -extensions req_ext -extfile west/intermediate.conf \
      -in west/cluster-ca.csr \
      -out west/ca-cert.pem
  6. 通过运行以下命令,为 west 集群从中间 CA 和根 CA 证书创建证书链:

    cat west/ca-cert.pem root-cert.pem > west/cert-chain.pem && cp root-cert.pem west

将证书应用到多网络多集群 mesh

将根证书和中间证书颁发机构(CA)证书应用到多网络多集群拓扑中的各个集群。

NOTE

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

先决条件

  • 你可以访问两个支持外部负载均衡器的集群。
  • 你已经为每个集群创建了根 CA 证书和中间 CA 证书,或者这些证书已可供你使用。

操作步骤

环境变量

为简化说明,以下环境变量将在全文中使用:

变量别名说明
CTX_CLUSTER1East默认 Kubernetes 配置文件 中用于访问 cluster1 集群的上下文名称。
CTX_CLUSTER2West默认 Kubernetes 配置文件 中用于访问 cluster2 集群的上下文名称。

继续之前,请设置这两个变量:

export CTX_CLUSTER1=<your cluster1 context>
export CTX_CLUSTER2=<your cluster2 context>

将证书应用到多集群拓扑中的 East 集群

  1. 通过运行以下命令创建名为 istio-system 的 namespace:

    kubectl --context "${CTX_CLUSTER1}" create namespace istio-system
  2. 通过运行以下命令为 East 集群上的 Istio 创建 CA 证书、证书链和私钥:

    kubectl get secret -n istio-system --context "${CTX_CLUSTER1}" cacerts || kubectl create secret generic cacerts -n istio-system --context "${CTX_CLUSTER1}" \
      --from-file=east/ca-cert.pem \
      --from-file=east/ca-key.pem \
      --from-file=east/root-cert.pem \
      --from-file=east/cert-chain.pem
    NOTE

    如果你按照 为多集群 mesh 创建证书 中的说明进行操作,则证书将位于 east/ 目录中。 如果证书位于其他目录,请相应修改语法。

将证书应用到多集群拓扑中的 West 集群

  1. 通过运行以下命令创建名为 istio-system 的 namespace:

    kubectl --context "${CTX_CLUSTER2}" create namespace istio-system
  2. 通过运行以下命令为 West 集群上的 Istio 创建 CA 证书、证书链和私钥:

    kubectl get secret -n istio-system --context "${CTX_CLUSTER2}" cacerts || kubectl create secret generic cacerts -n istio-system --context "${CTX_CLUSTER2}" \
      --from-file=west/ca-cert.pem \
      --from-file=west/ca-key.pem \
      --from-file=west/root-cert.pem \
      --from-file=west/cert-chain.pem
    NOTE

    如果你按照 为多集群 mesh 创建证书 中的说明进行操作,则证书将位于 west/ 目录中。 如果证书位于其他目录,请相应修改语法。

后续步骤

在构成 mesh 拓扑的所有集群上安装 Istio。