5.2. 多集群配置概述


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

  • 为每个集群安装 OpenShift Service Mesh Operator。
  • 创建或有权访问每个集群的 root 和中间证书。
  • 为每个集群应用安全证书。
  • 为每个集群安装 Istio。

5.2.1. 为多集群拓扑创建证书

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

先决条件

  • 您已在本地安装了 OpenSSL。

流程

  1. 创建 root CA 证书:

    1. 运行以下命令,为 root 证书创建密钥:

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

      root 证书配置文件示例

      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
  2. 为 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 集群的中间和 root CA 证书创建证书链:

      $ cat east/ca-cert.pem root-cert.pem > east/cert-chain.pem && cp root-cert.pem east
  3. 为 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. 运行以下命令来创建证书:

      $ 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. 运行以下命令来创建证书链:

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

5.2.2. 将证书应用到多集群拓扑

将 root 和中间证书颁发机构(CA)证书应用到多集群拓扑中的集群。

注意

在此过程中,CLUSTER1 是东集群,CLUSTER2 是 West 集群。

先决条件

  • 您可以访问支持外部负载均衡器的两个 OpenShift Container Platform 集群。
  • 您已为每个集群创建 root CA 证书和中间 CA 证书,或者有人可以供您使用。

流程

  1. 将证书应用到多集群拓扑的 East 集群:

    1. 运行以下命令登录到 East 集群:

      $ oc login -u https://<east_cluster_api_server_url>
    2. 运行以下命令,设置包含东集群的 oc 命令上下文的环境变量:

      $ export CTX_CLUSTER1=$(oc config current-context)
    3. 运行以下命令,创建一个名为 istio-system 的项目:

      $ oc get project istio-system --context "${CTX_CLUSTER1}" || oc new-project istio-system --context "${CTX_CLUSTER1}"
    4. 运行以下命令,将 Istio 配置为使用 network1 作为 East 集群中的 pod 的默认网络:

      $ oc --context "${CTX_CLUSTER1}" label namespace istio-system topology.istio.io/network=network1
    5. 运行以下命令,在东集群中为 Istio 创建 CA 证书、证书链和私钥:

      $ oc get secret -n istio-system --context "${CTX_CLUSTER1}" cacerts || oc 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
      注意

      如果您遵循"为多集群网格创建证书"中的说明,您的证书将位于 east/ 目录中。如果您的证书位于不同的目录中,请相应地修改语法。

  2. 将证书应用到多集群拓扑的 West 集群:

    1. 运行以下命令登录到 West 集群:

      $ oc login -u https://<west_cluster_api_server_url>
    2. 运行以下命令,设置包含 West 集群的 oc 命令上下文的环境变量:

      $ export CTX_CLUSTER2=$(oc config current-context)
    3. 运行以下命令,创建一个名为 istio-system 的项目:

      $ oc get project istio-system --context "${CTX_CLUSTER2}" || oc new-project istio-system --context "${CTX_CLUSTER2}"
    4. 运行以下命令,将 Istio 配置为使用 network2 作为 West 集群中的 pod 的默认网络:

      $ oc --context "${CTX_CLUSTER2}" label namespace istio-system topology.istio.io/network=network2
    5. 运行以下命令,在 West 集群上为 Istio 创建 CA 证书 secret:

      $ oc get secret -n istio-system --context "${CTX_CLUSTER2}" cacerts || oc 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
      注意

      如果您遵循"为多集群网格创建证书"中的说明,您的证书将位于 west/ 目录中。如果证书位于不同的目录中,请相应地修改语法。

后续步骤

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.