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
-
Un clúster que ejecuta OpenShift 4.6 o 4.7, y que cuenta con clases de almacenamiento de Trident respaldadas por ONTAP 9.5 o una versión posterior.
-
Uno o varios nodos de trabajo con al menos 1 GB de RAM disponibles para ejecutar servicios de telemetría.
Si tiene pensado añadir un segundo clúster OpenShift 4.6 o 4.7 como un recurso de computación gestionado, debe asegurarse de que la función Snapshot de volumen de Trident esté habilitada. Consulte la información oficial de Trident "instrucciones" Para habilitar y probar Snapshots de volumen con Trident.
-
-
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 (ACC). Ejecute los siguientes comandos en la línea de comandos de la ONTAP:
export policy rule modify -vserver svm0 -policyname default -ruleindex 1 -superuser sys
export-policy rule modify -policyname default -ruleindex 1 -anon 65534
(este es el valor predeterminado)
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 storageClass -A 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
-
-
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. Si el índice de token que anotó en el paso anterior no era 0, reemplace el valor paraTOKEN_INDEX
al principio de la secuencia de comandos siguiente con el valor correcto.create-kubeconfig.sh
# Update these to match your environment. Replace the value for TOKEN_INDEX from # the output in the previous step if it was not 0. 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' TOKEN_INDEX=0 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".