Configuración de la instancia de IBM Cloud Object Storage
IBM Cloud Object Storage es un almacenamiento persistente de alta disponibilidad que puede montar en sus apps. Este plugin es un plugin de Kubernetes Flex-Volume que conecta grupos de Object Storage de la nube con pods del clúster. La información almacenada con IBM Cloud Object Storage se cifra en tránsito y en reposo, se dispersa en muchas ubicaciones geográficas, y se accede a ella a través de HTTP utilizando una API REST.
Si desea utilizar IBM Cloud Object Storage en un clúster privado sin acceso a la red pública, debe configurar la instancia del servicio IBM Cloud Object Storage para la autenticación HMAC. Si no desea utilizar la autenticación HMAC, debe abrir todo el tráfico de red de salida en el puerto 443 para que el plugin funcione correctamente en un clúster privado.
Creación de una instancia de IBM Cloud Object Storage
Para poder empezar a utilizar el almacenamiento de objetos en el clúster, debe suministrar una instancia de servicio de IBM Cloud Object Storage en la cuenta.
El plugin de IBM Cloud Object Storage funciona con cualquier punto final de API de s3. Por ejemplo, es posible que desee utilizar un servidor local de Cloud Object Storage, como Minio, o conectarse a un punto final de la API de s3 que haya configurado en otro proveedor de servicios en la nube, en lugar de una instancia del servicio IBM Cloud Object Storage.
Siga estos pasos para crear una instancia de servicio de IBM Cloud Object Storage. Si tiene previsto utilizar un servidor de Cloud Object Storage local o un punto final de API s3 diferente, consulte la documentación del proveedor para configurar la instancia de Cloud Object Storage.
- Abra la página de catálogo de IBM Cloud Object Storage
- Especifique un nombre para la instancia de servicio, como por ejemplo
cos-backup, y seleccione el grupo de recursos en el que se encuentra el clúster. Para ver el grupo de recursos del clúster, ejecuteibmcloud ks cluster get --cluster CLUSTER_NAME_OR_ID. - Consulta las opciones de planes para obtener información sobre precios y selecciona un plan.
- Pulse Crear. Se abre la página de detalles de servicio.
- Para continuar con la configuración de Object Storage para utilizarlo con el clúster, consulte Creación de credenciales de servicio.
Creación de credenciales de servicio de IBM Cloud Object Storage
Antes de empezar, cree la instancia de servicio de almacenamiento de objetos.
- En el área de navegación de la página de detalles del servicio para la instancia de Object Storage, pulse Credenciales de servicio.
- Pulse Nueva credencial. Se abre un recuadro de diálogo.
- Especifique un nombre para las credenciales.
- En la lista desplegable Rol, seleccione el rol de acceso de Object Storage para las acciones a las que desea que los usuarios de almacenamiento del clúster
tengan acceso. Debe seleccionar al menos el rol de acceso al servicio de Escritor para poder utilizar la característica de suministro dinámico
auto-create-bucket. Si seleccionaReader, no puede utilizar las credenciales para crear grupos en IBM Cloud Object Storage y escribir datos en él. - Opcional: Haz clic en « Opciones avanzadas » y activa la opción « Incluir credenciales HMAC » para crear credenciales HMAC para el servicio « IBM Cloud Object Storage ». La autenticación HMAC añade un nivel adicional de seguridad a la autenticación OAuth2, ya que evita el mal uso de las señales OAuth2 caducadas o creadas de forma aleatoria. Importante: Si tiene un clúster solo privado sin acceso público, debe utilizar la autenticación HMAC para poder acceder al servicio IBM Cloud Object Storage a través de la red privada.
- Pulse Añadir. Las nuevas credenciales están en la tabla Credenciales de servicio.
- Pulse Ver credenciales.
- Tenga en cuenta que
apikeydebe utilizar tokens de OAuth2 para autenticarse en el servicio IBM Cloud Object Storage. Para la autenticación HMAC, en la seccióncos_hmac_keys, fíjate en elaccess_key_idy elsecret_access_key. - Almacene las credenciales de servicio en un secreto de Kubernetes dentro del clúster para habilitar el acceso a la instancia de servicio de IBM Cloud Object Storage.
Creación de un secreto para las credenciales de servicio de almacenamiento de objetos
Para acceder a la instancia de servicio de IBM Cloud Object Storage para leer y escribir datos, debe almacenar de forma segura las credenciales de servicio en un secreto de Kubernetes. El plugin de IBM Cloud Object Storage utiliza estas credenciales para cada operación de lectura o escritura en el grupo.
Siga estos pasos para crear un secreto de Kubernetes para las credenciales de una instancia de servicio de IBM Cloud Object Storage. Si tiene previsto utilizar un servidor de almacenamiento de objetos de nube local o un punto final de API s3 distinto, cree un secreto de Kubernetes con las credenciales adecuadas.
Requisitos previos
- Asegúrese de tener el rol de acceso al servicio de Gestor para el clúster.
- Configure el proveedor de KMS.
- Recupera el
apikey, o elaccess_key_idy el desecret_access_keytus credenciales del servicio IBM Cloud Object Storage. Tenga en cuenta que las credenciales de servicio deben ser suficientes para las operaciones de grupo que necesita realizar la aplicación. Por ejemplo, si tu aplicación lee datos de un bucket, las credenciales del servicio que aparecen en tu secreto deben tener, como mínimo, permisos de lectura.
Creación de un secreto de almacenamiento de objetos en el clúster
Complete los pasos siguientes para crear un secreto en el clúster para IBM Cloud Object Storage.
Si desea integrar el cifrado Key Protect al crear nuevos grupos a partir de PVC en el clúster, debe incluir el CRN de clave raíz al crear el secretoIBM Cloud Object Storage. Tenga en cuenta que el cifrado Key Protect no se puede añadir a los grupos existentes. El cifrado sólo se puede utilizar cuando se crean nuevos grupos. Si se suprime la clave raíz que se utiliza para el cifrado, no se podrá acceder a todos los archivos de los grupos asociados.
-
Obtenga el GUID de la instancia de servicio de IBM Cloud Object Storage.
ibmcloud resource service-instance <service_name> | grep GUID -
Cree un secreto de Kubernetes para almacenar las credenciales de servicio. Elija uno de los ejemplos siguientes para crear el secreto.
- Mandato
create secretde ejemplo que utiliza una clave 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> ``` * Mandato `create secret` de ejemplo que utiliza la autenticación de 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> ``` * Archivo de configuración de secreto de ejemplo para habilitar el cifrado con el proveedor de KMS. 1. Guarde el siguiente archivo YAML en un archivo. ```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` : Especifique la clave de API que ha recuperado de las credenciales de servicio de IBM Cloud Object Storage anteriormente. Si desea utilizar la autenticación HMAC, especifique en su lugar la `access-key` y la `secret-key`. `access-key` : Especifique el ID de clave de acceso que ha recuperado de las credenciales de servicio de IBM Cloud Object Storage anteriormente. Si desea utilizar la autenticación OAuth2, especifique la `api-key` en su lugar. `secret-key` : Especifique la clave de acceso secreta que ha recuperado de las credenciales de servicio de IBM Cloud Object Storage anteriormente. Si desea utilizar la autenticación OAuth2, especifique la `api-key` en su lugar. `service-instance-id` : Especifique el GUID de la instancia de servicio de IBM Cloud Object Storage que ha recuperado anteriormente. `kp-root-key-crn` : Especifique el CRN de clave raíz base64 codificado Key Protect para utilizar el cifrado Key Protect. 1. Aplica el secreto a tu clúster. ```sh {: pre} kubectl apply -f <secret_name> ``` - Mandato
-
Obtenga los secretos en el clúster y verifique la salida.
kubectl get secretSalida de ejemplo
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 el plugin de IBM Cloud Object Storage o, si ya ha instalado el plugin, decida la configuración del grupo de IBM Cloud Object Storage.
-
Opcional: Añada su secreto a las clases de almacenamiento predeterminadas. Referencia de clases de almacenamiento
Asignación de perfiles de confianza al almacenamiento COS
Puede utilizar perfiles de confianza para conceder a diferentes identidades de IBM Cloud acceso a los recursos de su cuenta, incluidas sus soluciones de almacenamiento. Los perfiles de confianza centralizan el control de acceso, eliminan la necesidad de claves API de larga duración y permiten limitar los permisos al mínimo necesario para una tarea específica. Para obtener más información, consulte Configuración de un perfil de confianza para componentes de almacenamiento.
Limitaciones
- IBM Cloud Object Storage se basa en el sistema de archivos
s3fs-fuse. Puede consultar una lista de limitaciones en el repositorios3fs-fuse. - Para acceder a un archivo en IBM Cloud Object Storage con un usuario no root, debe establecer los parámetros
runAsUseryfsGroupen su despliegue con el mismo valor.