Requisitos previos para añadir un clúster
Debe asegurarse de que se cumplan las condiciones previas antes de añadir un clúster. También debe ejecutar las comprobaciones de elegibilidad para asegurarse de que su clúster esté listo para ser agregado a Astra Control Center.
Qué necesitará antes de añadir un clúster
Asegúrese de que su clúster cumpla los requisitos descritos en "Requisitos del clúster de aplicaciones".
Si tiene pensado añadir un segundo clúster OpenShift 4.6, 4.7 o 4.8 como un recurso informático gestionado, debe asegurarse de que la función de Snapshot de volumen de Astra Trident esté habilitada. Consulte la Astra Trident oficial "instrucciones" Para habilitar y probar Volume Snapshots con Astra Trident. |
-
Clases de almacenamiento de Astra Trident configuradas con un "back-end de almacenamiento admitido" (necesario para cualquier tipo de clúster)
-
El superusuario y el ID de usuario establecidos en el sistema ONTAP de respaldo para realizar copias de seguridad y restaurar aplicaciones con Astra Control Center. Ejecute el siguiente comando en la línea de comandos de la ONTAP:
export-policy rule modify -vserver <storage virtual machine name> -policyname <policy name> -ruleindex 1 -superuser sysm --anon 65534
-
Una Astra Trident
volumesnapshotclass
objeto definido por un administrador. Vea la Astra Trident "instrucciones" Para habilitar y probar Volume Snapshots con Astra Trident. -
Compruebe que solo tiene una única clase de almacenamiento predeterminada definida para el clúster de Kubernetes.
Ejecutar las comprobaciones de elegibilidad
Ejecute las siguientes comprobaciones de elegibilidad para asegurarse de que su clúster esté listo para ser agregado a Astra Control Center.
-
Compruebe la versión de Trident.
kubectl get tridentversions -n trident
Si Trident existe, se muestra una salida similar a la siguiente:
NAME VERSION trident 21.04.0
Si Trident no existe, se muestra un resultado similar al siguiente:
error: the server doesn't have a resource type "tridentversions"
Si Trident no está instalado o la versión instalada no es la más reciente, debe instalar la versión más reciente de Trident antes de continuar. Consulte "Documentación de Trident" si desea obtener instrucciones. -
Compruebe si las clases de almacenamiento están usando los controladores de Trident compatibles. El nombre del aprovisionador debe ser
csi.trident.netapp.io
. Consulte el siguiente ejemplo:kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE ontap-gold (default) csi.trident.netapp.io Delete Immediate true 5d23h thin kubernetes.io/vsphere-volume Delete Immediate false 6d
Cree una imagen de rol administrativo
Asegúrese de que dispone de lo siguiente en su máquina antes de realizar los pasos siguientes:
-
kubectl
v1.19 o posterior instalado -
Una imagen marcada activa con los derechos de administrador del clúster para el contexto activo
-
Cree una cuenta de servicio del siguiente modo:
-
Cree un archivo de cuenta de servicio llamado
astracontrol-service-account.yaml
.Ajuste el nombre y el espacio de nombres según sea necesario. Si se realizan cambios aquí, debe aplicar los mismos cambios en los pasos siguientes.
astracontrol-service-account.yaml
+
apiVersion: v1 kind: ServiceAccount metadata: name: astracontrol-service-account namespace: default
-
Aplicar la cuenta de servicio:
kubectl apply -f astracontrol-service-account.yaml
-
-
(Opcional) Si el clúster utiliza una directiva de seguridad de POD restrictiva que no permite la creación de POD privilegiadas o permite que los procesos dentro de los contenedores Pod se ejecuten como usuario raíz, cree una directiva de seguridad de POD personalizada para el clúster que permita a Astra Control crear y administrar POD. Para ver instrucciones, consulte "Cree una directiva de seguridad de POD personalizada".
-
Conceda permisos de administrador del clúster de la siguiente manera:
-
Cree un
ClusterRoleBinding
archivo llamadoastracontrol-clusterrolebinding.yaml
.Ajuste los nombres y espacios de nombres modificados al crear la cuenta de servicio según sea necesario.
astracontrol-clusterrolebinding.yaml
+
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: astracontrol-admin roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: astracontrol-service-account namespace: default
-
Aplique el enlace de roles del clúster:
kubectl apply -f astracontrol-clusterrolebinding.yaml
-
-
Enumere los secretos de la cuenta de servicio, reemplazando
<context>
con el contexto correcto para su instalación:kubectl get serviceaccount astracontrol-service-account --context <context> --namespace default -o json
El final de la salida debe ser similar a lo siguiente:
"secrets": [ { "name": "astracontrol-service-account-dockercfg-vhz87"}, { "name": "astracontrol-service-account-token-r59kr"} ]
Los índices de cada elemento de la
secrets
la matriz comienza con 0. En el ejemplo anterior, el índice paraastracontrol-service-account-dockercfg-vhz87
sería 0 y el índice paraastracontrol-service-account-token-r59kr
sería 1. En la salida, anote el índice del nombre de la cuenta de servicio que contiene la palabra "token". -
Genere la kubeconfig de la siguiente manera:
-
Cree un
create-kubeconfig.sh
archivo. SustituyaTOKEN_INDEX
al principio de la secuencia de comandos siguiente con el valor correcto.create-kubeconfig.sh
# Update these to match your environment. # Replace TOKEN_INDEX with the correct value # from the output in the previous step. If you # didn't change anything else above, don't change # anything else here. SERVICE_ACCOUNT_NAME=astracontrol-service-account NAMESPACE=default NEW_CONTEXT=astracontrol KUBECONFIG_FILE='kubeconfig-sa' CONTEXT=$(kubectl config current-context) SECRET_NAME=$(kubectl get serviceaccount ${SERVICE_ACCOUNT_NAME} \ --context ${CONTEXT} \ --namespace ${NAMESPACE} \ -o jsonpath='{.secrets[TOKEN_INDEX].name}') TOKEN_DATA=$(kubectl get secret ${SECRET_NAME} \ --context ${CONTEXT} \ --namespace ${NAMESPACE} \ -o jsonpath='{.data.token}') TOKEN=$(echo ${TOKEN_DATA} | base64 -d) # Create dedicated kubeconfig # Create a full copy kubectl config view --raw > ${KUBECONFIG_FILE}.full.tmp # Switch working context to correct context kubectl --kubeconfig ${KUBECONFIG_FILE}.full.tmp config use-context ${CONTEXT} # Minify kubectl --kubeconfig ${KUBECONFIG_FILE}.full.tmp \ config view --flatten --minify > ${KUBECONFIG_FILE}.tmp # Rename context kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \ rename-context ${CONTEXT} ${NEW_CONTEXT} # Create token user kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \ set-credentials ${CONTEXT}-${NAMESPACE}-token-user \ --token ${TOKEN} # Set context to use token user kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \ set-context ${NEW_CONTEXT} --user ${CONTEXT}-${NAMESPACE}-token-user # Set context to correct namespace kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \ set-context ${NEW_CONTEXT} --namespace ${NAMESPACE} # Flatten/minify kubeconfig kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \ view --flatten --minify > ${KUBECONFIG_FILE} # Remove tmp rm ${KUBECONFIG_FILE}.full.tmp rm ${KUBECONFIG_FILE}.tmp
-
Origen de los comandos para aplicarlos al clúster de Kubernetes.
source create-kubeconfig.sh
-
-
(opcional) cambie el nombre de la kubeconfig por un nombre significativo para el clúster. Proteja las credenciales del clúster.
chmod 700 create-kubeconfig.sh mv kubeconfig-sa.txt YOUR_CLUSTER_NAME_kubeconfig
El futuro
Ahora que ha comprobado que se cumplen los requisitos previos, está listo "añadir un clúster".