第6章 マネージドクラスターでの OpenShift-DR Cluster Operator のインストール

手順

  1. 各マネージドクラスターで OperatorHub に移動し、OpenShift-DR Cluster Operator を絞り込みます。
  2. 画面の指示に従って、Operator をプロジェクト openshift-dr-system にインストールします。

    注記

    OpenShift DR Cluster Operator は、プライマリーマネージドクラスターセカンダリーマネージドクラスター の両方にインストールする必要があります。

  3. s3 エンドポイント間の SSL アクセスを設定 して、メタデータを安全なトランスポートプロトコルを使用する 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 証明書を抽出し、出力を secondary.crt に保存します。

      $ oc get cm default-ingress-cert -n openshift-config-managed -o jsonpath="{['data']['ca-bundle\.crt']}" > secondary.crt
    3. プライマリーマネージドクラスターセカンダリーマネージドクラスター、および ハブクラスター 上のファイル名 cm-clusters-crt.yaml を使用して、リモートクラスターの証明書バンドルを保持する新しい ConfigMap を作成します。

      注記

      この例のように、クラスターごとに 3 つ以上の証明書が存在する可能性があります。

      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. プライマリーマネージドクラスターセカンダリーマネージドクラスター、および ハブクラスター で以下のコマンドを実行してファイルを作成します。

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

      出力例:

      configmap/user-ca-bundle created
      重要

      ハブクラスターDRPolicy リソースを使用してオブジェクトバケットへのアクセスを確認するには、同じ ConfigMapcm-clusters-crt.yamlハブクラスター に作成する必要があります。

    5. デフォルトの プロキシー クラスターリソースを変更します。

      1. 以下のコンテンツを新しい YAML ファイル proxy-ca.yaml にコピーし、保存します。

        apiVersion: config.openshift.io/v1
        kind: Proxy
        metadata:
          name: cluster
        spec:
          trustedCA:
            name: user-ca-bundle
      2. この新しいファイルを、プライマリーマネージドクラスターセカンダリーマネージドクラスター、および ハブクラスター 上のデフォルトのプロキシーリソースに適用します。

        $ oc apply -f proxy-ca.yaml

        出力例:

        proxy.config.openshift.io/cluster configured
  4. マルチクラウドオブジェクトゲートウェイ (MCG) キーと外部 S3 エンドポイントを取得します。

    1. MCG が プライマリーマネージドクラスター および セカンダリーマネージドクラスター にインストールされているかどうか、および PhaseReady かどうかを確認します。

      $ 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 バケット 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 シークレットキーを base-64 でエンコード された値として展開します。

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

      出力例:

      V1hUSnMzZUoxMHRRTXdGMU9jQXRmUlAyMmd5bGwwYjNvMHprZVhtNw==
  5. マネージドクラスターの S3 シークレットを作成します。

    必要な MCG 情報が抽出されたので、プライマリーマネージドクラスター および セカンダリーマネージドクラスター に新しいシークレットが作成されているはずです。これらの新規シークレットは、両方のマネージドクラスターの MCG アクセスとシークレットキーを保存します。

    注記

    OpenShift DR には、マネージドクラスターからのワークロードの関連クラスターデータを保存するため、およびフェイルオーバーまたは再配置アクション中のワークロード復旧のオーケストレーションを行うために、1 つ以上の S3 ストアが必要です。これらの手順は、Multicloud Gateway (MCG) を使用して必要なオブジェクトバケットを作成するために適用できます。OpenShift Data Foundation のインストールにより、MCG がすでにインストールされているはずです。

    1. プライマリーマネージドクラスター用の以下の S3 シークレット 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 encoded access key> および <primary cluster base-64 encoded secret access key> は、先程の手順で取得した実際の値に置き換えます。

    2. プライマリーマネージドクラスター および セカンダリーマネージドクラスター で、このシークレットを作成します。

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

      出力例:

      secret/odr-s3secret-primary created
    3. セカンダリーマネージドクラスター用の以下の S3 シークレット 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

      <secondary cluster base-64 encoded access key> および <secondary cluster base-64 encoded secret access key> を、手順 4 で取得した実際の値に置き換えます。

    4. プライマリーマネージドクラスター および セカンダリーマネージドクラスター で、このシークレットを作成します。

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

      出力例:

      secret/odr-s3secret-secondary created
      重要

      アクセスキーおよびシークレットキーの値は base-64 でエンコーディングされている 必要があります。エンコードされたキーの値は、前の手順で取得されています。

  6. 各マネージドクラスターで OpenShift-DR Cluster Operator ConfigMap を設定します。

    1. 以下のコマンドを使用して、外部 S3 エンドポイント s3CompatibleEndpoint または各マネージドクラスターで 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 バケット名を検索します。

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

      出力例:

      odrbucket-2f2d44e4-59cb-4577-b303-7219be809dcd
      重要

      一意の s3Bucketodrbucket-<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
      [...]