Opciones y ejemplos de configuración del backend de Google Cloud NetApp Volumes
Conoce las opciones de configuración de backend para Google Cloud NetApp Volumes y revisa ejemplos de configuración.
Opciones de configuración del backend
Cada backend aprovisiona volúmenes en una única región de Google Cloud. Para crear volúmenes en otras regiones, puedes definir backends adicionales.
| Parámetro | Descripción | Predeterminado |
|---|---|---|
|
Siempre 1 |
|
|
Nombre del controlador de almacenamiento |
El valor de |
|
(Opcional) Nombre personalizado del backend de almacenamiento |
Nombre del driver + "_" + parte de la clave API |
|
Parámetro opcional usado para especificar grupos de almacenamiento para la creación de volúmenes. |
|
|
Número de proyecto de la cuenta de Google Cloud. El valor se encuentra en la página de inicio del portal de Google Cloud. |
|
|
La ubicación de Google Cloud donde Trident crea volúmenes GCNV. Al crear clústeres de Kubernetes entre regiones, los volúmenes creados en un |
|
|
Clave API para la cuenta de servicio de Google Cloud con la |
|
|
Control detallado de las opciones de montaje de NFS. |
"nfsvers=3" |
|
Falla el aprovisionamiento si el tamaño del volumen solicitado es superior a este valor. |
"" (no aplicado por defecto) |
|
El nivel de servicio de un pool de almacenamiento y sus volúmenes. Los valores son |
|
|
Conjunto de etiquetas arbitrarias con formato JSON para aplicar en volúmenes |
"" |
|
Red de Google Cloud utilizada para volúmenes GCNV. |
|
|
Indicadores de depuración para usar cuando estés resolviendo problemas. Ejemplo, |
null |
|
Configura la creación de volúmenes NFS o SMB. Las opciones son |
|
|
Representa una lista de regiones y zonas compatibles con este backend. Para más información, consulta "Usa la topología CSI". Por ejemplo: |
Opciones de aprovisionamiento de volumen
Puedes controlar el aprovisionamiento de volúmenes predeterminados en la sección defaults del archivo de configuración.
| Parámetro | Descripción | Predeterminado |
|---|---|---|
|
Las reglas de exportación para nuevos volúmenes. Debe ser una lista separada por comas de cualquier combinación de direcciones IPv4. |
"0.0.0.0/0" |
|
Acceso al |
"verdadero" para NFSv4 "falso" para NFSv3 |
|
Porcentaje de volumen reservado para instantáneas |
"" (acepta el valor predeterminado de 0) |
|
Los permisos unix de nuevos volúmenes (4 dígitos octales). |
"" |
Configuraciones de ejemplo
Los siguientes ejemplos muestran configuraciones básicas que dejan la mayoría de los parámetros en sus valores predeterminados. Esta es la forma más fácil de definir un backend.
Configuración mínima
Esta es la configuración mínima absoluta del backend. Con esta configuración, Trident detecta todos tus grupos de almacenamiento delegados a Google Cloud NetApp Volumes en la ubicación configurada y coloca los nuevos volúmenes en uno de esos grupos aleatoriamente. Porque nasType se omite, la nfs configuración predeterminada se aplica y el backend aprovisionará volúmenes NFS.
Esta configuración es ideal cuando recién estás comenzando a utilizar Google Cloud NetApp Volumes y estás probando cosas, pero en la práctica lo más probable es que necesites proporcionar un alcance adicional para los volúmenes que aprovisiones.
---
apiVersion: v1
kind: Secret
metadata:
name: backend-tbc-gcnv-secret
type: Opaque
stringData:
private_key_id: f2cb6ed6d7cc10c453f7d3406fc700c5df0ab9ec
private_key: |
-----BEGIN PRIVATE KEY-----
znHczZsrrtHisIsAbOguSaPIKeyAZNchRAGzlzZE4jK3bl/qp8B4Kws8zX5ojY9m
znHczZsrrtHisIsAbOguSaPIKeyAZNchRAGzlzZE4jK3bl/qp8B4Kws8zX5ojY9m
znHczZsrrtHisIsAbOguSaPIKeyAZNchRAGzlzZE4jK3bl/qp8B4Kws8zX5ojY9m
XsYg6gyxy4zq7OlwWgLwGa==
-----END PRIVATE KEY-----
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-gcnv
spec:
version: 1
storageDriverName: google-cloud-netapp-volumes
projectNumber: "123455380079"
location: europe-west6
serviceLevel: premium
apiKey:
type: service_account
project_id: my-gcnv-project
client_email: myproject-prod@my-gcnv-project.iam.gserviceaccount.com
client_id: "103346282737811234567"
auth_uri: https://accounts.google.com/o/oauth2/auth
token_uri: https://oauth2.googleapis.com/token
auth_provider_x509_cert_url: https://www.googleapis.com/oauth2/v1/certs
client_x509_cert_url: https://www.googleapis.com/robot/v1/metadata/x509/myproject-prod%40my-gcnv-project.iam.gserviceaccount.com
credentials:
name: backend-tbc-gcnv-secret
Configuración para volúmenes SMB
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-gcnv1
namespace: trident
spec:
version: 1
storageDriverName: google-cloud-netapp-volumes
projectNumber: "123456789"
location: asia-east1
serviceLevel: flex
nasType: smb
apiKey:
type: service_account
project_id: cloud-native-data
client_email: trident-sample@cloud-native-data.iam.gserviceaccount.com
client_id: "123456789737813416734"
auth_uri: https://accounts.google.com/o/oauth2/auth
token_uri: https://oauth2.googleapis.com/token
auth_provider_x509_cert_url: https://www.googleapis.com/oauth2/v1/certs
client_x509_cert_url: https://www.googleapis.com/robot/v1/metadata/x509/trident-sample%40cloud-native-data.iam.gserviceaccount.com
credentials:
name: backend-tbc-gcnv-secret
Configuración con filtro StoragePools
---
apiVersion: v1
kind: Secret
metadata:
name: backend-tbc-gcnv-secret
type: Opaque
stringData:
private_key_id: f2cb6ed6d7cc10c453f7d3406fc700c5df0ab9ec
private_key: |
-----BEGIN PRIVATE KEY-----
znHczZsrrtHisIsAbOguSaPIKeyAZNchRAGzlzZE4jK3bl/qp8B4Kws8zX5ojY9m
znHczZsrrtHisIsAbOguSaPIKeyAZNchRAGzlzZE4jK3bl/qp8B4Kws8zX5ojY9m
znHczZsrrtHisIsAbOguSaPIKeyAZNchRAGzlzZE4jK3bl/qp8B4Kws8zX5ojY9m
XsYg6gyxy4zq7OlwWgLwGa==
-----END PRIVATE KEY-----
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-gcnv
spec:
version: 1
storageDriverName: google-cloud-netapp-volumes
projectNumber: "123455380079"
location: europe-west6
serviceLevel: premium
storagePools:
- premium-pool1-europe-west6
- premium-pool2-europe-west6
apiKey:
type: service_account
project_id: my-gcnv-project
client_email: myproject-prod@my-gcnv-project.iam.gserviceaccount.com
client_id: "103346282737811234567"
auth_uri: https://accounts.google.com/o/oauth2/auth
token_uri: https://oauth2.googleapis.com/token
auth_provider_x509_cert_url: https://www.googleapis.com/oauth2/v1/certs
client_x509_cert_url: https://www.googleapis.com/robot/v1/metadata/x509/myproject-prod%40my-gcnv-project.iam.gserviceaccount.com
credentials:
name: backend-tbc-gcnv-secret
Configuración de virtual pool
Esta configuración de backend define varios grupos virtuales en un solo archivo. Los grupos virtuales se definen en la storage sección. Son útiles cuando tienes varios grupos de almacenamiento que admiten diferentes niveles de servicio y quieres crear clases de almacenamiento en Kubernetes que los representen. Las etiquetas de los grupos virtuales se usan para diferenciarlos. Por ejemplo, en el ejemplo de abajo, la performance etiqueta y el serviceLevel tipo se usan para diferenciar los grupos virtuales.
También puedes establecer algunos valores predeterminados que se aplicarán a todos los grupos virtuales y sobrescribir esos valores predeterminados para grupos virtuales individuales. En el siguiente ejemplo, snapshotReserve y exportRule sirven como valores predeterminados para todos los grupos virtuales.
Para más información, consulta "Pools virtuales".
---
apiVersion: v1
kind: Secret
metadata:
name: backend-tbc-gcnv-secret
type: Opaque
stringData:
private_key_id: f2cb6ed6d7cc10c453f7d3406fc700c5df0ab9ec
private_key: |
-----BEGIN PRIVATE KEY-----
znHczZsrrtHisIsAbOguSaPIKeyAZNchRAGzlzZE4jK3bl/qp8B4Kws8zX5ojY9m
znHczZsrrtHisIsAbOguSaPIKeyAZNchRAGzlzZE4jK3bl/qp8B4Kws8zX5ojY9m
znHczZsrrtHisIsAbOguSaPIKeyAZNchRAGzlzZE4jK3bl/qp8B4Kws8zX5ojY9m
znHczZsrrtHisIsAbOguSaPIKeyAZNchRAGzlzZE4jK3bl/qp8B4Kws8zX5ojY9m
XsYg6gyxy4zq7OlwWgLwGa==
-----END PRIVATE KEY-----
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-gcnv
spec:
version: 1
storageDriverName: google-cloud-netapp-volumes
projectNumber: "123455380079"
location: europe-west6
apiKey:
type: service_account
project_id: my-gcnv-project
client_email: myproject-prod@my-gcnv-project.iam.gserviceaccount.com
client_id: "103346282737811234567"
auth_uri: https://accounts.google.com/o/oauth2/auth
token_uri: https://oauth2.googleapis.com/token
auth_provider_x509_cert_url: https://www.googleapis.com/oauth2/v1/certs
client_x509_cert_url: https://www.googleapis.com/robot/v1/metadata/x509/myproject-prod%40my-gcnv-project.iam.gserviceaccount.com
credentials:
name: backend-tbc-gcnv-secret
defaults:
snapshotReserve: "10"
exportRule: 10.0.0.0/24
storage:
- labels:
performance: extreme
serviceLevel: extreme
defaults:
snapshotReserve: "5"
exportRule: 0.0.0.0/0
- labels:
performance: premium
serviceLevel: premium
- labels:
performance: standard
serviceLevel: standard
Identidad cloud para GKE
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-gcp-gcnv
spec:
version: 1
storageDriverName: google-cloud-netapp-volumes
projectNumber: '012345678901'
network: gcnv-network
location: us-west2
serviceLevel: Premium
storagePool: pool-premium1
Configuración de topologías admitidas
Trident facilita el aprovisionamiento de volúmenes para cargas de trabajo según regiones y zonas de disponibilidad. El supportedTopologies bloque en esta configuración de backend se usa para proporcionar una lista de regiones y zonas por backend. Los valores de región y zona especificados aquí deben coincidir con los valores de región y zona de las etiquetas en cada nodo del clúster de Kubernetes. Estas regiones y zonas representan la lista de valores permitidos que se pueden proporcionar en una clase de almacenamiento. Para las clases de almacenamiento que contienen un subconjunto de las regiones y zonas proporcionadas en un backend, Trident crea volúmenes en la región y zona mencionadas. Para más información, consulta "Usa la topología CSI".
---
version: 1
storageDriverName: google-cloud-netapp-volumes
subscriptionID: 9f87c765-4774-fake-ae98-a721add45451
tenantID: 68e4f836-edc1-fake-bff9-b2d865ee56cf
clientID: dd043f63-bf8e-fake-8076-8de91e5713aa
clientSecret: SECRET
location: asia-east1
serviceLevel: flex
supportedTopologies:
- topology.kubernetes.io/region: asia-east1
topology.kubernetes.io/zone: asia-east1-a
- topology.kubernetes.io/region: asia-east1
topology.kubernetes.io/zone: asia-east1-b
¿Qué sigue?
Después de crear el archivo de configuración de backend, ejecuta el siguiente comando:
kubectl create -f <backend-file>
Para verificar que el backend se haya creado correctamente, ejecuta el siguiente comando:
kubectl get tridentbackendconfig NAME BACKEND NAME BACKEND UUID PHASE STATUS backend-tbc-gcnv backend-tbc-gcnv b2fd1ff9-b234-477e-88fd-713913294f65 Bound Success
Si falla la creación del backend, algo anda mal con la configuración del backend. Puedes describir el backend usando el kubectl get tridentbackendconfig <backend-name> comando o ver los registros para determinar la causa ejecutando el siguiente comando:
tridentctl logs
Después de identificar y corregir el problema con el archivo de configuración, puedes eliminar el backend y ejecutar el comando create otra vez.
Definiciones de clases de almacenamiento
La siguiente es una `StorageClass`definición básica que se refiere al backend de arriba.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: gcnv-nfs-sc
provisioner: csi.trident.netapp.io
parameters:
backendType: "google-cloud-netapp-volumes"
Ejemplos de definiciones usando el parameter.selector campo:
Usando parameter.selector puedes especificar para cada StorageClass el "pool virtual" que se utiliza para alojar un volumen. El volumen tendrá los aspectos definidos en el pool elegido.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: extreme-sc
provisioner: csi.trident.netapp.io
parameters:
selector: performance=extreme
backendType: google-cloud-netapp-volumes
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: premium-sc
provisioner: csi.trident.netapp.io
parameters:
selector: performance=premium
backendType: google-cloud-netapp-volumes
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: standard-sc
provisioner: csi.trident.netapp.io
parameters:
selector: performance=standard
backendType: google-cloud-netapp-volumes
Para más detalles sobre las clases de almacenamiento, consulta "Crear una clase de almacenamiento".
Definiciones de ejemplo para volúmenes SMB
Usando nasType, node-stage-secret-name y node-stage-secret-namespace, puedes especificar un volumen SMB y proporcionar las credenciales necesarias de Active Directory. Cualquier usuario/contraseña de Active Directory, con o sin permisos, puede usarse para el secreto de la etapa del nodo.
Configuración básica en el espacio de nombres predeterminado
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: gcnv-sc-smb
provisioner: csi.trident.netapp.io
parameters:
backendType: "google-cloud-netapp-volumes"
trident.netapp.io/nasType: "smb"
csi.storage.k8s.io/node-stage-secret-name: "smbcreds"
csi.storage.k8s.io/node-stage-secret-namespace: "default"
Usando diferentes secretos por espacio de nombres
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: gcnv-sc-smb
provisioner: csi.trident.netapp.io
parameters:
backendType: "google-cloud-netapp-volumes"
trident.netapp.io/nasType: "smb"
csi.storage.k8s.io/node-stage-secret-name: "smbcreds"
csi.storage.k8s.io/node-stage-secret-namespace: ${pvc.namespace}
Usando diferentes secretos por volumen
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: gcnv-sc-smb
provisioner: csi.trident.netapp.io
parameters:
backendType: "google-cloud-netapp-volumes"
trident.netapp.io/nasType: "smb"
csi.storage.k8s.io/node-stage-secret-name: ${pvc.name}
csi.storage.k8s.io/node-stage-secret-namespace: ${pvc.namespace}
|
|
nasType: smb`filtros para grupos que admiten volúmenes SMB. `nasType: nfs o `nasType: null`filtros para grupos NFS.
|
Ejemplo de definición de PVC
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: gcnv-nfs-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 100Gi
storageClassName: gcnv-nfs-sc
Para verificar si el PVC está enlazado, ejecuta el siguiente comando:
kubectl get pvc gcnv-nfs-pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE gcnv-nfs-pvc Bound pvc-b00f2414-e229-40e6-9b16-ee03eb79a213 100Gi RWX gcnv-nfs-sc 1m