Aprovisionamiento de PVC en el servicio File Storage
Descubra cómo aprovisionar reclamaciones de volumen persistentes para clusters que ha creado mediante Container Engine for Kubernetes (OKE) montando sistemas de archivos desde el servicio File Storage.
El servicio Oracle Cloud Infrastructure File Storage proporciona un sistema de archivos de red duradero, escalable, distribuido y empresarial. El plugin de volumen CSI se utiliza para conectar clusters a sistemas de archivos en el servicio File Storage.
Puede utilizar el servicio File Storage para aprovisionar reclamaciones de volumen persistentes (PVC) de dos formas:
- Definiendo y creando una nueva clase de almacenamiento (opcionalmente especificando el OCID de un destino de montaje existente) y, a continuación, definiendo y creando una nueva PVC basada en la clase de almacenamiento. Al crear la PVC, el plugin de volumen CSI crea dinámicamente un nuevo sistema de archivos de servicio de File Storage y un nuevo volumen persistente respaldado por el nuevo sistema de archivos. Consulte Aprovisionamiento de una PVC en un nuevo sistema de archivos mediante el plugin de volumen CSI.
- Mediante la creación manual de un sistema de archivos y un destino de montaje en el servicio File Storage, la definición y creación de un PV respaldado por el nuevo sistema de archivos y, por último, la definición de una nueva PVC. Al crear la PVC, Container Engine for Kubernetes enlaza la PVC al PV respaldado por el servicio File Storage. Consulte Provisionamiento de una PVC en un sistema de archivos existente.
Tenga en cuenta lo siguiente:
- Al utilizar el plugin de volumen CSI para crear dinámicamente un nuevo sistema de archivos, no actualice manualmente las propiedades del nuevo volumen persistente que crea el plugin de volumen CSI.
- Los sistemas de archivos de servicio, destinos de montaje y exportaciones de File Storage creados dinámicamente por el plugin de volumen CSI reciben nombres que empiezan por
csi-fss-
. - Los sistemas de archivos de servicio, destinos de montaje y exportaciones de File Storage creados dinámicamente por el plugin de volumen CSI aparecen en la consola. Sin embargo, no utilice la consola (o CLI o API de Oracle Cloud Infrastructure) para modificar estos recursos creados dinámicamente. Los cambios realizados en los recursos de Oracle Cloud Infrastructure creados dinámicamente por el plugin de volumen CSI no se concilian con los objetos de Kubernetes.
- Si suprime un PVC enlazado a un PV respaldado por un sistema de archivos creado por el plugin de volumen CSI, el plugin de volumen CSI suprime el sistema de archivos y PV creado. Si el plugin de volumen CSI también ha creado un nuevo destino de montaje (porque no ha especificado el OCID de un destino de montaje existente en la definición de clase de almacenamiento), el plugin de volumen CSI también suprime el destino de montaje. Tenga en cuenta que si especificó el OCID de un destino de montaje existente, el plugin de volumen CSI no suprime el destino de montaje.
- El aprovisionamiento de una PVC en un nuevo sistema de archivos creado dinámicamente por el plugin de volumen CSI está disponible cuando los clusters ejecutan Kubernetes 1.22 o posterior. Consulte Aprovisionamiento de una PVC en un nuevo sistema de archivos mediante el plugin de volumen CSI.
- El aprovisionamiento de una PVC mediante el enlace a un PV respaldado por un sistema de archivos existente está disponible cuando los clusters ejecutan Kubernetes 1.18 o posterior. Consulte Provisionamiento de una PVC en un sistema de archivos existente.
Cifrado de datos estáticos y datos en tránsito con el servicio de almacenamiento de archivos
Al utilizar el servicio File Storage para aprovisionar PVC, especifique el cifrado en tránsito independientemente del cifrado estático.
El servicio File Storage siempre cifra los datos estáticos mediante claves de cifrado gestionadas por Oracle por defecto. Sin embargo, tiene la opción de especificar el cifrado estático mediante sus propias claves de cifrado maestras que gestiona en el servicio Vault. La forma de especificar el cifrado estático depende de si está aprovisionando una PVC en:
- un nuevo sistema de archivos creado dinámicamente por el plugin de volumen CSI (consulte Cifrado de datos estáticos en un nuevo sistema de archivos)
- un sistema de archivos existente que ha creado manualmente (consulte Cifrado de datos estáticos en un sistema de archivos existente)
Si desea gestionar sus propias claves de cifrado maestras para cifrar datos estáticos, debe:
- Cree una clave de cifrado maestra adecuada en el almacén de claves (u obtenga el OCID de dicha clave). Consulte Gestión de claves.
- Cree una política que otorgue acceso a la clave de cifrado maestra. Consulte Create Policy to Access User-Managed Encryption Keys for Encrypting Boot Volumes, Block Volumes, and/o File Systems.
El servicio File Storage puede cifrar de forma opcional los datos en tránsito. Si especifica el cifrado en tránsito, los datos en tránsito se cifran mediante un certificado TLS (seguridad de capa de transporte) siempre gestionado por Oracle, independientemente de si los datos estáticos se cifran mediante claves gestionadas por Oracle o mediante claves gestionadas por el usuario. El cifrado en tránsito protege los datos que se transfieren entre instancias y sistemas de archivos montados mediante el cifrado TLS v. 1.2. Para obtener más información sobre el cifrado en tránsito y el servicio File Storage, consulte Uso del cifrado TLS en tránsito. La forma de especificar el cifrado en tránsito depende de si está aprovisionando una PVC en:
- un nuevo sistema de archivos creado dinámicamente por el plugin de volumen CSI (consulte Cifrado de datos en tránsito en un nuevo sistema de archivos)
- un sistema de archivos existente que ha creado manualmente (consulte Cifrado de datos en tránsito en un sistema de archivos existente)
Tenga en cuenta que al utilizar el servicio File Storage para aprovisionar PVC, el cifrado en tránsito solo está soportado cuando las instancias informáticas que alojan nodos de trabajador ejecutan Oracle Linux 7 y Oracle Linux 8.
Aprovisionamiento de una PVC en un nuevo sistema de archivos mediante el plugin de volumen CSI
Los siguientes requisitos se aplican al aprovisionar una PVC en un nuevo sistema de archivos creado dinámicamente por el plugin de volumen CSI:
- Los clusters deben ejecutar Kubernetes 1.22 o una versión posterior para aprovisionar una PVC en un nuevo sistema de archivos creado dinámicamente por el plugin de volumen CSI.
-
Deben existir las políticas de IAM adecuadas para permitir que el plugin de volumen CSI cree y gestione recursos de File Storage. Más concretamente:
- Una política para crear y/o gestionar sistemas de archivos, destinos de montaje y rutas de exportación. Por ejemplo:
ALLOW any-user to manage file-family in compartment <compartment-name> where request.principal.type = 'cluster'
- Una política para utilizar VNIC, IP privadas, zonas de DNS privadas y subredes. Por ejemplo:
ALLOW any-user to use virtual-network-family in compartment <compartment-name> where request.principal.type = 'cluster'
- Una política para crear y/o gestionar sistemas de archivos, destinos de montaje y rutas de exportación. Por ejemplo:
-
Si el compartimento al que pertenece un pool de nodos, una subred de nodo de trabajador, un sistema de archivos o un destino de montaje es diferente del compartimento al que pertenece un cluster, deben existir políticas de IAM para permitir que el plugin de volumen de CSI acceda a la ubicación adecuada. Por ejemplo:
ALLOW any-user to manage file-family in TENANCY where request.principal.type = 'cluster'
ALLOW any-user to use virtual-network-family in TENANCY where request.principal.type = 'cluster'
-
Para especificar una clave de cifrado maestra gestionada por el usuario concreta del servicio Almacén para cifrar datos en sistemas de archivos, deben existir políticas de IAM adecuadas para permitir que el plugin de volumen CSI acceda a esa clave de cifrado maestra. Consulte Create Policy to Access User-Managed Encryption Keys for Encrypting Boot Volumes, Block Volumes, and/o File Systems.
Para aprovisionar dinámicamente una PVC en un nuevo sistema de archivos creado dinámicamente por el plugin de volumen CSI en el servicio File Storage:
- (Opcional) Cree un destino de montaje en el servicio File Storage. Consulte Creación de un destino de montaje.
El plugin de volumen CSI requiere un destino de montaje activo (es decir, un destino de montaje con una dirección IP asignada) para crear un nuevo sistema de archivos. Si no crea un destino de montaje por adelantado, especifique la subred en la que el plugin de volumen CSI creará un nuevo destino de montaje al definir la clase de almacenamiento.
- Defina una nueva clase de almacenamiento que utilice el provisionador
fss.csi.oracleclould.com
:- Cree un archivo de manifiesto (por ejemplo, en un archivo denominado fss-dyn-st-class.yaml), especifique un nombre para la nueva clase de almacenamiento y especifique valores para los parámetros necesarios y opcionales:
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: <storage-class-name> provisioner: fss.csi.oraclecloud.com parameters: availabilityDomain: <ad-name> mountTargetOcid: <mt-ocid> | mountTargetSubnetOcid: <mt-subnet-ocid> compartmentOcid: <compartment-ocid> kmsKeyOcid: <key-ocid> exportPath: <path> exportOptions: "[{<options-in-json-format>}]" encryptInTransit: "true"|"false" oci.oraclecloud.com/initial-defined-tags-override: '{"<tag-namespace>": {"<tag-key>": "<tag-value>"}}' oci.oraclecloud.com/initial-freeform-tags-override: '{"<tag-key>": "<tag-value>"}'
donde:
name: <storage-class-name>
: necesario. Nombre que elija para la clase de almacenamiento.availabilityDomain: <ad-name>
: necesario. Nombre del dominio de disponibilidad en el que se va a crear el nuevo sistema de archivos (y en el que se va a crear el nuevo destino de montaje, si no se especifica un OCID de destino de montaje existente). Por ejemplo,US-ASHBURN-AD-1
. Para averiguar el nombre de dominio de disponibilidad que se va a utilizar, ejecute el comando de la CLIoci iam availability-domain list
(o utilice la operación ListAvailabilityDomains). Para obtener más información, consulte Nombres de dominio de disponibilidad de su arrendamiento.mountTargetOcid: <mt-ocid> | mountTargetSubnetOcid: <mt-subnet-ocid>
: necesario. El OCID de un destino de montaje activo existente (mountTargetOcid: <mt-ocid>
) o el OCID de una subred en la que crear un nuevo destino de montaje (mountTargetSubnetOcid: <mt-subnet-ocid>
). EspecifiquemountTargetOcid
omountTargetSubnetOcid
. Si especificamountTargetOcid
ymountTargetSubnetOcid
en la definición de clase de almacenamiento, se utiliza el destino de montaje existente especificado pormountTargetOcid
y se ignoramountTargetSubnetOcid
. Por ejemplo:mountTargetSubnetOcid: ocid1.subnet.oc1.iad.aaaaaaaa2xpk______zva
mountTargetOcid: ocid1.mounttarget.oc1.iad.aaaaaaaa4np______fuy
compartmentOcid: <compartment-ocid>
: opcional. OCID del compartimento al que va a pertenecer el nuevo sistema de archivos (y el nuevo destino de montaje, si no se especifica un OCID de destino de montaje existente). Si no se especifica, el valor por defecto es el mismo compartimento que el cluster. Por ejemplo,compartmentOcid: ocid1.compartment.oc1..aaaaaaaay______t6q
kmsKeyOcid: <key-ocid>
: opcional. OCID de una clave de cifrado maestra que gestione, con la que cifrar los datos estáticos. Si no se especifica, los datos se cifran en reposo mediante claves de cifrado gestionadas por Oracle. Consulte Cifrado de datos estáticos en un nuevo sistema de archivos. Por ejemplo,kmsKeyOcid: ocid1.key.oc1.iad.anntl______usjh
exportPath: <path>
: opcional. La ruta de una exportación que identifica de forma única el sistema de archivos dentro del destino de montaje. La ruta de exportación debe comenzar por una barra (/) seguida de una secuencia de cero o más elementos separados por barras. Por ejemplo,/FileSystem1
. Para obtener más información, consulte Rutas en sistemas de archivos.Si incluye
exportPath: <path>
en una definición de clase de almacenamiento, no especifique una ruta (ya sea como ruta de acceso o como subruta de acceso de una ruta de acceso existente) que ya exista. Si especifica una ruta que ya existe, se devuelve un error porque varios sistemas de archivos con el mismo destino de montaje no pueden tener la misma ruta de exportación. Por lo tanto, si incluyeexportPath: <path>
en la definición de clase de almacenamiento, utilice solo esta definición de clase de almacenamiento para crear un sistema de archivos.Si no incluye
exportPath: <path>
en la definición de clase de almacenamiento, la ruta de acceso se define por defecto en el nombre mostrado del sistema de archivos creado por el plugin de volumen CSI (empezando por/csi-fss-
).exportOptions: "[{<options-in-json-format>}]"
Opcional. Juego de parámetros (en formato JSON válido) dentro de la exportación que especifica el nivel de acceso otorgado a los clientes NFS cuando se conectan a un destino de montaje. Una entrada de opciones de exportación NFS en una exportación define el acceso para una única dirección IP o rango de bloques de CIDR. Para obtener más información, consulte Trabajar con opciones de exportación y exportación NFS. Si no se especifica, se utiliza el siguiente valor por defecto:exportOptions: "[{\"source\":\"0.0.0.0/0\",\"requirePrivilegedSourcePort\":false,\"access\":\"READ_WRITE\",\"identitySquash\":\"NONE\"}]"
encryptInTransit: "true"|"false"
: opcional. Indica si se deben cifrar los datos en tránsito. Si especifica"true"
, asegúrese de completar los pasos de configuración descritos en Cifrado de datos en tránsito en un nuevo sistema de archivos. Si no se especifica, el valor por defecto es"false"
. Por ejemplo,encryptInTransit: "true"
.oci.oraclecloud.com/initial-defined-tags-override: '{"<tag-namespace>": {"<tag-key>": "<tag-value>"}}'
Opcional. Especifica una etiqueta definida para el nuevo sistema de archivos. Por ejemplo,oci.oraclecloud.com/initial-defined-tags-override: '{"Operations": {"CostCenter": "42"}}'
Tenga en cuenta que para aplicar etiquetas definidas de un espacio de nombres de etiqueta que pertenece a un compartimento a un recurso de sistema de archivos que pertenece a un compartimento diferente, debe incluir una sentencia de política para permitir que el cluster utilice el espacio de nombres de etiqueta. Consulte Política de IAM adicional cuando un cluster y un espacio de nombres de etiqueta están en diferentes compartimentos.
oci.oraclecloud.com/initial-freeform-tags-override: '{"<tag-key>": "<tag-value>"}'
Opcional. Especifica una etiqueta de formato libre para el nuevo sistema de archivos. Por ejemplo,oci.oraclecloud.com/initial-freeform-tags-override: '{"Department": "Finance"}'
Por ejemplo:
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: fss-dyn-storage provisioner: fss.csi.oraclecloud.com parameters: availabilityDomain: US-ASHBURN-AD-1 mountTargetSubnetOcid: ocid1.subnet.oc1.iad.aaaaaaaa2xpk______zva compartmentOcid: ocid1.compartment.oc1..aaaaaaaay______t6q kmsKeyOcid: ocid1.key.oc1.iad.anntl______usjh exportPath: /FileSystem1 exportOptions: "[{\"source\":\"0.0.0.0/0\",\"requirePrivilegedSourcePort\":false,\"access\":\"READ_WRITE\",\"identitySquash\":\"NONE\"}]" encryptInTransit: "true"
- Cree la clase de almacenamiento a partir del archivo de manifiesto introduciendo:
kubectl create -f <filename>
Por ejemplo:kubectl create -f fss-dyn-st-class.yaml
- Cree un archivo de manifiesto (por ejemplo, en un archivo denominado fss-dyn-st-class.yaml), especifique un nombre para la nueva clase de almacenamiento y especifique valores para los parámetros necesarios y opcionales:
-
Cree reglas de seguridad en un grupo de seguridad de red (recomendado) o en una lista de seguridad para el destino de montaje al que se hace referencia en la definición de clase de almacenamiento (o creado por ella) y para los nodos de trabajador del cluster.
Las reglas de seguridad que se van a crear dependen de las ubicaciones de red relativas del destino de montaje y los nodos de trabajador, según los siguientes escenarios:Estos escenarios, las reglas de seguridad que se van a crear y dónde se van a crear, se describen completamente en la documentación del servicio File Storage (consulte Configuración de reglas de seguridad de VCN para File Storage).
- Cree una PVC para que la aprovisione el nuevo sistema de archivos en el servicio File Storage, de la siguiente forma:
- Cree un archivo de manifiesto para definir la PVC:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: <pvc-name> spec: accessModes: - ReadWriteMany storageClassName: "<storage-class-name>" resources: requests: storage: 50Gi
donde:
name: <pvc-name>
: necesario. Por ejemplo,fss-dynamic-claim
storageClassName: "<storage-class-name>"
: necesario. Nombre de la clase de almacenamiento definida anteriormente. Por ejemplo,fss-dyn-storage
.accessModes: - ReadWriteMany
: necesario. Tenga en cuenta queaccessModes:
debe especificarReadWriteMany
.storage: 50Gi
: necesario. Tenga en cuenta que Kubernetes necesita que especifique un valor parastorage:
en el manifiesto de PVC. Sin embargo, el servicio File Storage no soporta la especificación de un tamaño de sistema de archivos y crea un nuevo sistema de archivos con un tamaño por defecto, independientemente del valor que especifique parastorage:
.
Por ejemplo, el siguiente archivo de manifiesto (denominado
fss-dyn-claim.yaml
) define una PVC denominadafss-dynamic-claim
que aprovisiona el sistema de archivos definido en la clase de almacenamientofss-dyn-storage
:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: fss-dynamic-claim spec: accessModes: - ReadWriteMany storageClassName: "fss-dyn-storage" resources: requests: storage: 50Gi
- Cree la PVC a partir del archivo de manifiesto introduciendo:
kubectl create -f <filename>
Por ejemplo:kubectl create -f fss-dyn-claim.yaml
Se crea un nuevo PVC. El plugin de volumen CSI crea un nuevo volumen persistente (PV) y un nuevo sistema de archivos en el servicio File Storage (junto con un nuevo destino de montaje si no ha especificado un destino de montaje existente).
El nuevo PVC está vinculado al nuevo PV. Los datos se cifran de forma estática mediante claves de cifrado gestionadas por Oracle o por usted.
- Cree un archivo de manifiesto para definir la PVC:
- Verifique que la PVC se ha enlazado al nuevo volumen persistente introduciendo:
kubectl get pvc
La salida del comando anterior confirma que la PVC se ha enlazado correctamente:
NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE fss-dynamic-claim Bound csi-fss-<unique_ID> 50Gi RWX fss-dyn-storage 4m
- Utilice la nueva PVC al crear otros objetos, como pods. Por ejemplo, puede crear un nuevo pod a partir de la siguiente definición de pod:
apiVersion: v1 kind: Pod metadata: name: fss-dynamic-app spec: containers: - name: nginx image: nginx:latest ports: - name: http containerPort: 80 volumeMounts: - name: persistent-storage mountPath: /usr/share/nginx/html volumes: - name: persistent-storage persistentVolumeClaim: claimName: fss-dynamic-claim
-
Después de crear un nuevo pod como se describe en el ejemplo del paso anterior, puede verificar que el pod está utilizando el nuevo PVC introduciendo:
kubectl describe pod nginx
Si prevé que sea frecuente crear nuevos sistemas de archivos y PV nuevos al crear PVC de forma dinámica, puede especificar que la nueva clase de almacenamiento que ha creado se utilice como clase de almacenamiento por defecto para aprovisionar nuevas PVC. Consulte la documentación de Kubernetes para obtener más información.
Cifrado de datos estáticos en un nuevo sistema de archivos
El servicio File Storage siempre cifra los datos estáticos mediante claves de cifrado gestionadas por Oracle por defecto. Sin embargo, tiene la opción de cifrar datos estáticos mediante sus propias claves de cifrado maestras que gestiona en el servicio Vault.
En función de cómo desee cifrar los datos estáticos, siga las instrucciones adecuadas a continuación:
- Para utilizar el plugin de volumen CSI para crear de forma dinámica un nuevo sistema de archivos que utilice claves de cifrado gestionadas por Oracle para cifrar datos estáticos, siga los pasos de Aprovisionamiento de una PVC en un nuevo sistema de archivos mediante el plugin de volumen CSI y no incluya el parámetro
kmsKeyOcid: <key-ocid>
en la definición de clase de almacenamiento. Los datos se cifran cuando están estáticos, utilizando claves de cifrado gestionadas por Oracle. - Para utilizar el plugin de volumen CSI para crear de forma dinámica un nuevo sistema de archivos que utilice claves de cifrado maestras que gestione para cifrar datos estáticos, siga los pasos de Aprovisionamiento de una PVC en un nuevo sistema de archivos mediante el plugin de volumen CSI, incluya el parámetro
kmsKeyOcid: <key-ocid>
en la definición de clase de almacenamiento y especifique el OCID de la clave de cifrado maestra en el servicio Almacén. Los datos se cifran de forma estática, utilizando la clave de cifrado que especifique.
Cifrado de datos en tránsito en un nuevo sistema de archivos
El cifrado en tránsito protege los datos que se transfieren entre instancias y sistemas de archivos montados mediante el cifrado TLS 1.2 (seguridad de capa de transporte). Para obtener más información sobre el cifrado en tránsito y el servicio File Storage, consulte Uso del cifrado TLS en tránsito.
El cifrado en tránsito se especifica independientemente del cifrado estático. Los datos en tránsito se cifran mediante un certificado TLS que siempre está gestionado por Oracle, independientemente de si los datos estáticos se cifran mediante claves gestionadas por Oracle o mediante claves gestionadas por el usuario.
Tenga en cuenta que al utilizar el servicio File Storage para aprovisionar PVC, el cifrado en tránsito solo está soportado cuando las instancias informáticas que alojan nodos de trabajador ejecutan Oracle Linux 7 y Oracle Linux 8.
Para utilizar el plugin de volumen CSI para crear dinámicamente un nuevo sistema de archivos con cifrado en tránsito:
- Siga las instrucciones de Configuración del cifrado en tránsito para Linux para configurar el cifrado en tránsito en el sistema de archivos. Más concretamente:
- Complete los requisitos mediante la configuración de las siguientes reglas de seguridad en un grupo de seguridad de red (recomendado) o una lista de seguridad para el destino de montaje que exporta el sistema de archivos:
- Regla de entrada con estado que permite el tráfico TCP a un rango de puertos de destino de 2051, ya sea de todos los puertos de una dirección IP de origen o bloque CIDR de su elección, o de todos los orígenes.
- Regla de salida con estado que permite el tráfico TCP desde un rango de puertos de origen de 2051, ya sea a todos los puertos de una dirección IP de destino o bloque CIDR de su elección, o a todos los destinos.
Para obtener más información, consulte Escenario C: El destino de montaje y la instancia utilizan cifrado TLS en tránsito.
- Descargue el paquete
oci-fss-utils
en cada nodo de trabajador. Tenga en cuenta que debe aceptar el Acuerdo de licencia. Consulte Tarea 1: Descarga del paquete OCI-FSS-UTILS. - Instale el paquete
oci-fss-utils
en cada nodo de trabajador. Consulte Tarea 2: Instalación del paquete OCI-FSS-UTILS en Oracle Linux o CentOS.
- Complete los requisitos mediante la configuración de las siguientes reglas de seguridad en un grupo de seguridad de red (recomendado) o una lista de seguridad para el destino de montaje que exporta el sistema de archivos:
-
Siga las instrucciones de Aprovisionamiento de una PVC en un nuevo sistema de archivos mediante el plugin de volumen CSI e incluya el parámetro
encryptInTransit: "true"
en la definición de clase de almacenamiento. Los datos se cifran en tránsito mediante una clave de cifrado gestionada por Oracle.
Aprovisionamiento de una PVC en un sistema de archivos existente
Para crear una PVC en un sistema de archivos existente en el servicio File Storage (mediante claves de cifrado gestionadas por Oracle para cifrar los datos estáticos):
- Cree un sistema de archivos con un destino de montaje en el servicio File Storage y seleccione la opción de cifrado Cifrar mediante claves gestionadas por Oracle. Consulte Creación de un sistema de archivos.
- Cree reglas de seguridad en un grupo de seguridad de red (recomendado) o en una lista de seguridad tanto para el destino de montaje que exporta el sistema de archivos como para los nodos de trabajador del cluster.Las reglas de seguridad que se van a crear dependen de las ubicaciones de red relativas del destino de montaje y los nodos de trabajador, según los siguientes escenarios:
Estos escenarios, las reglas de seguridad que se van a crear y dónde se van a crear, se describen completamente en la documentación del servicio File Storage (consulte Configuración de reglas de seguridad de VCN para File Storage).
- Cree un PV respaldado por el sistema de archivos en el servicio File Storage de la siguiente manera:
-
Cree un archivo de manifiesto para definir un PV y, en la sección
csi:
, defina:- De
driver
afss.csi.oraclecloud.com
- De
volumeHandle
a<FileSystemOCID>:<MountTargetIP>:<path>
donde:<FileSystemOCID>
es el OCID del sistema de archivos definido en el servicio File Storage.<MountTargetIP>
es la dirección IP asignada al destino de montaje.<path>
es la ruta de montaje al sistema de archivos relativa a la dirección IP del destino de montaje, que comienza con una barra diagonal.
ocid1.filesystem.oc1.iad.aaaa______j2xw:10.0.0.6:/FileSystem1
Por ejemplo, el siguiente archivo de manifiesto (denominado fss-pv.yaml) define un PV denominado
fss-pv
respaldado por un sistema de archivos en el servicio File Storage:apiVersion: v1 kind: PersistentVolume metadata: name: fss-pv spec: capacity: storage: 50Gi volumeMode: Filesystem accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain csi: driver: fss.csi.oraclecloud.com volumeHandle: ocid1.filesystem.oc1.iad.aaaa______j2xw:10.0.0.6:/FileSystem1
- De
- Cree el PV desde el archivo de manifiesto introduciendo:
kubectl create -f <filename>
Por ejemplo:
kubectl create -f fss-pv.yaml
-
- Cree una PVC aprovisionada por el PV que ha creado, de la siguiente forma:
- Cree un archivo de manifiesto para definir la PVC y defina:
- De
storageClassName
a""
volumeName
al nombre del PV que ha creado (por ejemplo,fss-pv
)
Por ejemplo, el siguiente archivo de manifiesto (denominado
fss-pvc.yaml
) define una PVC denominadafss-pvc
aprovisionada por un PV denominadofss-pv
:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: fss-pvc spec: accessModes: - ReadWriteMany storageClassName: "" resources: requests: storage: 50Gi volumeName: fss-pv
Tenga en cuenta que el elemento
requests: storage:
debe estar presente en el archivo de manifiesto de PVC y su valor debe coincidir con el valor especificado para el elementocapacity: storage:
en el archivo de manifiesto del PV. Aparte de eso, se ignora el valor del elementorequests: storage:
. - De
- Cree la PVC a partir del archivo de manifiesto introduciendo:
kubectl create -f <filename>
Por ejemplo:kubectl create -f fss-pvc.yaml
- Cree un archivo de manifiesto para definir la PVC y defina:
La PVC está enlazada al PV respaldado por el sistema de archivos de servicio File Storage. Los datos se cifran cuando están estáticos, utilizando claves de cifrado gestionadas por Oracle.
Cifrado de datos estáticos en un sistema de archivos existente
El servicio File Storage siempre cifra los datos estáticos mediante claves de cifrado gestionadas por Oracle por defecto. Sin embargo, tiene la opción de cifrar sistemas de archivos mediante claves de cifrado maestras propias en el servicio Vault.
En función de cómo desee cifrar los datos estáticos, siga las instrucciones adecuadas a continuación:
- Para crear una PVC en un sistema de archivos mediante claves de cifrado gestionadas por Oracle para cifrar datos estáticos, siga los pasos de Aprovisionamiento de una PVC en un sistema de archivos existente y seleccione la opción de cifrado Cifrar mediante claves gestionadas por Oracle, como se describe. Los datos se cifran cuando están estáticos, utilizando claves de cifrado gestionadas por Oracle.
- Para crear una PVC en un sistema de archivos mediante claves de cifrado maestras que gestione para cifrar datos estáticos, siga los pasos de Aprovisionamiento de una PVC en un sistema de archivos existente, pero seleccione la opción de cifrado Cifrar mediante claves gestionadas por el cliente y especifique la clave de cifrado maestra en el servicio Almacén. Los datos se cifran de forma estática, utilizando la clave de cifrado que especifique.
Cifrado de datos en tránsito en un sistema de archivos existente
El cifrado en tránsito protege los datos que se transfieren entre instancias y sistemas de archivos montados mediante el cifrado TLS v 1.2 (seguridad de capa de transporte). Para obtener más información sobre el cifrado en tránsito y el servicio File Storage, consulte Uso del cifrado TLS en tránsito.
El cifrado en tránsito se especifica independientemente del cifrado estático. Los datos en tránsito se cifran mediante un certificado TLS que siempre está gestionado por Oracle, independientemente de si los datos estáticos se cifran mediante claves gestionadas por Oracle o mediante claves gestionadas por el usuario.
Tenga en cuenta que al utilizar el servicio File Storage para aprovisionar PVC, el cifrado en tránsito solo está soportado cuando las instancias informáticas que alojan nodos de trabajador ejecutan Oracle Linux 7 y Oracle Linux 8.
Para crear una PVC en un sistema de archivos donde los datos se cifran en tránsito:
- Siga las instrucciones de Configuración del cifrado en tránsito para Linux para configurar el cifrado en tránsito en el sistema de archivos. Más concretamente:
- Complete los requisitos mediante la configuración de las siguientes reglas de seguridad en un grupo de seguridad de red (recomendado) o una lista de seguridad para el destino de montaje que exporta el sistema de archivos:
- Regla de entrada con estado que permite el tráfico TCP a un rango de puertos de destino de 2051, ya sea de todos los puertos de una dirección IP de origen o bloque CIDR de su elección, o de todos los orígenes.
- Regla de salida con estado que permite el tráfico TCP desde un rango de puertos de origen de 2051, ya sea a todos los puertos de una dirección IP de destino o bloque CIDR de su elección, o a todos los destinos.
Para obtener más información, consulte Escenario C: El destino de montaje y la instancia utilizan TLS en el cifrado en tránsito.
- Descargue el paquete
oci-fss-utils
en cada nodo de trabajador. Tenga en cuenta que debe aceptar el Acuerdo de licencia. Consulte Tarea 1: Descarga del paquete OCI-FSS-UTILS. - Instale el paquete
oci-fss-utils
en cada nodo de trabajador. Consulte Tarea 2: Instalación del paquete OCI-FSS-UTILS en Oracle Linux o CentOS.
- Complete los requisitos mediante la configuración de las siguientes reglas de seguridad en un grupo de seguridad de red (recomendado) o una lista de seguridad para el destino de montaje que exporta el sistema de archivos:
-
Siga las instrucciones de Aprovisionamiento de una PVC en un sistema de archivos existente y seleccione la opción Cifrar con claves gestionadas por Oracle o la opción Cifrar con claves gestionadas por el cliente, según sea necesario para el cifrado de datos estático. Sin embargo, al crear el archivo de manifiesto para definir un PV, defina
encryptInTransit
en"true"
en la seccióncsi
del archivo. Por ejemplo:apiVersion: v1 kind: PersistentVolume metadata: name: fss-encrypted-it-pv spec: capacity: storage: 50Gi volumeMode: Filesystem accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain csi: driver: fss.csi.oraclecloud.com volumeHandle: ocid1.filesystem.oc1.iad.aaaa______j2xw:10.0.0.6:/FileSystem1 volumeAttributes: encryptInTransit: "true"
Solución de problemas de aprovisionamiento del servicio File Storage de PVC
El pod no puede acceder al sistema de archivos debido a permisos insuficientes
Descripción: cuando un pod intenta acceder a un volumen persistente (PV) respaldado por un sistema de archivos en el servicio File Storage, el intento puede fallar con un mensaje de "Permiso denegado".
Causa: al definir un PV respaldado por un sistema de archivos en el servicio File Storage, defina el atributo accessModes
del PV en ReadWriteMany
y no tiene que especificar un valor para el atributo fsType
del PV.
El plugin de volumen CSI se implementa como un objeto CSIDriver. Utilice el atributo fsGroupPolicy
del objeto CSIDriver para controlar si CSIDriver cambia la propiedad y los permisos de un volumen para que coincidan con el atributo fsGroup
especificado en el securityContext
de un pod que monta el volumen. Al cambiar la propiedad y los permisos del volumen, el pod puede acceder al volumen después de montarlo.
Por defecto, el atributo fsGroupPolicy
del objeto CSIDriver está definido en ReadWriteOnceWithFSType
, lo que indica que CSIDriver debe examinar la definición de PV para determinar si se deben modificar la propiedad del volumen y los permisos para que coincidan con el atributo fsGroup
del pod de la siguiente forma:
- Si el atributo
fsType
del PV está definido, CSIDriver modifica la propiedad y los permisos del volumen para que coincidan con el atributofsGroup
especificado en el podsecurityContext
. Como resultado, el volumen es accesible para el pod. - Si el atributo
fsType
del PV no está definido, CSIDriver no modifica la propiedad ni los permisos del volumen. Los procesos que se ejecutan como raíz solo pueden acceder al volumen. Como resultado, un pod que no se está ejecutando como raíz recibe el mensaje "Permission Denied" al intentar acceder a un directorio o archivo en el volumen montado.
Puede verificar que el motivo por el que un pod recibe el mensaje "Permiso denegado" sea porque el atributo fsGroupPolicy
del objeto CSIDriver está definido en ReadWriteOnceWithFSType
y el atributo fsType
del PV no está definido. Ejecute un comando en el pod para escribir un archivo en un directorio del volumen montado y, a continuación, examine las propiedades del archivo para confirmar si el propietario del grupo coincide con el atributo fsGroup
especificado en el securityContext
del pod. Por ejemplo, suponga que un pod tiene el siguiente manifiesto:
apiVersion: v1
kind: Pod
metadata:
name: security-context-demo
spec:
securityContext:
fsGroup: 2000
containers:
- name: sec-ctx-demo
image: busybox:1.28
command: [ "sh", "-c", "sleep 1h" ]
volumeMounts:
- name: sec-ctx-vol
mountPath: /data/demo
- Ejecute un comando en el pod para escribir un archivo en un directorio del volumen montado. Por ejemplo, introduzca:
kubectl exec -it security-context-demo -- sh -c "cd /data/demo && echo hello > testfile"
- Examine las propiedades del archivo recién creado para confirmar los derechos de acceso. Por ejemplo, introduzca:
kubectl exec -it security-context-demo -- sh -c "ls -l /data/demo/testfile"
Idealmente, la salida muestra que el propietario del grupo del archivo es el mismo que el especificado por el atributo
fsGroup
del pod, proporcionando al pod acceso al archivo. Por ejemplo:-rw-r--r-- 1 root 2000 6 Jun 6 20:08 testfile
Sin embargo, si el atributo
fsGroupPolicy
del objeto CSIDriver está definido enReadWriteOnceWithFSType
y el atributofsType
del PV no está definido, la salida muestra el propietario del grupo del archivo como raíz y el pod no tiene acceso al archivo. Por ejemplo:-rw-r--r-- 1 root root 6 Jun 6 20:08 testfile
Para obtener más información, consulte la Política de fsGroup de volumen CSI en la documentación de Kubernetes.
Acción: para activar el objeto CSIDriver para modificar la propiedad y los permisos del volumen para que coincidan con el atributo fsGroup
especificado en securityContext
del pod, defina el atributo fsGroupPolicy
del objeto CSIDriver en File
de la siguiente manera:
- Obtenga el archivo de configuración CSIDriver introduciendo:
kubectl get csiDriver fss.csi.oraclecloud.com -oyaml > fss_csi_driver.yaml
- En un editor de texto, edite el archivo fss_csi_driver.yaml y cambie el atributo
fsGroupPolicy
del objeto CSIDriver deReadWriteOnceWithFSType
aFile
.Por ejemplo, cambie:
apiVersion: storage.k8s.io/v1 kind: CSIDriver metadata: creationTimestamp: "<timestamp>" name: fss.csi.oraclecloud.com resourceVersion: "<version>" uid: <identifier> spec: attachRequired: false fsGroupPolicy: ReadWriteOnceWithFSType podInfoOnMount: false requiresRepublish: false storageCapacity: false volumeLifecycleModes: - Persistent
en:
apiVersion: storage.k8s.io/v1 kind: CSIDriver metadata: creationTimestamp: "<timestamp>" name: fss.csi.oraclecloud.com resourceVersion: "<version>" uid: <identifier> spec: attachRequired: false fsGroupPolicy: File podInfoOnMount: false requiresRepublish: false storageCapacity: false volumeLifecycleModes: - Persistent
Cambie solo el valor de
fsGroupPolicy
. No cambie ningún otro valor. - Guardar y cerrar el archivo fss_csi_driver.yaml.
- Suprima el objeto CSIDriver existente introduciendo:
kubectl delete csiDriver fss.csi.oraclecloud.com
- Cree el nuevo objeto CSIDriver introduciendo:
kubectl apply -f fss_csi_driver.yaml
- Reinicie el pod que ha encontrado el mensaje "Permission Denied".