8.2.3. 既存のバージョンが cns-deploy を使用してデプロイされている場合のアップグレード

8.2.3.1. Openshift ノードでの Heketi のアップグレード

以下のコマンドは、クライアントマシンで実行する必要があります。

  1. 以下のコマンドを実行して、heketi クライアントパッケージおよび cns-deploy パッケージを更新します。

    # yum update cns-deploy -y
    # yum update heketi-client -y
  2. Heketi データベースファイルのバックアップを作成します。

    # heketi-cli db dump > heketi-db-dump-$(date -I).json
  3. 以下のコマンドを実行して、現在の HEKETI_ADMIN_KEY を取得します。

    OCS 管理者は、インフラストラクチャーによって使用されていない限り、ユーザーキーに任意のフレーズを設定することを選択できます。これは、OCSのデフォルトでインストールされているリソースでは使用されません。

    oc get secret <heketi-admin-secret-name> -o jsonpath='{.data.key}'|base64 -d;echo

    <heketi-admin-secret-name> は、ユーザーが作成した heketi 管理シークレットの名前に置き換えます。

  4. 以下のコマンドを実行して、heketi テンプレートを削除します。

    # oc delete templates heketi
  5. 以下のコマンドを実行して、heketi テンプレートをインストールします。

    # oc create -f /usr/share/heketi/templates/heketi-template.yaml
    template "heketi" created
    • 以下のコマンドを実行して、heketi サービスアカウントに必要な権限を付与します。

      # oc policy add-role-to-user edit system:serviceaccount: <project_name>:heketi-service-account
      # oc adm policy add-scc-to-user privileged -z heketi-service-account

      以下に例を示します。

      # oc policy add-role-to-user edit system:serviceaccount:storage-project:heketi-service-account
      # oc adm policy add-scc-to-user privileged -z heketi-service-account
      注記

      Heketi/rhgs-volmanager Pod は heketidb ストレージ Gluster ボリュームを「glusterfs」のボリュームタイプとしてマウントし、PersistentVolume(PV)ではなく heketidb ストレージ Gluster ボリュームを「glusterfs」としてマウントするため、heketi Pod で使用するサービスアカウントは特権が必要です。
      OpenShift の security-context-constraints の規定によると、configMap、downwardAPI、emptyDir、hostPath、nfs、persistentVolumeClaim、secret のタイプではないボリュームをマウントできる機能は、特権付き SCC(Security Context Constraint)のアカウントにだけ付与されます。

  6. 以下のコマンドを実行して、新しい heketi 設定ファイルを生成します。

    # sed -e "s/\${HEKETI_EXECUTOR}/ssh/" -e "s#\${HEKETI_FSTAB}#/etc/fstab#" -e "s/\${SSH_PORT}/22/" -e "s/\${SSH_USER}/root/" -e "s/\${SSH_SUDO}/false/" -e "s/\${BLOCK_HOST_CREATE}/true/" -e "s/\${BLOCK_HOST_SIZE}/500/" "/usr/share/heketi/templates/heketi.json.template" > heketi.json
    • BLOCK_HOST_SIZEパラメーターは、gluster-blockボリュームをホストする自動作成されたRed Hat Gluster Storageボリュームのサイズ(GB単位)を制御します(詳細はhttps://access.redhat.com/documentation/ja-jp/red_hat_openshift_container_storage/3.11/html-single/operations_guide/#Block_Storageを参照してください)。このデフォルト設定では、より多くの領域が必要になるため、500GB のブロックホスティングボリュームを動的に作成します。
    • または、/usr/share/heketi/templates/heketi.json.template を現在のディレクトリーの heketi.json にコピーし、新規ファイルを直接編集して、各"${VARIABLE}"文字列を必要なパラメーターに置き換えます。

      注記

      JSON フォーマットが厳密に必要とされています(末尾にスペースを入れない、ブール値はすべて小文字など)。

  7. 以下のコマンドを実行して、設定ファイルを保持するためのシークレットを作成します。

    # oc create secret generic heketi-config-secret --from-file=private_key=${SSH_KEYFILE} --from-file=./heketi.json
    注記

    heketi-config-secret ファイルがすでに存在する場合は、ファイルを削除して以下のコマンドを実行します。

  8. 以下のコマンドを実行して、heketi のデプロイメント設定、サービス、ルートを削除します。

    # oc delete deploymentconfig,service,route heketi
  9. heketi テンプレートを編集します。

    • HEKETI_USER_KEY、HEKETI_ADMIN_KEY および HEKETI_EXECUTOR パラメーターを編集します。

      # oc edit template heketi
      parameters:
        - description: Set secret for those creating volumes as type user
          displayName: Heketi User Secret
          name: HEKETI_USER_KEY
          value: <heketiuserkey>
        - description: Set secret for administration of the Heketi service as user admin
          displayName: Heketi Administrator Secret
          name: HEKETI_ADMIN_KEY
          value: <adminkey>
        - description: Set the executor type, kubernetes or ssh
          displayName: heketi executor type
          name: HEKETI_EXECUTOR
          value: ssh
        - description: Set the fstab path, file that is populated with bricks that heketi creates
          displayName: heketi fstab path
          name: HEKETI_FSTAB
          value: /etc/fstab
        - description: Set the hostname for the route URL
            displayName: heketi route name
            name: HEKETI_ROUTE
            value: heketi-storage
          - displayName: heketi container image name
            name: IMAGE_NAME
            required: true
            value: registry.redhat.io/rhgs3/rhgs-volmanager-rhel7:v3.11.8
          - description: A unique name to identify this heketi service, useful for running multiple
              heketi instances
            displayName: GlusterFS cluster name
            name: CLUSTER_NAME
            value: storage
      注記

      クラスターに 1000 を超えるボリュームがある場合は、How to change the default PVS limit in Openshift Container Storage を参照し、アップグレードに進む前に必要なパラメーターを追加します。

      アップグレードするバージョンに応じて、IMAGE_NAME の下の valuev3.11.5 または v3.11.8 に置き換えます。

      - displayName: heketi container image name
         name: IMAGE_NAME
         required: true
         value: registry.redhat.io/rhgs3/rhgs-volmanager-rhel7:v3.11.8
  10. 以下のコマンドを実行して、OpenShift の永続ボリュームを作成するために使用する Heketi サービス、ルート、およびデプロイメント設定をデプロイします。

    # oc process heketi | oc create -f -
    
    service "heketi" created
    route "heketi" created
    deploymentconfig "heketi" created
    注記

    db ワークロード用に、heketidbstorage ボリュームを調整することを推奨します。新たにインストールされた Openshift Container Storage デプロイメントにより、heketidbstorage ボリュームが自動的にチューニングされます。古いデプロイメントの場合は、KCS の記事 Planning to run containerized DB or nosql workloads on Openshift Container Storage? に従って、ボリューム heketidbstorage のボリュームセット操作を実行します。

  11. 以下のコマンドを実行して、コンテナーが実行していることを確認します。

    # oc get pods

    以下は例になります。

    # oc get pods
    NAME                                          READY     STATUS    RESTARTS   AGE
    glusterblock-storage-provisioner-dc-1-ffgs5   1/1       Running   0          3m
    glusterfs-storage-5thpc                       1/1       Running   0          9d
    glusterfs-storage-hfttr                       1/1       Running   0          9d
    glusterfs-storage-n8rg5                       1/1       Running   0          9d
    heketi-storage-4-9fnvz                        2/2       Running   0          8d