ストレージの管理および PVC の作成に必要な権限は何ですか?

永続ボリュームのクレームに関する権限エラーのトラブルシューティングを行う。

仮想プライベートクラウド クラシック・インフラストラクチャー

PVC を作成した場合に、PVC が保留中のままになります。 oc describe pvc <pvc_name> を実行すると、以下のようなエラー・メッセージが表示されます :

User doesn't have permissions to create or manage Storage

クラスターの storage-secret-store Kubernetes シークレットに保管されている IAM API キーまたは IBM Cloud インフラストラクチャー API キーに、永続ストレージをプロビジョンするために必要な許可の一部がありません。

クラスターの storage-secret-store Kubernetes シークレットに保管されている IAM キーまたは IBM Cloud インフラストラクチャー API キーを取得して、正しい API キーが使用されていることを確認します。

  1. 以下のコマンドを実行して、 storage-secret-store シークレットに格納されているAPIキーを取得する。

    コマンド例

    oc get secret storage-secret-store -n kube-system -o yaml | grep slclient.toml: | awk '{print $2}' | base64 --decode
    

    出力例

    [Bluemix]
    iam_url = "https://iam.cloud.ibm.com"
    iam_client_id = "bx"
    iam_client_secret = "bx"
    iam_api_key "IAM-API-KEY"
    refresh_token = ""
    pay_tier = "paid"
    containers_api_route = "https://us-south.containers.cloud.ibm.com"
    encryption = true
    containers_api_route_private = "https://private.us-south.containers.cloud.ibm.com"
    [Softlayer]
    encryption = true
    softlayer_username = ""
    softlayer_api_key = ""
    softlayer_endpoint_url = "https://api.service.softlayer.com/rest/v3"
    softlayer_iam_endpoint_url = "https://api.service.softlayer.com/mobile/v3"
    softlayer_datacenter = "dal10"
    softlayer_token_exchange_endpoint_url = "https://iam.cloud.ibm.com"
    [VPC]
    g2_token_exchange_endpoint_url = "https://iam.bluemix.net"
    g2_riaas_endpoint_url = "https://us-south.iaas.cloud.ibm.com"
    g2_riaas_endpoint_private_url = "https://us-south.private.iaas.cloud.ibm.com"
    g2_resource_group_id = "............"
    g2_api_key = ".............."
    encryption = true
    provider_type = "g2"
    iks_token_exchange_endpoint_private_url = "https://private.us-south.containers.cloud.ibm.com"
    

    CLI 出力の Bluemix.iam_api_key セクションに、IAM API キーがリストされます。 同時に Softlayer.softlayer_api_key が空の場合は、IAM API キーを使用してインフラストラクチャー許可が決定します。 IAM API キーは、リソース・グループおよびリージョンの IAM の管理者プラットフォーム・アクセス役割を必要とする最初のアクションを実行するユーザーによって自動的に設定されます。 Softlayer.softlayer_api_key に別の API キーが設定されている場合、このキーが IAM API キーよりも優先されます。 Softlayer.softlayer_api_key は、クラスター管理者が ibmcloud oc credentials-set コマンドを実行すると設定されます。

  2. サポートに連絡する必要がある場合は、以下のコマンドを使用してクラスター・シークレットから認証情報を取り出し、キーを見つけてハッシュ化することができます。 このステップにより、誤ってAPIキーをサポートケースに貼り付けてしまうことを防ぐことができます。 以下のコマンドを実行して、クラスターに保存されている現在のキーを取得します。

    oc  get secret -n kube-system storage-secret-store -o custom-columns=:.data.slclient\\.toml | base64 -d | grep g2_api_key | md5sum
    
  3. 資格情報を変更する場合は、使用される API キーを更新します。

    1. アカウントにログインします。 該当する場合は、適切なリソース・グループをターゲットにします。 クラスターのコンテキストを設定します。
    2. IAM API キーを更新するには、ibmcloud oc api-key reset コマンドを使用します。 IBM Cloud インフラストラクチャーのキーを更新する場合は、ibmcloud oc credential set コマンドを使用します。
    3. storage-secret-store Kubernetes シークレットが更新されるまで約 10 分から 15 分待機して、キーが更新されたことを確認します。
        oc get secret storage-secret-store -n kube-system -o yaml | grep slclient.toml: | awk '{print $2}' | base64 --decode
        ```
    
  4. API キーが正しい場合は、キーに永続ストレージをプロビジョンするための正しい許可があることを確認します。

    1. API キーの許可を確認のために、アカウント所有者に連絡します。
    2. アカウント所有者として、 IBM Cloud コンソールのナビゲーションから [管理 ] > [アクセス (IAM) ] を選択します。
    3. **「ユーザー」**を選択し、使用する API キーを持つユーザーを確認します。
    4. アクション・メニューから、**「ユーザーの詳細の管理」**を選択します。
    5. **「クラシック・インフラストラクチャー」**タブに移動します。
    6. **「アカウント」カテゴリーを展開し、「ストレージの追加/アップグレード (StorageLayer)」**の許可が割り当てられていることを確認します。
    7. **「サービス」カテゴリーを展開し、「ストレージ管理」**の許可が割り当てられていることを確認します。
  5. 失敗した PVC を削除します。

    oc delete pvc <pvc_name>
    
  6. PVC を再作成します。

    oc apply -f pvc.yaml