第 6 章 在受管集群中安装 OpenShift DR Cluster Operator

流程

  1. 在每个受管集群上,导航到 OperatorHub 并为 OpenShift DR Cluster Operator 过滤。
  2. 按照屏幕说明,将操作器安装到 openshift-dr-system 项目中。

    注意

    OpenShift DR Cluster Operator 必须同时安装在主受管集群次受管集群上。

  3. s3 端点之间配置 SSL 访问,以便可以使用安全传输协议和 Hub 集群中的安全传输协议将元数据存储在 MCG 对象存储桶中的备用集群中,以验证对对象存储桶的访问。

    注意

    如果所有 OpenShift 集群都为您的环境使用签名的可信证书集进行部署,则可以跳过本节。

    1. 提取主受管集群 的 ingress 证书,并将输出保存到 primary.crt

      $ oc get cm default-ingress-cert -n openshift-config-managed -o jsonpath="{['data']['ca-bundle\.crt']}" > primary.crt
    2. 提取次受管集群 的 ingress 证书,并将输出保存到 second.crt

      $ oc get cm default-ingress-cert -n openshift-config-managed -o jsonpath="{['data']['ca-bundle\.crt']}" > secondary.crt
    3. 创建新 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
    4. 主受管集群次受管集群Hub 集群上运行以下命令,以创建该文件。

      $ oc create -f cm-clusters-crt.yaml

      输出示例:

      configmap/user-ca-bundle created
      重要

      要使 Hub 集群 使用 DRPolicy 资源验证对象存储桶的访问权限,必须在 Hub 集群上创建相同的 ConfigMap cm-clusters-crt.yaml

    5. 修改默认的 Proxy 集群资源。

      1. 将以下内容复制并保存到新的 YAML 文件 proxy-ca.yaml 中。

        apiVersion: config.openshift.io/v1
        kind: Proxy
        metadata:
          name: cluster
        spec:
          trustedCA:
            name: user-ca-bundle
      2. 将这个新文件应用到 主受管集群次受管集群Hub集群上的默认代理资源。

        $ oc apply -f proxy-ca.yaml

        输出示例:

        proxy.config.openshift.io/cluster configured
  4. 检索多云对象网关(MCG)密钥和外部 S3 端点。

    1. 检查 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
    2. 将以下 YAML 文件复制到名为 odrbucket.yaml 的文件。

      apiVersion: objectbucket.io/v1alpha1
      kind: ObjectBucketClaim
      metadata:
        name: odrbucket
        namespace: openshift-dr-system
      spec:
        generateBucketName: "odrbucket"
        storageClassName: openshift-storage.noobaa.io
    3. 主受管集群次受管集群上创建 MCG bucket odrbucket

      $ oc create -f odrbucket.yaml

      输出示例:

      objectbucketclaim.objectbucket.io/odrbucket created
    4. 使用以下命令,提取每个受管集群的 odrbucket OBC 访问密钥作为其 base-64 编码 值。

      $ oc get secret odrbucket -n openshift-dr-system -o jsonpath='{.data.AWS_ACCESS_KEY_ID}{"\n"}'

      输出示例:

      cFpIYTZWN1NhemJjbEUyWlpwN1E=
    5. 使用以下命令,提取每个受管集群的 odrbucket OBC secret 密钥作为其 base-64 编码 值。

      $ oc get secret odrbucket -n openshift-dr-system -o jsonpath='{.data.AWS_SECRET_ACCESS_KEY}{"\n"}'

      输出示例:

      V1hUSnMzZUoxMHRRTXdGMU9jQXRmUlAyMmd5bGwwYjNvMHprZVhtNw==
  5. 为受管集群创建 S3 Secret。

    现在,已经提取了必要的 MCG 信息,必须在主受管集群次受管集群上创建新的 Secret。这些新的 Secret 存储两个受管集群的 MCG 访问和 secret 密钥。

    注意

    OpenShift DR 需要一个或多个 S3 存储来存储受管集群中工作负载的相关集群数据,并在故障转移或重新定位操作期间编配工作负载的恢复。这些说明适用于使用多云网关(MCG)创建所需的对象存储桶。安装 OpenShift Data Foundation 后,MCG 应已被安装。

    1. 将主受管集群的以下 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 &gt ; 和 <primary cluster base-64 编码的 secret access key > 替换为前面步骤中检索的实际值。

    2. 主受管集群次受管集群上创建此 secret。

      $ oc create -f odr-s3secret-primary.yaml

      输出示例:

      secret/odr-s3secret-primary created
    3. 将次受管集群的以下 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>

    4. 主受管集群次受管集群上创建此 secret。

      $ oc create -f odr-s3secret-secondary.yaml

      输出示例:

      secret/odr-s3secret-secondary created
      重要

      access 和 secret key 的值必须采用 base-64 编码。在前面的步骤中检索了密钥的编码值。

  6. 在每个受管集群上配置 OpenShift DR Cluster Operator ConfigMap。

    1. 使用以下命令,搜索外部 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> 必须分别为主受管集群次受管集群获取。

    2. 搜索 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> 必须分别在主受管集群次受管集群上获得。

    3. 修改 ConfigMap ramen-dr-cluster-operator-config 以添加新内容。

      $ oc edit configmap ramen-dr-cluster-operator-config -n openshift-dr-system
    4. 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
      [...]