5.2. 多集群配置概述
要配置多集群拓扑,您必须执行以下操作:
- 为每个集群安装 OpenShift Service Mesh Operator。
- 创建或有权访问每个集群的 root 和中间证书。
- 为每个集群应用安全证书。
- 为每个集群安装 Istio。
5.2.1. 为多集群拓扑创建证书
为两个集群创建根和中间证书颁发机构(CA)证书。
先决条件
- 您已在本地安装了 OpenSSL。
流程
创建 root CA 证书:
运行以下命令,为 root 证书创建密钥:
$ openssl genrsa -out root-key.pem 4096
为 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
运行以下命令来创建证书签名请求:
$ openssl req -sha256 -new -key root-key.pem \ -config root-ca.conf \ -out root-cert.csr
运行以下命令来创建共享根证书:
$ 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 证书:
运行以下命令,创建名为
east
的目录:$ mkdir east
运行以下命令,为 East 集群为中间证书创建一个密钥:
$ openssl genrsa -out east/ca-key.pem 4096
在
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
运行以下命令来创建证书签名请求:
$ openssl req -new -config east/intermediate.conf \ -key east/ca-key.pem \ -out east/cluster-ca.csr
运行以下命令,为 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
运行以下命令,从 east 集群的中间和 root CA 证书创建证书链:
$ cat east/ca-cert.pem root-cert.pem > east/cert-chain.pem && cp root-cert.pem east
为 West 集群创建中间 CA 证书:
运行以下命令,创建名为
west
的目录:$ mkdir west
运行以下命令,为 West 集群创建一个中间证书的密钥:
$ openssl genrsa -out west/ca-key.pem 4096
在
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
运行以下命令来创建证书签名请求:
$ openssl req -new -config west/intermediate.conf \ -key west/ca-key.pem \ -out west/cluster-ca.csr
运行以下命令来创建证书:
$ 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
运行以下命令来创建证书链:
$ 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 证书,或者有人可以供您使用。
流程
将证书应用到多集群拓扑的 East 集群:
运行以下命令登录到 East 集群:
$ oc login -u https://<east_cluster_api_server_url>
运行以下命令,设置包含东集群的
oc
命令上下文的环境变量:$ export CTX_CLUSTER1=$(oc config current-context)
运行以下命令,创建一个名为
istio-system
的项目:$ oc get project istio-system --context "${CTX_CLUSTER1}" || oc new-project istio-system --context "${CTX_CLUSTER1}"
运行以下命令,将 Istio 配置为使用
network1
作为 East 集群中的 pod 的默认网络:$ oc --context "${CTX_CLUSTER1}" label namespace istio-system topology.istio.io/network=network1
运行以下命令,在东集群中为 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/
目录中。如果您的证书位于不同的目录中,请相应地修改语法。
将证书应用到多集群拓扑的 West 集群:
运行以下命令登录到 West 集群:
$ oc login -u https://<west_cluster_api_server_url>
运行以下命令,设置包含 West 集群的
oc
命令上下文的环境变量:$ export CTX_CLUSTER2=$(oc config current-context)
运行以下命令,创建一个名为
istio-system
的项目:$ oc get project istio-system --context "${CTX_CLUSTER2}" || oc new-project istio-system --context "${CTX_CLUSTER2}"
运行以下命令,将 Istio 配置为使用
network2
作为 West 集群中的 pod 的默认网络:$ oc --context "${CTX_CLUSTER2}" label namespace istio-system topology.istio.io/network=network2
运行以下命令,在 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。