En esta página, se describe cómo puedes configurar y preparar el uso del controlador CSI de Cloud Storage FUSE para GKE.
Para usar el controlador de CSI de Cloud Storage FUSE, sigue estos pasos:
- Crea el bucket de Cloud Storage
- Habilita el controlador
- Configura el acceso a tu bucket de Cloud Storage
Crea el bucket de Cloud Storage
Si aún no lo hiciste, crea tus buckets de Cloud Storage. Activarás estos buckets como volúmenes en tu clúster de GKE. Para mejorar el rendimiento, establece el Tipo de ubicación en Región y selecciona una región que coincida con tu clúster de GKE.
Habilita el controlador CSI del FUSE de Cloud Storage
Sigue estos pasos según si usas GKE Autopilot o clústeres estándar. Te recomendamos que uses un clúster de Autopilot para una experiencia de Kubernetes completamente administrada. Para elegir el modo que se adapte mejor a tus cargas de trabajo, consulta Elige un modo de operación de GKE.
Autopilot
El controlador de CSI de Cloud Storage FUSE está habilitado de forma predeterminada para los clústeres de Autopilot. Puedes ir a Configura el acceso a los buckets de Cloud Storage.
Estándar
Si tu clúster estándar tiene habilitado el controlador de CSI del FUSE de Cloud Storage, ve a Configura el acceso a los buckets de Cloud Storage.
Para crear un clúster estándar con el controlador CSI del FUSE de Cloud Storage habilitado, puedes usar el comando gcloud container clusters create
:
gcloud container clusters create CLUSTER_NAME \
--addons GcsFuseCsiDriver \
--cluster-version=VERSION \
--location=LOCATION \
--workload-pool=PROJECT_ID.svc.id.goog
Reemplaza lo siguiente:
CLUSTER_NAME
: El nombre de tu clúster.VERSION
: el número de versión de GKE. Debes seleccionar 1.24 o una versión posterior.LOCATION
: La región o zona de Compute Engine del clúster.PROJECT_ID
: el ID de tu proyecto
Para habilitar el controlador en un clúster estándar existente, usa el comando [gcloud container clusters update
](/sdk/gcloud/reference/container/clusters/update)`:
gcloud container clusters update CLUSTER_NAME \
--update-addons GcsFuseCsiDriver=ENABLED \
--location=LOCATION
Para verificar que el controlador de CSI del FUSE de Cloud Storage esté habilitado en tu clúster, ejecuta el siguiente comando:
gcloud container clusters describe CLUSTER_NAME \
--location=LOCATION \
--project=PROJECT_ID \
--format="value(addonsConfig.gcsFuseCsiDriverConfig.enabled)"
Configura el acceso a los buckets de Cloud Storage
El controlador de CSI de Cloud Storage FUSE usa la federación de identidades para cargas de trabajo para GKE para que puedas establecer permisos detallados sobre cómo tus Pods de GKE pueden acceder a los datos almacenados en Cloud Storage.
Para que tu clúster de GKE pueda acceder a los buckets de Cloud Storage, realiza la autenticación con la federación de identidades para cargas de trabajo para GKE con el bucket de Cloud Storage que deseas activar en la especificación de tu pod:
- Si no tienes habilitada la federación de identidades para cargas de trabajo para GKE, sigue estos pasos para habilitarla.
Obtén credenciales para el clúster:
gcloud container clusters get-credentials CLUSTER_NAME \ --location=LOCATION
Reemplaza lo siguiente:
CLUSTER_NAME
: el nombre del clúster que tiene habilitada la federación de identidades para cargas de trabajo para GKE.LOCATION
: La región o zona de Compute Engine para el clúster.
Crea un espacio de nombres para usar en la cuenta de servicio de Kubernetes. También puedes usar el espacio de nombres
default
o cualquier espacio de nombres existente.kubectl create namespace NAMESPACE
Reemplaza
NAMESPACE
por el nombre del espacio de nombres de Kubernetes para la cuenta de servicio de Kubernetes.Crea una cuenta de servicio de Kubernetes para que tu aplicación use: También puedes usar cualquier ServiceAccount de Kubernetes existente en cualquier espacio de nombres, incluida la ServiceAccount
default
de Kubernetes.kubectl create serviceaccount KSA_NAME \ --namespace NAMESPACE
Reemplaza
KSA_NAME
por el nombre de tu cuenta de servicio de Kubernetes.Otorga uno de los roles de IAM para Cloud Storage a la ServiceAccount de Kubernetes. Sigue estos pasos, según si le otorgas a la cuenta de servicio de Kubernetes acceso solo a un bucket específico de Cloud Storage o acceso global a todos los buckets del proyecto.
Acceso bucket específicos
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member "principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/NAMESPACE/sa/KSA_NAME" \ --role "ROLE_NAME"
Reemplaza lo siguiente:
BUCKET_NAME
: el nombre de tu bucket de Cloud Storage.PROJECT_NUMBER
: El número de proyecto numérico del clúster de GKE. Para encontrar el número de tu proyecto, consulta Identifica proyectos.PROJECT_ID
: el ID del proyecto de tu clúster de GKE.NAMESPACE
es el nombre del espacio de nombres de Kubernetes para la ServiceAccount.KSA_NAME
: Es el nombre de tu ServiceAccount de Kubernetes nueva.ROLE_NAME
: Es el rol de IAM que se asignará a la ServiceAccount de Kubernetes.- Para cargas de trabajo de solo lectura, usa el rol Visualizador de objetos de almacenamiento (
roles/storage.objectViewer
). - Para cargas de trabajo de lectura y escritura, usa el rol de usuario de objetos de almacenamiento (
roles/storage.objectUser
).
- Para cargas de trabajo de solo lectura, usa el rol Visualizador de objetos de almacenamiento (
Acceso global al bucket
gcloud projects add-iam-policy-binding GCS_PROJECT \ --member "principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/NAMESPACE/sa/KSA_NAME" \ --role "ROLE_NAME"
Reemplaza lo siguiente:
GCS_PROJECT
: Es el ID del proyecto de tus buckets de Cloud Storage.PROJECT_NUMBER
: El número de proyecto numérico del clúster de GKE. Para encontrar el número de tu proyecto, consulta Identifica proyectos.PROJECT_ID
: el ID del proyecto de tu clúster de GKE.NAMESPACE
es el nombre del espacio de nombres de Kubernetes para la ServiceAccount.KSA_NAME
: Es el nombre de tu ServiceAccount de Kubernetes nueva.ROLE_NAME
: Es el rol de IAM que se asignará a la ServiceAccount de Kubernetes.- Para cargas de trabajo de solo lectura, usa el rol Visualizador de objetos de almacenamiento (
roles/storage.objectViewer
). - Para cargas de trabajo de lectura y escritura, usa el rol de usuario de objetos de almacenamiento (
roles/storage.objectUser
).
- Para cargas de trabajo de solo lectura, usa el rol Visualizador de objetos de almacenamiento (
¿Qué sigue?
- Obtén información para activar buckets de Cloud Storage especificando tus buckets en línea con la especificación del Pod.
- Obtén información para activar buckets de Cloud Storage con un recurso PersistentVolume.
- Obtén más información para configurar aplicaciones para usar la federación de identidades para cargas de trabajo para GKE.