Configurando sua instância do IBM Cloud Object Storage

O IBM Cloud Object Storage é um armazenamento persistente e altamente disponível que pode ser montado em seus apps. O plug-in é um plug-in Flex-Volume do Kubernetes que conecta os depósitos do Cloud Object Storage aos pods em seu cluster. As informações armazenadas com IBM Cloud Object Storage são criptografadas em trânsito e em repouso, distribuídas entre vários locais geográficos e acessadas por meio de HTTP usando uma API de REST.

Se você desejar usar o IBM Cloud Object Storage em um cluster privado sem acesso de rede pública, deverá configurar sua instância de serviço do IBM Cloud Object Storage para autenticação HMAC. Se você não desejar usar a autenticação HMAC, deverá abrir todo o tráfego de rede de saída na porta 443 para que o plug-in funcione corretamente em um cluster privado.

Criação de uma instância do IBM Cloud Object Storage

Antes de poder começar a usar o armazenamento de objeto em seu cluster, deve-se fornecer uma instância de serviço do IBM Cloud Object Storage em sua conta.

O plug-in IBM Cloud Object Storage funciona com qualquer terminal de API s3. Por exemplo, você talvez deseje usar um servidor Cloud Object Storage local, como Minio, ou conectar-se a um terminal de API s3 que você configurou em um provedor em nuvem diferente em vez de uma instância de serviço IBM Cloud Object Storage.

Siga estas etapas para criar uma instância de serviço do IBM Cloud Object Storage. Caso pretenda usar um servidor Cloud Object Storage local ou um terminal de API diferente do s3, consulte a documentação do provedor para configurar a instância do Cloud Object Storage.

  1. Abra a IBM Cloud Object Storage página do catálogo.
  2. Insira um nome para a sua instância de serviço (como cos-backup) e selecione o mesmo grupo de recursos no qual seu cluster está. Para visualizar o grupo de recursos do cluster, execute ibmcloud ks cluster get --cluster CLUSTER_NAME_OR_ID.
  3. Revise as opções de plano para obter informações de precificação e selecione um plano.
  4. Clique em Criar. A página de detalhes do serviço é aberta.
  5. Para continuar configurando o Object Storage para uso com seu cluster, consulte Criando credenciais de serviço.

Criando credenciais de serviço do IBM Cloud Object Storage

Antes de começar, Crie sua instância de serviço de armazenamento de objetos.

  1. Na navegação na página de detalhes do serviço para a sua instância do Object Storage, clique em Credenciais de serviço.
  2. Clique em Nova credencial. Uma caixa de diálogo é aberta.
  3. Insira um nome para suas credenciais.
  4. Na lista suspensa Função, selecione a função de acesso do Object Storage para as ações às quais você deseja que os usuários de armazenamento em seu cluster tenham acesso. Deve-se selecionar pelo menos a função de acesso de serviço Gravador para usar o recurso de fornecimento dinâmico auto-create-bucket. Se você selecionar Reader, não será possível usar as credenciais para criar depósitos no IBM Cloud Object Storage e gravar dados nele.
  5. Opcional: Clique em “Opções avançadas” e ative a opção “Incluir credencial HMAC para criar credenciais HMAC para o serviço IBM Cloud Object Storage. A autenticação HMAC inclui uma camada extra de segurança para a autenticação OAuth2, evitando o uso indevido de tokens OAuth2 expirados ou criados aleatoriamente. Importante: se você tiver um cluster somente privado sem acesso público, será necessário usar a autenticação HMAC para que seja possível acessar o serviço IBM Cloud Object Storage por meio da rede privada.
  6. Clique em Incluir. Suas novas credenciais estão na tabela Credenciais de serviço.
  7. Clique em Visualizar credenciais.
  8. Anote os apikey para usar tokens OAuth2 para se autenticar no serviço IBM Cloud Object Storage. Para a autenticação HMAC, na cos_hmac_keys seção, observe o access_key_id e o secret_access_key.
  9. Armazene suas credenciais de serviço em um segredo do Kubernetes dentro do cluster para ativar o acesso à sua instância de serviço do IBM Cloud Object Storage.

Criando um segredo para as credenciais de serviço de armazenamento de objeto

Para acessar sua instância de serviço do IBM Cloud Object Storage para ler e gravar dados, deve-se armazenar com segurança as credenciais de serviço em um segredo do Kubernetes. O plug-in do IBM Cloud Object Storage usa essas credenciais para cada operação de leitura ou gravação em seu bucket.

Siga estas etapas para criar um segredo do Kubernetes para as credenciais de uma instância de serviço do IBM Cloud Object Storage. Se você planeja usar um servidor Cloud Object Storage local ou um terminal de API s3 diferente, crie um segredo do Kubernetes com as credenciais apropriadas.

Pré-requisitos

  • Certifique-se de que você tenha a função de acesso de serviço Gerenciador para o cluster.
  • Configure seu provedor KMS.
  • Recupere o apikey, ou o access_key_id e as secret_access_key das suas credenciais do serviço IBM Cloud Object Storage. Note que as credenciais de serviço devem ser suficientes para as operações de depósito que o app precisa executar. Por exemplo, se seu aplicativo ler dados de um bucket, as credenciais do serviço que aparecem no seu segredo devem ter, no mínimo, permissões de Leitor.

Criando um segredo de armazenamento de objeto no cluster

Conclua as etapas a seguir para criar um segredo em seu cluster para IBM Cloud Object Storage.

Se você desejar integrar a criptografia do Key Protect ao criar novos depósitos de PVCs em seu cluster, deverá incluir o CRN da chave raiz ao criar seu Segredo IBM Cloud Object Storage. Observe que a criptografia Key Protect não pode ser incluída em depósitos existentes. A criptografia pode ser usada apenas quando você cria novos depósitos Se a chave raiz usada para criptografia for excluída, todos os arquivos nos depósitos associados estarão inacessíveis.

  1. Obtenha o GUID de sua instância de serviço do IBM Cloud Object Storage.

    ibmcloud resource service-instance <service_name> | grep GUID
    
  2. Crie um segredo do Kubernetes para armazenar suas credenciais de serviço. Escolha um dos exemplos a seguir para criar seu segredo.

    • Exemplo de comando create secret que usa uma chave de API.
        kubectl create secret generic cos-write-access --type=ibm/ibmc-s3fs --from-literal=api-key=<api_key> --from-literal=service-instance-id=<service_instance_guid>
        ```
    * Exemplo de comando `create secret` que usa autenticação HMAC.
    ```sh {: pre}
        kubectl create secret generic cos-write-access --type=ibm/ibmc-s3fs --from-literal=access-key=<access_key_ID> --from-literal=secret-key=<secret_access_key>    
        ```
    * Arquivo de configuração secreta de exemplo para ativar a criptografia com seu provedor KMS.
        1. Salve o YAML a seguir em um arquivo.
            ```yaml {: codeblock}
            apiVersion: v1
            data:
                access-key: xxx
                secret-key: xxx
                kp-root-key-crn: <CRN> # Key Protect or HPCS root key crn in base64 encoded format
            kind: Secret
            metadata:
                name: cos-write-access
            type: ibm/ibmc-s3fs
            ```
            `api-key`
            :   Insira a chave API que você recuperou de suas credenciais de serviço do IBM Cloud Object Storage anteriormente. Se desejar usar a autenticação HMAC, especifique `access-key` e `secret-key`.
    
            `access-key`
            :   Insira o ID da chave de acesso que você recuperou de suas credenciais de serviço do IBM Cloud Object Storage anteriormente. Para usar a autenticação OAuth2, especifique a `api-key` como alternativa.
    
            `secret-key`
            :   Insira a chave de acesso secreta que você recuperou de suas credenciais de serviço do IBM Cloud Object Storage anteriormente. Para usar a autenticação OAuth2, especifique a `api-key` como alternativa.
    
            `service-instance-id`
            :   Insira o GUID de sua instância de serviço do IBM Cloud Object Storage que você recuperou anteriormente.
    
            `kp-root-key-crn`
            :   Insira o base64 codificado Key Protect chave raiz CRN para usar Key Protect criptografia.
    
        1. Aplique o segredo ao seu cluster.
            ```sh {: pre}
            kubectl apply -f <secret_name>
            ```
    
    
  3. Obtenha os segredos no cluster e verifique a saída.

    kubectl get secret
    

    Saída de exemplo

    NAME                  TYPE                                  DATA   AGE
    cos-write-access      ibm/ibmc-s3fs                         2      7d19h
    default-au-icr-io     kubernetes.io/dockerconfigjson        1      55d
    default-de-icr-io     kubernetes.io/dockerconfigjson        1      55d
    ...
    
  4. Instale o plug-in do IBM Cloud Object Storage ou, se você já tiver instalado o plug-in, decida sobre a configuração para o seu bucket do IBM Cloud Object Storage.

  5. Opcional: inclua seu segredo nas classes de armazenamento padrão. Referência de classe de armazenamento

Atribuição de perfis confiáveis ao armazenamento COS

Você pode usar perfis confiáveis para conceder a diferentes identidades IBM Cloud acesso a recursos em sua conta, incluindo suas soluções de armazenamento. Os perfis confiáveis centralizam o controle de acesso, eliminam a necessidade de chaves de API de longa duração e permitem que você defina o escopo das permissões para o mínimo necessário para uma tarefa específica. Para obter mais informações, consulte Configuração de um perfil confiável para componentes de armazenamento.

Limitações

  • O IBM Cloud Object Storage é baseado no sistema de arquivos s3fs-fuse. É possível revisar uma lista de limitações no repositório s3fs-fuse.
  • Para acessar um arquivo no IBM Cloud Object Storage com um usuário não raiz, deve-se configurar os valores runAsUser e fsGroup em sua implementação para o mesmo valor.