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.
- Abra a IBM Cloud Object Storage página do catálogo.
- 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, executeibmcloud ks cluster get --cluster CLUSTER_NAME_OR_ID. - Revise as opções de plano para obter informações de precificação e selecione um plano.
- Clique em Criar. A página de detalhes do serviço é aberta.
- 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.
- 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.
- Clique em Nova credencial. Uma caixa de diálogo é aberta.
- Insira um nome para suas credenciais.
- 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ê selecionarReader, não será possível usar as credenciais para criar depósitos no IBM Cloud Object Storage e gravar dados nele. - 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.
- Clique em Incluir. Suas novas credenciais estão na tabela Credenciais de serviço.
- Clique em Visualizar credenciais.
- Anote os
apikeypara usar tokens OAuth2 para se autenticar no serviço IBM Cloud Object Storage. Para a autenticação HMAC, nacos_hmac_keysseção, observe oaccess_key_ide osecret_access_key. - 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 oaccess_key_ide assecret_access_keydas 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.
-
Obtenha o GUID de sua instância de serviço do IBM Cloud Object Storage.
ibmcloud resource service-instance <service_name> | grep GUID -
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 secretque 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> ``` - Exemplo de comando
-
Obtenha os segredos no cluster e verifique a saída.
kubectl get secretSaí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 ... -
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.
-
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órios3fs-fuse. - Para acessar um arquivo no IBM Cloud Object Storage com um usuário não raiz, deve-se configurar os valores
runAsUserefsGroupem sua implementação para o mesmo valor.