De quais permissões eu preciso para gerenciar o armazenamento e criar PVCs?

Resolva erros de permissão relacionados a reivindicações de volume persistente.

Nuvem Privada Virtual Infraestrutura clássica

Quando você cria uma PVC, a PVC permanece pendente. Ao executar oc describe pvc <pvc_name>, você vê uma mensagem de erro semelhante à seguinte:

User doesn't have permissions to create or manage Storage

A chave de API do IAM ou a chave de API da infraestrutura da IBM Cloud que está armazenada no segredo de Kubernetes storage-secret-store de seu cluster não possui todas as permissões necessárias para provisionar armazenamento persistente.

Recupere a chave do IAM ou a chave de API da infraestrutura da IBM Cloud que está armazenada no segredo de Kubernetes storage-secret-store de seu cluster e verifique se a chave de API correta é usada.

  1. Execute o seguinte comando para obter a chave de API armazenada no segredo storage-secret-store.

    Exemplo de comando

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

    Saída de exemplo

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

    A chave de API do IAM é listada na seção Bluemix.iam_api_key de sua saída da CLI. Se o Softlayer.softlayer_api_key estiver vazio ao mesmo tempo, a chave de API do IAM será usada para determinar suas permissões de infraestrutura. A chave de API do IAM é configurada automaticamente pelo usuário que executa a primeira ação que requer a função de acesso à plataforma Administrador do IAM em um grupo de recursos e região. Se uma chave de API diferente for configurada em Softlayer.softlayer_api_key, essa chave terá precedência sobre a chave de API do IAM. O Softlayer.softlayer_api_key é configurado quando um administrador de cluster executa o comando ibmcloud oc credentials-set.

  2. Se precisar entrar em contato com o suporte, poderá usar o seguinte comando para extrair as credenciais do segredo do cluster, localizar a chave e fazer o hash. Essa etapa evita que você cole acidentalmente sua chave de API no caso de suporte. Execute o seguinte comando para recuperar a chave atual armazenada no cluster.

    oc  get secret -n kube-system storage-secret-store -o custom-columns=:.data.slclient\\.toml | base64 -d | grep g2_api_key | md5sum
    
  3. Se desejar mudar as credenciais, atualize a chave de API que é usada.

    1. Efetue login na sua conta. If applicable, target the appropriate resource group. Configure o contexto para o seu cluster.
    2. Para atualizar a chave da API do IAM, use o comando ibmcloud oc api-key reset . Para atualizar a chave de infraestrutura do IBM Cloud, use o comando ibmcloud oc credential set.
    3. Aguarde cerca de 10 a 15 minutos para o segredo de Kubernetes storage-secret-store atualizar e, em seguida, verifique se a chave foi atualizada.
        oc get secret storage-secret-store -n kube-system -o yaml | grep slclient.toml: | awk '{print $2}' | base64 --decode
        ```
    
  4. Se a chave de API estiver correta, verifique se a chave tem a permissão correta para provisionar armazenamento persistente.

    1. Entre em contato com o proprietário da conta para verificar a permissão da chave de API.
    2. Como titular da conta, selecione Gerenciar > Acesso (IAM) na barra de navegação do console do IBM Cloud.
    3. Selecione Usuários e localize o usuário cuja chave de API você deseja usar.
    4. No menu de ações, selecione Gerenciar detalhes do usuário.
    5. Acesse a guia Infraestrutura clássica.
    6. Expanda a categoria Conta e verifique se a permissão Incluir/Fazer upgrade do armazenamento (Camada de armazenamento) está designada.
    7. Expanda a categoria Serviços e verifique se a permissão Gerenciar armazenamento está designada.
  5. Remova a PVC que falhou.

    oc delete pvc <pvc_name>
    
  6. Recrie a PVC.

    oc apply -f pvc.yaml