第 6 章 在受管集群中安装 OpenShift DR Cluster Operator
流程
- 在每个受管集群上,导航到 OperatorHub 并为 OpenShift DR Cluster Operator 过滤。
按照屏幕说明,将操作器安装到
openshift-dr-system
项目中。注意OpenShift DR Cluster Operator
必须同时安装在主受管集群和次受管集群上。在 s3 端点之间配置 SSL 访问,以便可以使用安全传输协议和 Hub 集群中的安全传输协议将元数据存储在 MCG 对象存储桶中的备用集群中,以验证对对象存储桶的访问。
注意如果所有 OpenShift 集群都为您的环境使用签名的可信证书集进行部署,则可以跳过本节。
提取主受管集群 的 ingress 证书,并将输出保存到
primary.crt
。$ oc get cm default-ingress-cert -n openshift-config-managed -o jsonpath="{['data']['ca-bundle\.crt']}" > primary.crt
提取次受管集群 的 ingress 证书,并将输出保存到
second.crt
。$ oc get cm default-ingress-cert -n openshift-config-managed -o jsonpath="{['data']['ca-bundle\.crt']}" > secondary.crt
创建新 ConfigMap 以存放远程集群的证书捆绑包,其文件名为
cm-clusters-crt.yaml
,位于 主受管集群、 次受管集群和 Hub 集群上。注意如本示例文件所示,每个集群可能有超过三个证书。
apiVersion: v1 data: ca-bundle.crt: | -----BEGIN CERTIFICATE----- <copy contents of cert1 from primary.crt here> -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- <copy contents of cert2 from primary.crt here> -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- <copy contents of cert3 primary.crt here> -----END CERTIFICATE---- -----BEGIN CERTIFICATE----- <copy contents of cert1 from secondary.crt here> -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- <copy contents of cert2 from secondary.crt here> -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- <copy contents of cert3 from secondary.crt here> -----END CERTIFICATE----- kind: ConfigMap metadata: name: user-ca-bundle namespace: openshift-config
在 主受管集群、次受管集群 和 Hub 集群上运行以下命令,以创建该文件。
$ oc create -f cm-clusters-crt.yaml
输出示例:
configmap/user-ca-bundle created
重要要使 Hub 集群 使用 DRPolicy 资源验证对象存储桶的访问权限,必须在 Hub 集群上创建相同的 ConfigMap
cm-clusters-crt.yaml
。修改默认的 Proxy 集群资源。
将以下内容复制并保存到新的 YAML 文件
proxy-ca.yaml
中。apiVersion: config.openshift.io/v1 kind: Proxy metadata: name: cluster spec: trustedCA: name: user-ca-bundle
将这个新文件应用到 主受管集群、次受管集群和 Hub集群上的默认代理资源。
$ oc apply -f proxy-ca.yaml
输出示例:
proxy.config.openshift.io/cluster configured
检索多云对象网关(MCG)密钥和外部 S3 端点。
检查 MCG 是否安装在主受管集群和次受管集群 上,以及 Phase 是否处于
Ready
状态。$ oc get noobaa -n openshift-storage
输出示例:
NAME MGMT-ENDPOINTS S3-ENDPOINTS IMAGE PHASE AGE noobaa ["https://10.70.56.161:30145"] ["https://10.70.56.84:31721"] quay.io/rhceph-dev/mcg-core@sha256:c4b8857ee9832e6efc5a8597a08b81730b774b2c12a31a436e0c3fadff48e73d Ready 27h
将以下 YAML 文件复制到名为
odrbucket.yaml
的文件。apiVersion: objectbucket.io/v1alpha1 kind: ObjectBucketClaim metadata: name: odrbucket namespace: openshift-dr-system spec: generateBucketName: "odrbucket" storageClassName: openshift-storage.noobaa.io
在主受管集群和次受管集群上创建 MCG bucket
odrbucket
。$ oc create -f odrbucket.yaml
输出示例:
objectbucketclaim.objectbucket.io/odrbucket created
使用以下命令,提取每个受管集群的
odrbucket
OBC 访问密钥作为其 base-64 编码 值。$ oc get secret odrbucket -n openshift-dr-system -o jsonpath='{.data.AWS_ACCESS_KEY_ID}{"\n"}'
输出示例:
cFpIYTZWN1NhemJjbEUyWlpwN1E=
使用以下命令,提取每个受管集群的
odrbucket
OBC secret 密钥作为其 base-64 编码 值。$ oc get secret odrbucket -n openshift-dr-system -o jsonpath='{.data.AWS_SECRET_ACCESS_KEY}{"\n"}'
输出示例:
V1hUSnMzZUoxMHRRTXdGMU9jQXRmUlAyMmd5bGwwYjNvMHprZVhtNw==
为受管集群创建 S3 Secret。
现在,已经提取了必要的 MCG 信息,必须在主受管集群和次受管集群上创建新的 Secret。这些新的 Secret 存储两个受管集群的 MCG 访问和 secret 密钥。
注意OpenShift DR 需要一个或多个 S3 存储来存储受管集群中工作负载的相关集群数据,并在故障转移或重新定位操作期间编配工作负载的恢复。这些说明适用于使用多云网关(MCG)创建所需的对象存储桶。安装 OpenShift Data Foundation 后,MCG 应已被安装。
将主受管集群的以下 S3 secret YAML 格式复制到名为
odr-s3secret-primary.yaml
的文件。apiVersion: v1 data: AWS_ACCESS_KEY_ID: <primary cluster base-64 encoded access key> AWS_SECRET_ACCESS_KEY: <primary cluster base-64 encoded secret access key> kind: Secret metadata: name: odr-s3secret-primary namespace: openshift-dr-system
将 <primary cluster base-64 编码的 access key > ; 和 <primary cluster base-64 编码的 secret access key > 替换为前面步骤中检索的实际值。
在主受管集群和次受管集群上创建此 secret。
$ oc create -f odr-s3secret-primary.yaml
输出示例:
secret/odr-s3secret-primary created
将次受管集群的以下 S3 secret YAML 格式复制到名为
odr-s3secret-secondary.yaml
的文件。apiVersion: v1 data: AWS_ACCESS_KEY_ID: <secondary cluster base-64 encoded access key> AWS_SECRET_ACCESS_KEY: <secondary cluster base-64 encoded secret access key> kind: Secret metadata: name: odr-s3secret-secondary namespace: openshift-dr-system
使用在第 4 步中获取的实际值替换 <secondary cluster base-64 encoded access key> 和 <secondary cluster base-64 encoded secret access key>。
在主受管集群和次受管集群上创建此 secret。
$ oc create -f odr-s3secret-secondary.yaml
输出示例:
secret/odr-s3secret-secondary created
重要access 和 secret key 的值必须采用 base-64 编码。在前面的步骤中检索了密钥的编码值。
在每个受管集群上配置 OpenShift DR Cluster Operator ConfigMap。
使用以下命令,搜索外部 S3 端点 s3CompatibleEndpoint 或路由来为每个受管集群上的 MCG 进行 MCG。
$ oc get route s3 -n openshift-storage -o jsonpath --template="https://{.spec.host}{'\n'}"
输出示例:
https://s3-openshift-storage.apps.perf1.example.com
重要唯一的 s3CompatibleEndpoint 路由或
s3-openshift-storage.apps.<primary clusterID>.<baseDomain>
和s3-openshift-storage.apps.<secondary clusterID>.<baseDomain>
必须分别为主受管集群和次受管集群获取。搜索
odrbucket
OBC bucket 名称。$ oc get configmap odrbucket -n openshift-dr-system -o jsonpath='{.data.BUCKET_NAME}{"\n"}'
输出示例:
odrbucket-2f2d44e4-59cb-4577-b303-7219be809dcd
重要唯一的 s3Bucket 名称 odrbucket-<your value1> 和 odrbucket-<your value2> 必须分别在主受管集群和次受管集群上获得。
修改 ConfigMap
ramen-dr-cluster-operator-config
以添加新内容。$ oc edit configmap ramen-dr-cluster-operator-config -n openshift-dr-system
从
s3StoreProfiles
开始,将以下新内容添加到 主受管集群和次受管集群的 ConfigMap 中。[...] data: ramen_manager_config.yaml: | apiVersion: ramendr.openshift.io/v1alpha1 kind: RamenConfig [...] ramenControllerType: "dr-cluster" ### Start of new content to be added s3StoreProfiles: - s3ProfileName: s3-primary s3CompatibleEndpoint: https://s3-openshift-storage.apps.<primary clusterID>.<baseDomain> s3Region: primary s3Bucket: odrbucket-<your value1> s3SecretRef: name: odr-s3secret-primary namespace: openshift-dr-system - s3ProfileName: s3-secondary s3CompatibleEndpoint: https://s3-openshift-storage.apps.<secondary clusterID>.<baseDomain> s3Region: secondary s3Bucket: odrbucket-<your value2> s3SecretRef: name: odr-s3secret-secondary namespace: openshift-dr-system [...]