Satellite クラスタ向けの IBM Cloud Object Storage ドライバの設定

IBM Cloud Object Storage ドライバーを Satellite クラスターにデプロイし、 IBM、 AWS、Wasabi、 Azure などの複数の S3-compatible クラウドストレージプロバイダーにまたがってデータを作成・アクセスする方法について学びましょう。

ロケーションのクラスタにストレージテンプレートをデプロイする前に、コンソールで [Enable cluster admin access for Satellite Config] オプションを選択するか、クラスタを作成するときに[ --enable-config-admin ]オプションを含めて、 Satellite Configを設定していることを確認してください。

Satellite ストレージサービスをリソースグループにスコープすることはできません。 ただし、ロケーションやクラスタなどの他のリソースをリソースグループにスコープする場合は、 アカウント内のすべてのリソースに Satellite リーダーとリンク管理者ロールを追加する必要があります。

前提条件

  1. Satellite ロケーションを作成します

  2. オブジェクト・ストレージ・プロバイダーでサービス資格情報のセットを作成します。

  3. s3 資格情報を含むシークレットを作成します

オブジェクト・ストレージ資格情報を含むシークレットをクラスター内に作成する

サービス資格情報を含むクラスター内に Kubernetes シークレットを作成します。

  1. オブジェクト・ストレージ・プロバイダーに基づくステップに従って、クラスター内にシークレットを作成します。 シークレットを作成すると、すべての値が自動的に base64 にエンコードされます。 次の例では、シークレット名は「 cos-write-access 」です。

    • IBM Cloud Object Storage

      1. サービスインスタンスIDを確認してください。

        ibmcloud resource service-instance <service_name> | grep GUID
        
      2. クラスター内にシークレットを作成します。

        oc create secret generic cos-write-access --type=ibm/ibmc-s3fs --from-literal=api-key=API-KEY --from-literal=service-instance-id=SERVICE-INSTANCE-ID
        
    • AWS またはWasッサビ

        oc create secret generic cos-write-access --type=ibm/ibmc-s3fs --from-literal=access-key=ACCESS-KEY-ID --from-literal=secret-key=SECRET-ACCESS-KEY
        ```
    
    
    
    
    

コンソールでの構成の作成と割り当て

  1. パラメーターのリファレンスを確認します

  2. [ロケーション]コンソールから、ストレージ構成を作成するロケーションを選択します。

  3. ストレージ > ストレージ構成の作成を選択します。

  4. 構成の名前を入力します。

  5. ストレージの種類を選択してください。

  6. バージョンを選択し、「 次へ 」をクリックしてください

  7. 選択した 「ストレージ・タイプ」 がカスタム・パラメーターを受け入れる場合は、 「パラメーター」 タブでそれらのパラメーターを入力します。

  8. 選択した ストレージ・タイプ にシークレットが必要な場合は、 「シークレット (Secrets)」 タブに入力します。

  9. ストレージ・クラスタブで、構成によってデプロイされたストレージ・クラスを確認するか、カスタム・ストレージ・クラスを作成します。

  10. サービスへの割り当てタブで、構成の割り当て先となるサービスを選択します。

  11. 完了をクリックして、ストレージ構成を割り当てます。

CLI での構成の作成

  1. 使用するテンプレート・バージョンの パラメーター・リファレンス を確認します。

  2. IBM Cloud CLI にログインします。

    ibmcloud login
    
  3. Satellite ロケーションをリストして、Managed from 列をメモします。

    ibmcloud sat location ls
    
  4. Satellite ロケーションの Managed from リージョンをターゲットにします。 例えば、wdc の場合は、us-east をターゲットにします。 詳しくは、Satellite リージョンを参照してください。

    ibmcloud target -r us-east
    
  5. default 以外のリソース・グループを使用する場合は、そのリソース・グループをターゲットにします。

    ibmcloud target -g RESOURCE_GROUP
    
  6. 使用するテンプレート・バージョンについて、以下のいずれかのコマンド例をコピーします。 コマンドについて詳しくは、 コマンド・リファレンスibmcloud sat storage config create を参照してください。

    バージョン 2.2 構成を作成するコマンドの例。

    ibmcloud sat storage config create --location LOCATION --name NAME --template-name ibm-object-storage-plugin --template-version 2.2 --param "helm-release-name=HELM-RELEASE-NAME"  --param "parameters=PARAMETERS"  --param "license=LICENSE"  --param "s3provider=S3PROVIDER"  --param "cos-storageclass=COS-STORAGECLASS"  --param "cos-endpoint=COS-ENDPOINT"
    
  7. 使用する設定に基づいて、コマンドをカスタマイズします。

  8. 設定を作成するには、コマンドを実行してください。

  9. 設定が作成されたことを確認してください。

    ibmcloud sat storage config get --config CONFIG
    

API での構成の作成

  1. API キーを生成してから、リフレッシュ・トークンを要求します。 詳しくは、API キーを使用した IBM Cloud IAM トークンの生成を参照してください。

  2. 使用するテンプレート・バージョンの パラメーター・リファレンス を確認します。

  3. 以下のいずれかの要求例をコピーし、使用する変数を置き換えます。

    バージョン 2.2 構成を作成する要求の例。

    curl -X POST "https://containers.cloud.ibm.com/global/v2/storage/satellite/createStorageConfigurationByController" -H "accept: application/json" -H "Authorization: TOKEN" -H "Content-Type: application/json" -d "{ \"config-name\": \"string\", \"controller\": \"string\", \"storage-class-parameters\": [ { \"additionalProp1\": \"string\", \"additionalProp2\": \"string\", \"additionalProp3\": \"string\" } ], \"storage-template-name\": \"ibm-object-storage-plugin\", \"storage-template-version\": \"2.2\", \"update-assignments\": true, \"user-config-parameters\": { \"entry.name\": \"HELM-RELEASE-NAME\", { \"entry.name\": \"PARAMETERS\", { \"entry.name\": \"LICENSE\", { \"entry.name\": \"S3PROVIDER\", { \"entry.name\": \"COS-STORAGECLASS\", { \"entry.name\": \"COS-ENDPOINT\",\"user-secret-parameters\": }
    

CLI での課題の作成

  1. ストレージ構成を一覧表示し、クラスタに割り当てたいストレージ構成をメモしておいてください。

    ibmcloud sat storage config ls
    
  2. ストレージを割り当てたいクラスタ、クラスタグループ、またはサービスのIDを取得します。

    クラスターが Satellite Config に登録されていることを確認したり、グループを作成したりするには、Satellite Config で使用するためのクラスターのセットアップを参照してください。

    クラスター・グループをリストするコマンドの例。

    ibmcloud sat group ls
    

    クラスターをリストするコマンドの例。

    ibmcloud oc cluster ls --provider satellite
    

    Satellite サービスをリストするコマンドの例。

    ibmcloud sat service ls --location LOCATION
    
  3. 以前に取得したクラスター、グループ、またはサービスにストレージ構成を割り当てます。 詳しくは、ibmcloud sat storage assignment create コマンドを参照してください。

    クラスター・グループに構成を割り当てるコマンドの例。

    ibmcloud sat storage assignment create --group GROUP --config CONFIG --name NAME
    

    クラスターに構成を割り当てるコマンドの例。

    ibmcloud sat storage assignment create --cluster CLUSTER --config CONFIG --name NAME
    

    サービス・クラスターに構成を割り当てるコマンドの例。

    ibmcloud sat storage assignment create --service-cluster-id CLUSTER --config CONFIG --name NAME
    
  4. 割り当てが作成されたことを確認します。

    ibmcloud sat storage assignment ls (--cluster CLUSTER | --config CONFIG | --location LOCATION | --service-cluster-id CLUSTER)
    

API でのストレージ割り当ての作成

  1. 以下のいずれかの要求例をコピーします。

    構成をクラスターに割り当てる要求の例。

    curl -X POST "https://containers.cloud.ibm.com/global/v2/storage/satellite/createAssignmentByCluster" -H "accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d "{ \"channelName\": \"CONFIGURATION-NAME\", \"cluster\": \"CLUSTER-ID\", \"controller\": \"LOCATION-ID\", \"name\": \"ASSIGNMENT-NAME\"}"
    

    クラスター・グループに構成を割り当てる要求の例。

    curl -X POST "https://containers.cloud.ibm.com/global/v2/storage/satellite/createAssignment" -H "accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d "{ \"channelName\": \"CONFIGURATION-NAME\", \"cluster\": \"string\", \"groups\": [ \"CLUSTER-GROUP\" ], \"name\": \"ASSIGNMENT-NAME\"}"
    
  2. 変数を自分の詳細に置き換え、要求を実行します。

  3. 割り当てをリストして、割り当てが作成されたことを確認します。

    curl -X GET "https://containers.cloud.ibm.com/global/v2/storage/satellite/getAssignments" -H "accept: application/json" -H "Authorization: Bearer TOKEN"
    

コンソールでのストレージ割り当ての更新

Satellite コンソール を使用して、割り当てに最新のパッチ更新を適用できます。

  1. Satellite コンソール「ロケーション」 ページで、ロケーションを選択します。

  2. 「ストレージ」 タブをクリックして、構成を表示します。

  3. 更新したい設定をクリックしてください。

  4. 「情報」 (i) アイコンをクリックして、最新のリビジョンまたはパッチを適用します。

  5. オプション: ストレージ割り当ての自動パッチ更新を有効にします。 自動パッチ更新を有効にすると、割り当てに常に最新のセキュリティー・フィックスが適用されます。

自動パッチ更新を有効にした場合でも、メジャー更新を手動で適用する必要があります。

CLI での割り当ての手動アップグレード

最新のストレージ・テンプレート・リビジョンを使用するように割り当てをアップグレードします。

  1. Satellite ストレージ割り当てをリストし、アップグレードする Satellite 割り当てを書き留めます。

    ibmcloud sat storage assignment ls
    
  2. Satellite ストレージ・テンプレートをリストして、使用可能な最新バージョンを確認します。

    ibmcloud sat storage template ls
    
  3. Satellite 割り当てをアップグレードします。

    割り当てをアップグレードするコマンドの例。

    ibmcloud sat storage assignment upgrade --assignment ASSIGNMENT
    

CLI での構成および割り当ての自動パッチ更新の有効化

sat storage assignment autopatch enable CLI を使用して、割り当ての自動パッチ更新を有効にすることができます。 自動パッチ更新を有効にすると、最新のストレージ・テンプレート・リビジョン (パッチ) が自動的に適用されます。 ただし、メジャー更新は手動で適用する必要があります。

  1. Satellite ストレージ構成をリストします。 設定IDをメモしておいてください。

    ibmcloud sat storage assignment ls
    
  2. 以下のいずれかのコマンド例を実行して、ご使用の構成とその関連割り当てに対して自動パッチ更新を有効にします。 前の手順で取得した設定IDを入力してください。

    割り当ての自動パッチ更新を有効にするコマンドの例。

    ibmcloud sat storage assignment autopatch enable --config CONFIG  (--all | --assignment ASSIGNMENT-ID [--assignment ASSIGNMENT-ID])
    

    指定された構成下のすべてのストレージ割り当てに対して自動パッチ更新を有効にするコマンド例。

    ibmcloud sat storage assignment autopatch enable --config CONFIG --all
    

    特定の構成下のすべての割り当てに対して自動パッチ更新を無効にするコマンドの例。

    ibmcloud sat storage assignment autopatch disable --config CONFIG --all
    

    単一の割り当ておよび特定の構成に対して自動パッチ更新を無効にするコマンドの例。

    ibmcloud sat storage assignment autopatch disable --config CONFIG --assignment ASSIGNMENT-ID
    

    複数の割り当ておよび特定の構成に対する自動パッチ更新を無効にするコマンド例。

    ibmcloud sat storage assignment autopatch disable --config CONFIG --assignment ASSIGNMENT-ID --assignment ASSIGNMENT-ID
    

API での構成と割り当てのアップグレード

/v2/storage/satellite/updateAssignment API を使用して、新しいクラスターまたはクラスター・グループで割り当てを更新できます。 改訂の更新を適用するには、 updateConfigVersiontrue に設定します。

  1. 以下の要求例をコピーし、更新するクラスター・グループおよび割り当ての変数を置き換えます。

    curl -X PATCH "https://containers.cloud.ibm.com/global/v2/storage/satellite/updateAssignment" -H "accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d "{ \"groups\": [ \"CLUSTER-GROUPS\" ], \"name\": \"ASSIGNMENT-NAME\", \"updateConfigVersion\": true, \"uuid\": \"ASSIGNMENT-ID\"}"
    
  2. 要求を実行します。

  3. 更新を確認するために割り当ての詳細を取得します。

    curl -X GET "https://containers.cloud.ibm.com/global/v2/storage/satellite/getAssignment?uuid=ASSIGNMENT-ID" -H "accept: application/json" -H "Authorization: Bearer TOKEN"
    

API での割り当ての自動パッチ更新の有効化

/v2/storage/satellite/setAssignmentAutoupgrade API を使用して、割り当ての自動パッチ更新を有効にすることができます。 自動パッチ更新を有効にすると、最新のストレージ・テンプレート・リビジョン (パッチ) が自動的に適用されます。 ただし、メジャー更新は手動で適用する必要があります。

  1. 以下の要求例をコピーし、更新するクラスター・グループおよび割り当ての変数を置き換えます。

    curl -X PATCH "https://containers.cloud.ibm.com/global/v2/storage/satellite/setAssignmentAutoupgrade" -H "accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d { "config": "string", "controller": "string", "autopatch": boolean,"assignment" : { "all": boolean, "uuid": ["string", "string", ...], } }
    
  2. 要求を実行します。

  3. 割り当ての詳細を取得して、アップグレードを検証します。

    curl -X GET "https://containers.cloud.ibm.com/global/v2/storage/satellite/getAssignment?uuid=ASSIGNMENT-ID" -H "accept: application/json" -H "Authorization: Bearer TOKEN"
    

以下を使用するアプリのデプロイ IBM Cloud Object Storage

ibm-object-s3fs ドライバーを使用すると、クラスターのワークロードで利用できるPVCを作成できます。

  1. オブジェクト・ストレージ構成を参照する PVC を作成します。

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: demo #Enter a name for your PVC.
      namespace: default
      annotations:
      ibm.io/auto-create-bucket: "false"
      ibm.io/auto-delete-bucket: "false"
      ibm.io/bucket: BUCKET-NAME #Enter the name of your object storage bucket.
      ibm.io/secret-name: SECRET-NAME #Enter the name of the secret you created earlier.
      ibm.io/secret-namespace: NAMESPACE #Enter the namespace where you want to create the PVC.
    spec:
        accessModes:
        - ReadWriteOnce
        resources:
            requests:
                storage: 10Gi
        storageClassName: ibmc-s3fs-cos #The storage class that you want to use.
    
  2. クラスター内に PVC を作成します。

    oc apply -f pvc-cos.yaml
    
  3. 作成したPVCをマウントするPod用のYAML設定ファイルを作成します。

    apiVersion: v1
    kind: Pod
    metadata:
      name: demo-pod
      namespace: default
    spec:
      securityContext:
        runAsUser: 2000
        fsGroup: 2000
      volumes:
      - name: demo-vol
        persistentVolumeClaim:
            claimName: demo
      containers:
      - name: test
        image: nginxinc/nginx-unprivileged
        imagePullPolicy: Always
        volumeMounts:
        - name: demo-vol
          mountPath: /mnt/cosvol
    
  4. クラスター内にポッドを作成します。

    oc apply -f demo-pod.yaml
    
  5. ポッドがデプロイされたことを確認します。 アプリが Running 状態になるまでに数分かかることがあることに注意してください。

    oc get pods
    
    NAME                                READY   STATUS    RESTARTS   AGE
    demo-pod                            1/1     Running   0          2m58s
    
  6. ポッドにログインして、アプリがブロック・ストレージ・ボリュームに書き込み可能であることを確認します。

    oc exec demo-pod -- bash -c "touch /mnt/cosvol/test.txt && ls /mnt/cosvol" test.txt
    

コンソールを使用して IBM Cloud Object Storage のストレージ設定を削除する

  1. Satellite ストレージ・ダッシュボードから、削除するストレージ構成を選択します。
  2. アクション > 削除を選択します。
  3. ストレージ構成の名前を入力します。
  4. **「削除」**を選択します。

コマンド・ラインを使用した IBM Cloud Object Storage ストレージ構成の削除

IBM Cloud Object Storage の設定が不要になった場合は、クラスタからアプリ、PVC、PV、および割り当てを削除できます。

  1. ストレージ割り当てをリストし、クラスターに使用していた割り当てを見つけます。

    ibmcloud sat storage assignment ls (--cluster CLUSTER | --config CONFIG | --location LOCATION | --service-cluster-id CLUSTER)
    
  2. 割り当てを削除します。 割り当てを削除すると、そのストレージ割り当てに含まれていたすべてのクラスターから、ドライバー・ポッドとストレージ・クラスが削除されます。

    ibmcloud sat storage assignment rm --assignment <assignment_ID>
    
  3. ドライバーがクラスターから削除されたことを確認します。

    1. クラスターでストレージ・クラスをリストし、ストレージ・クラスが削除されていることを確認します。
        oc get sc
        ```
    1. `kube-system` 名前空間のポッドをリストし、ストレージ・ドライバー・ポッドが削除されていることを確認します。
    
    ```sh {: pre}
        oc get pods -n kube-system | grep cos
        ```
    
  4. オプション: ストレージ構成を削除します。

    1. ストレージ構成をリストします。
        ibmcloud sat storage config ls
        ```
    1. ストレージ構成を削除します。
    
    ```sh {: pre}
        ibmcloud sat storage config rm --config <config_name>
        ```
    
    

パラメーターのリファレンス

2.2 パラメーター・リファレンス

表1 2.2 パラメータ・リファレンス
表示名 CLI オプション タイプ 説明 デフォルト値
リリース名 helm-release-name 構成 Helm チャートのリリース名。 ibm-object-storage-plugin
Helm チャートの追加パラメーター parameters 構成 Helm チャートの追加パラメーター。 該当なし
Object Storage プラグイン・ライセンス license 構成 Object storage プラグイン・ライセンス: Apache ライセンス・バージョン 2.0。 ライセンスに同意してプラグインをインストールするには、「true」に設定します。 該当なし
Object Storage プロバイダー s3provider 構成 使用可能なプロバイダーは、「IBM」、「AWS」、および「Wasabi」です。 これら以外のプロバイダーの場合は、「Object Storage サービス・エンドポイント」パラメーターを指定する必要があります。 該当なし
Object Storage 地域 cos-storageclass 構成 オブジェクト・ストレージが配置されている領域を入力します。 IBM COS リージョンについては、 https://ibm.biz/cos-endpoints-listを参照してください。 Wasabi については、https://ibm.biz/wasabi-endpointsを参照してください。 AWSの場合は、https://ibm.biz/aws-endpointsを参照してください。 該当なし
Object Storage サービス・エンドポイント cos-endpoint 構成 Object Storage サービス・エンドポイント。 IBM、AWS、または Wasabi 以外の Object Storage プロバイダーを使用する場合に必要です。 両方とも設定されている場合、「Object Storage プロバイダー」が優先されます。 該当なし

IBM Cloud Object Storage のストレージ・クラス・リファレンス

クラウド・オブジェクト・ストレージ・クラス・リファレンス
ストレージ・クラス名 ボリューム・バインディング・モード 保持
ibm-s3fs-cos 即時 いいえ
ibm-s3fs-cos-perf 即時 いいえ

IBM Cloud Object Storage のヘルプとサポートの入手

IBM Cloud Object Storage をご利用の際は、サポート・ケースを開設する前に、以下のリソースをお試しください。

  1. Block Storage for VPC の資料 で FAQ を確認します。
  2. 一般的な問題をトラブルシューティングして解決するには、 トラブルシューティング資料 を参照してください。
  3. ステータス」ページにアクセスして、 IBM Cloud プラットフォームおよびリソースのステータスを確認してください。
  4. Stack Overflow で、他のユーザーが同じ問題を経験しているかどうかを確認します。 質問には ibm-cloudCOS のタグを付けてください。
  5. Block Storage for VPCで問題が発生した場合は、 IBM Cloud® サポートにサポート要求を送信します。