Crea backends con kubectl
Un backend define la relación entre Trident y un sistema de almacenamiento. Le dice a Trident cómo comunicarse con ese sistema de almacenamiento y cómo Trident debe aprovisionar volúmenes desde él. Después de instalar Trident, el siguiente paso es crear un backend. La TridentBackendConfig Custom Resource Definition (CRD) te permite crear y administrar backends de Trident directamente a través de la interfaz de Kubernetes. Puedes hacer esto usando kubectl o la herramienta CLI equivalente para tu distribución de Kubernetes.
TridentBackendConfig
TridentBackendConfig (tbc, tbconfig, tbackendconfig) es un CRD frontend con espacio de nombres que te permite administrar backends de Trident usando kubectl. Los administradores de Kubernetes y almacenamiento ahora pueden crear y administrar backends directamente a través de la CLI de Kubernetes sin necesitar una utilidad de línea de comandos dedicada (tridentctl).
Al crear un TridentBackendConfig objeto, sucede lo siguiente:
-
Trident crea automáticamente un backend según la configuración que proporciones. Esto se representa internamente como un
TridentBackend(tbe,tridentbackend) CR. -
El
TridentBackendConfigestá vinculado de forma única a unTridentBackendque fue creado por Trident.
Cada TridentBackendConfig mantiene una correspondencia uno a uno con un TridentBackend. El primero es la interfaz que se proporciona al usuario para diseñar y configurar backends; el segundo es la forma en que Trident representa el objeto backend real.
|
|
TridentBackend`Las CR se crean automáticamente por Trident. No deberías modificarlas. Si quieres actualizar los backends, hazlo modificando el objeto `TridentBackendConfig.
|
Mira el siguiente ejemplo para el formato del `TridentBackendConfig`CR:
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-ontap-san
spec:
version: 1
backendName: ontap-san-backend
storageDriverName: ontap-san
managementLIF: 10.0.0.1
dataLIF: 10.0.0.2
svm: trident_svm
credentials:
name: backend-tbc-ontap-san-secret
También puedes echar un vistazo a los ejemplos en el directorio "trident-installer" para ver configuraciones de muestra para la plataforma o servicio de almacenamiento que quieras.
El spec toma parámetros de configuración específicos del backend. En este ejemplo, el backend usa el ontap-san storage driver y usa los parámetros de configuración que se muestran aquí. Para la lista de opciones de configuración para tu storage driver deseado, consulta el "Información de configuración del backend para tu controlador de almacenamiento".
La `spec`sección también incluye `credentials`y `deletionPolicy`campos, que se introdujeron recientemente en el `TridentBackendConfig`CR:
-
credentials: Este parámetro es obligatorio y contiene las credenciales utilizadas para autenticarse con el sistema/servicio de almacenamiento. Esto se establece como un secreto de Kubernetes creado por el usuario. Las credenciales no se pueden pasar en texto sin formato y generarán un error. -
deletionPolicy: Este campo define qué debe suceder cuando se elimina elTridentBackendConfig. Puede tomar uno de dos valores posibles:-
delete: Esto elimina tanto `TridentBackendConfig`CR como el backend asociado. Este es el valor predeterminado. -
retain: Cuando se elimina unaTridentBackendConfigCR, la definición del backend seguirá presente y se puede administrar contridentctl. Configurar la política de eliminación enretainpermite a los usuarios volver a una versión anterior (pre-21.04) y conservar los backends creados. El valor de este campo se puede actualizar después de que se cree unaTridentBackendConfig.
-
|
|
El nombre de un backend se establece usando spec.backendName. Si no se especifica, el nombre del backend se establece como el nombre del objeto TridentBackendConfig (metadata.name). Se recomienda establecer explícitamente los nombres de los backends usando spec.backendName.
|
|
|
Los backends que fueron creados con tridentctl no tienen un objeto TridentBackendConfig asociado. Puedes elegir administrar esos backends con kubectl creando un CR TridentBackendConfig. Debes tener cuidado de especificar parámetros de configuración idénticos (como spec.backendName, spec.storagePrefix, spec.storageDriverName y así sucesivamente). Trident vinculará automáticamente el TridentBackendConfig recién creado con el backend preexistente.
|
Resumen de pasos
Para crear un nuevo backend usando kubectl, debes hacer lo siguiente:
-
Crea un "Kubernetes Secret". El secreto contiene las credenciales que Trident necesita para comunicarse con el clúster/servicio de almacenamiento.
-
Crea un objeto
TridentBackendConfig. Este contiene información específica sobre el clúster/servicio de almacenamiento y hace referencia al secreto creado en el paso anterior.
Después de crear un backend, puedes observar su estado usando kubectl get tbc <tbc-name> -n <trident-namespace> y recopilar detalles adicionales.
Paso 1: crea un secreto de Kubernetes
Crea un secreto que contenga las credenciales de acceso para el backend. Esto es único para cada servicio o plataforma de almacenamiento. Aquí tienes un ejemplo:
kubectl -n trident create -f backend-tbc-ontap-san-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: backend-tbc-ontap-san-secret
type: Opaque
stringData:
username: cluster-admin
password: password
Esta tabla resume los campos que deben incluirse en el secreto para cada plataforma de almacenamiento:
| Descripción de los campos secretos de la plataforma de almacenamiento | Secreto | Descripción de los campos |
|---|---|---|
Azure NetApp Files |
clientID |
El ID del cliente de un registro de app |
Element (NetApp HCI/SolidFire) |
Punto final |
MVIP para el clúster SolidFire con credenciales de inquilino |
ONTAP |
nombre de usuario |
Nombre de usuario para conectarse al clúster/SVM. Usado para la autenticación basada en credenciales |
ONTAP |
contraseña |
Contraseña para conectarse al clúster/SVM. Usada para la autenticación basada en credenciales |
ONTAP |
clientPrivateKey |
Valor codificado en Base64 de la clave privada del cliente. Usado para la autenticación basada en certificados |
ONTAP |
chapUsername |
Nombre de usuario entrante. Obligatorio si useCHAP=true. Para |
ONTAP |
chapInitiatorSecret |
Secreto del iniciador CHAP. Obligatorio si useCHAP=true. Para |
ONTAP |
chapTargetUsername |
Nombre de usuario de destino. Obligatorio si useCHAP=true. Para |
ONTAP |
chapTargetInitiatorSecret |
Secreto del iniciador de destino CHAP. Obligatorio si useCHAP=true. Para |
El secreto creado en este paso se va a referenciar en el campo spec.credentials del objeto TridentBackendConfig que se crea en el siguiente paso.
Paso 2: crea el `TridentBackendConfig`CR
Ya estás listo para crear tu TridentBackendConfig CR. En este ejemplo, se crea un backend que usa el ontap-san driver mediante el objeto TridentBackendConfig que se muestra a continuación:
kubectl -n trident create -f backend-tbc-ontap-san.yaml
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-ontap-san
spec:
version: 1
backendName: ontap-san-backend
storageDriverName: ontap-san
managementLIF: 10.0.0.1
dataLIF: 10.0.0.2
svm: trident_svm
credentials:
name: backend-tbc-ontap-san-secret
Paso 3: verifica el estado de la `TridentBackendConfig`CR
Ahora que creaste la `TridentBackendConfig`CR, puedes verificar el estado. Mira el siguiente ejemplo:
kubectl -n trident get tbc backend-tbc-ontap-san NAME BACKEND NAME BACKEND UUID PHASE STATUS backend-tbc-ontap-san ontap-san-backend 8d24fce7-6f60-4d4a-8ef6-bab2699e6ab8 Bound Success
Se creó exitosamente un backend y se vinculó al TridentBackendConfig CR.
La fase puede tomar uno de los siguientes valores:
-
Bound: ElTridentBackendConfigCR está asociado con un backend, y ese backend contieneconfigRefconfigurado con elTridentBackendConfiguid del CR. -
Unbound: Representado mediante"". ElTridentBackendConfigobjeto no está vinculado a un backend. Todos los nuevosTridentBackendConfigCR están en esta fase por defecto. Después de que la fase cambie, no puede volver a estar sin vincular. -
Deleting: ElTridentBackendConfigCRdeletionPolicyse configuró para eliminarse. Cuando elTridentBackendConfigCR se elimina, pasa al estado de eliminación.-
Si no existen reclamos de volumen persistentes (PVC) en el backend, eliminar el
TridentBackendConfighará que Trident elimine el backend así como elTridentBackendConfigCR. -
Si hay una o más PVC en el backend, este pasa a un estado de eliminación. El
TridentBackendConfigCR posteriormente también entra en fase de eliminación. El backend yTridentBackendConfigse eliminan solo después de que se eliminen todas las PVC.
-
-
Lost: El backend asociado con elTridentBackendConfigCR se eliminó accidental o deliberadamente y elTridentBackendConfigCR todavía tiene una referencia al backend eliminado. ElTridentBackendConfigCR todavía puede eliminarse independientemente deldeletionPolicyvalor. -
Unknown: Trident no puede determinar el estado ni la existencia del backend asociado con elTridentBackendConfigCR. Por ejemplo, si el servidor API no responde o si eltridentbackends.trident.netapp.ioCRD falta. Esto podría requerir intervención.
En esta etapa, ¡el backend se ha creado correctamente! Hay varias operaciones que también se pueden gestionar, como "actualizaciones y eliminaciones del backend".
(Opcional) Paso 4: obtén más detalles
Puedes ejecutar el siguiente comando para obtener más información sobre tu backend:
kubectl -n trident get tbc backend-tbc-ontap-san -o wide
NAME BACKEND NAME BACKEND UUID PHASE STATUS STORAGE DRIVER DELETION POLICY backend-tbc-ontap-san ontap-san-backend 8d24fce7-6f60-4d4a-8ef6-bab2699e6ab8 Bound Success ontap-san delete
Además, también puedes obtener un volcado YAML/JSON de TridentBackendConfig.
kubectl -n trident get tbc backend-tbc-ontap-san -o yaml
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
creationTimestamp: 2021-04-21T20:45:11Z
finalizers:
- trident.netapp.io
generation: 1
name: backend-tbc-ontap-san
namespace: trident
resourceVersion: "947143"
uid: 35b9d777-109f-43d5-8077-c74a4559d09c
spec:
backendName: ontap-san-backend
credentials:
name: backend-tbc-ontap-san-secret
managementLIF: 10.0.0.1
dataLIF: 10.0.0.2
storageDriverName: ontap-san
svm: trident_svm
version: 1
status:
backendInfo:
backendName: ontap-san-backend
backendUUID: 8d24fce7-6f60-4d4a-8ef6-bab2699e6ab8
deletionPolicy: delete
lastOperationStatus: Success
message: Backend 'ontap-san-backend' created
phase: Bound
backendInfo contiene el backendName y el backendUUID del backend que se creó en respuesta al TridentBackendConfig CR. El lastOperationStatus campo representa el estado de la última operación del TridentBackendConfig CR, que puede ser activada por el usuario (por ejemplo, si el usuario cambió algo en spec) o activada por Trident (por ejemplo, durante reinicios de Trident). Puede ser Success o Failed. phase representa el estado de la relación entre el TridentBackendConfig CR y el backend. En el ejemplo anterior, phase tiene el valor Bound, lo que significa que el TridentBackendConfig CR está asociado con el backend.
Puedes ejecutar el kubectl -n trident describe tbc <tbc-cr-name> comando para obtener detalles de los registros de eventos.
|
|
No puedes actualizar ni eliminar un backend que contenga un objeto asociado TridentBackendConfig usando tridentctl. Para entender los pasos para cambiar entre tridentctl y TridentBackendConfig, "ver aquí".
|