Welche Berechtigungen benötige ich, um Speicher zu verwalten und PVCs zu erstellen?

Behebung von Berechtigungsfehlern bei Persistent-Volume-Claims.

Virtual Private Cloud Classic-Infrastruktur

Wenn Sie einen PVC erstellen, bleibt der PVC im Wartestatus (pending). Beim Ausführen von oc describe pvc <pvc_name> wird eine Fehlernachricht ähnlich der folgenden angezeigt:

User doesn't have permissions to create or manage Storage

Der IAM-API-Schlüssel oder der API-Schlüssel der IBM Cloud-Infrastruktur, der im geheimen Kubernetes-Schlüssel storage-secret-store Ihres Clusters gespeichert ist, verfügt nicht über die erforderlichen Berechtigungen zum Bereitstellen von persistentem Speicher.

Rufen Sie den IAM-Schlüssel oder den API-Schlüssel der IBM Cloud-Infrastruktur ab, der im geheimen Kubernetes-Schlüssel storage-secret-store Ihres Clusters gespeichert ist, und stellen Sie sicher, dass der richtige API-Schlüssel verwendet wird.

  1. Führen Sie den folgenden Befehl aus, um den API-Schlüssel abzurufen, der in der Datei storage-secret-store secret gespeichert ist.

    Beispielbefehl

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

    Beispielausgabe

    [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"
    

    Der IAM-API-Schlüssel wird im Abschnitt Bluemix.iam_api_key der CLI-Ausgabe aufgelistet. Wenn Softlayer.softlayer_api_key zu diesem Zeitpunkt leer ist, wird der IAM-API-Schlüssel verwendet, um Ihre Infrastrukturberechtigungen zu bestimmen. Der IAM-API-Schlüssel wird von dem Benutzer automatisch festgelegt, der die erste Aktion ausführt, die die IAM-Plattformzugriffsrolle Administrator in einer Ressourcengruppe oder Region erfordert. Wenn in Softlayer.softlayer_api_key ein anderer API-Schlüssel festgelegt ist, hat dieser Schlüssel Vorrang vor dem IAM-API-Schlüssel. Softlayer.softlayer_api_key wird festgelegt, wenn ein Clusteradministrator den Befehl ibmcloud oc credentials-set ausführt.

  2. Wenn Sie sich an den Support wenden müssen, können Sie den folgenden Befehl verwenden, um die Anmeldeinformationen aus dem Clustergeheimnis zu ziehen, den Schlüssel zu finden und ihn dann zu hashen. Dieser Schritt verhindert, dass Sie Ihren API-Schlüssel versehentlich in den Support-Fall einfügen. Führen Sie den folgenden Befehl aus, um den aktuell im Cluster gespeicherten Schlüssel abzurufen.

    oc  get secret -n kube-system storage-secret-store -o custom-columns=:.data.slclient\\.toml | base64 -d | grep g2_api_key | md5sum
    
  3. Wenn Sie die Berechtigungsnachweise ändern möchten, aktualisieren Sie den API-Schlüssel, der verwendet wird.

    1. Melden Sie sich an Ihrem Konto an. If applicable, target the appropriate resource group. Legen Sie den Kontext für den Cluster fest.
    2. Um den IAM-API-Schlüssel zu aktualisieren, verwenden Sie den Befehlibmcloud oc api-key reset. Um den Schlüssel für die IBM Cloud-Infrastruktur zu aktualisieren, verwenden Sie den Befehlibmcloud oc credential set.
    3. Warten Sie 10 bis 15 Minuten, bis der geheime Kubernetes-Schlüssel storage-secret-store aktualisiert wurde, und stellen Sie dann sicher, dass der Schlüssel aktualisiert wurde.
        oc get secret storage-secret-store -n kube-system -o yaml | grep slclient.toml: | awk '{print $2}' | base64 --decode
        ```
    
  4. Wenn der API-Schlüssel korrekt ist, stellen Sie sicher, dass der Schlüssel über die korrekte Berechtigung zum Bereitstellen von persistentem Speicher verfügt.

    1. Wenden Sie sich an den Kontoeigner, um die Berechtigung des API-Schlüssels zu überprüfen.
    2. Wählen Sie als Kontoinhaber in der Navigation der IBM Cloud-Konsole Verwalten > Zugriff (IAM) aus.
    3. Wählen Sie Benutzer aus und suchen Sie den Benutzer, dessen API-Schlüssel Sie verwenden wollen.
    4. Wählen Sie Benutzerdetails verwalten im Aktionsmenü aus.
    5. Wechseln Sie zur Registerkarte Klassische Infrastruktur.
    6. Erweitern Sie die Kategorie Konto und stellen Sie sicher, dass die Berechtigung Speicher hinzufügen/Upgrades für Speicher durchführen (Speicherebene) zugeordnet ist.
    7. Erweitern Sie die Kategorie Services und stellen Sie sicher, dass die Berechtigung Speicher verwalten zugeordnet ist.
  5. Entfernen Sie den PVC, der fehlgeschlagen ist.

    oc delete pvc <pvc_name>
    
  6. Erstellen Sie die PVC erneut.

    oc apply -f pvc.yaml