多集群配置概述

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

  • 为每个集群安装 Alauda Container Platform Networking 的 Multus 插件。
  • 为每个集群安装 Alauda Service Mesh Operator。
  • 为每个集群创建或获取根证书和中间证书。
  • 为每个集群应用安全证书。
  • 为每个集群安装 Istio。

目录

为多集群网格创建证书

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

前提条件

  • 本地已安装 OpenSSL

操作步骤

创建根 CA 证书

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

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

    根证书配置文件示例
    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/ 目录下创建一个名为 intermediate.conf 的 OpenSSL 配置文件,用于 East 集群的中间证书。复制以下示例文件并保存:

    配置文件示例
    [ 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 集群创建中间证书和根证书的证书链:

    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/ 目录下创建一个名为 intermediate.conf 的 OpenSSL 配置文件,用于 West 集群的中间证书。复制以下示例文件并保存:

    配置文件示例
    [ 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 集群创建中间证书和根证书的证书链:

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

将证书应用于多网络多集群网格

将根证书和中间证书颁发机构(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 的命名空间:

    kubectl --context "${CTX_CLUSTER1}" create namespace istio-system
  2. 通过运行以下命令配置 Istio 使用 network1 作为 East 集群中 Pod 的默认网络:

    kubectl --context "${CTX_CLUSTER1}" label namespace istio-system topology.istio.io/network=network1
  3. 通过运行以下命令为 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

    如果您按照为多集群网格创建证书中的说明操作,您的证书将位于 east/ 目录中。 如果您的证书位于其他目录,请相应修改命令中的路径。

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

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

    kubectl --context "${CTX_CLUSTER2}" create namespace istio-system
  2. 通过运行以下命令配置 Istio 使用 network2 作为 West 集群中 Pod 的默认网络:

    kubectl --context "${CTX_CLUSTER2}" label namespace istio-system topology.istio.io/network=network2
  3. 通过运行以下命令为 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

    如果您按照为多集群网格创建证书中的说明操作,您的证书将位于 west/ 目录中。 如果您的证书位于其他目录,请相应修改命令中的路径。

后续步骤

在组成网格拓扑的所有集群上安装 Istio。