Prepare su entorno para la gestión de clústeres con Astra Control
Antes de añadir un clúster, debe asegurarse de que se cumplen las siguientes condiciones previas. También debe realizar comprobaciones de elegibilidad para asegurarse de que su clúster esté listo para añadirse a Astra Control Center y crear roles de clúster kubeconfig según sea necesario.
Astra Control le permite añadir clústeres gestionados mediante recurso personalizado (CR) o kubeconfig, en función de su entorno y sus preferencias.
-
Cumplir con los requisitos ambientales: Su entorno cumple "requisitos del entorno operativo" Para Astra Control Center.
-
* Configurar nodos de trabajador*: Asegúrese de que usted "configure los nodos de trabajo" en su clúster con los controladores de almacenamiento adecuados para que los pods puedan interactuar con el almacenamiento back-end.
-
Habilitar restricciones PSA: Si su clúster tiene activada la aplicación de admisión de seguridad de pod, que es estándar para los clústeres de Kubernetes 1,25 y posteriores, debe habilitar las restricciones PSA en estos espacios de nombres:
-
netapp-acc-operator
espacio de nombres:kubectl label --overwrite ns netapp-acc-operator pod-security.kubernetes.io/enforce=privileged
-
netapp monitoring
espacio de nombres:kubectl label --overwrite ns netapp-monitoring pod-security.kubernetes.io/enforce=privileged
-
-
Credenciales de ONTAP: Necesita credenciales de ONTAP y un superusuario e ID de usuario establecidos en el sistema ONTAP de respaldo para realizar copias de seguridad y restaurar aplicaciones con Astra Control Center.
Ejecute los siguientes comandos en la línea de comandos de la ONTAP:
export-policy rule modify -vserver <storage virtual machine name> -policyname <policy name> -ruleindex 1 -superuser sys export-policy rule modify -vserver <storage virtual machine name> -policyname <policy name> -ruleindex 1 -anon 65534
-
Requisitos de clúster gestionados por kubeconfig: Estos requisitos son específicos para los clusters de aplicaciones gestionados por kubeconfig.
-
Hacer kubeconfig accesible: Usted tiene acceso a la "kubeconfig de cluster por defecto" eso "ha configurado durante la instalación".
-
Consideraciones de la autoridad de certificación: Si está agregando el clúster usando un archivo kubeconfig que hace referencia a una autoridad de certificación (CA) privada, agregue la siguiente línea a la
cluster
sección del archivo kubeconfig. Esto permite a Astra Control añadir el clúster:insecure-skip-tls-verify: true
-
Sólo rancher: Al administrar clústeres de aplicaciones en un entorno Rancher, modifique el contexto predeterminado del clúster de aplicaciones en el archivo kubeconfig proporcionado por Rancher para utilizar un contexto de plano de control en lugar del contexto del servidor API Rancher. Esto reduce la carga en el servidor API de Rancher y mejora el rendimiento.
-
-
Requisitos del aprovisionador de Astra Control: Debes tener un aprovisionador de Astra Control configurado correctamente, incluidos sus componentes de Astra Trident, para gestionar clústeres.
-
Revise los requisitos del entorno de Astra Trident: Antes de instalar o actualizar el aprovisionador de Astra Control, revise el "compatibles con front-ends, back-ends y configuraciones de host".
-
Habilitar la funcionalidad de aprovisionamiento de Astra Control: Se recomienda instalar Astra Trident 23,10 o posterior y activar "Funcionalidad de almacenamiento avanzada de Astra Control Provisioning". En las siguientes versiones, Astra Control no será compatible con Astra Trident si el aprovisionador de Astra Control también no está habilitado.
-
Configurar un backend de almacenamiento: Al menos un backend de almacenamiento debe ser "Configuradas en Astra Trident" en el clúster.
-
Configure una clase de almacenamiento: Al menos una clase de almacenamiento debe ser "Configuradas en Astra Trident" en el clúster. Si se configura una clase de almacenamiento predeterminada, asegúrese de que es la clase de almacenamiento Only que tiene la anotación predeterminada.
-
Configure un controlador de instantáneas de volumen e instale una clase de instantáneas de volumen: "Instale una controladora Snapshot de volumen" Para poder crear instantáneas en Astra Control. "Cree" al menos uno
VolumeSnapshotClass
Mediante Astra Trident.
-
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.
-
Determine la versión de Astra Trident que ejecuta:
kubectl get tridentversion -n trident
Si existe Astra Trident, obtendrá un resultado similar al siguiente:
NAME VERSION trident 24.02.0
Si Astra Trident no existe, obtendrá un resultado similar al siguiente:
error: the server doesn't have a resource type "tridentversions"
-
Debe realizar una de las siguientes acciones:
-
Si utiliza Astra Trident 23,01 o una versión anterior, utilice estos "instrucciones" Para actualizar a una versión más reciente de Astra Trident antes de actualizar a Astra Control Provisioner. Puede hacerlo "realice una actualización directa" Para Astra Control Provisioner 24,02 si tu Astra Trident está en una ventana de cuatro versiones de la versión 24,02. Por ejemplo, puedes actualizar directamente de Astra Trident 23,04 a Astra Control Provisioner 24,02.
-
Si utiliza Astra Trident 23,10 o una versión posterior, compruebe que el aprovisionador de Astra Control haya sido "activado". El aprovisionador de Astra Control no funcionará con versiones de Astra Control Center anteriores a la 23,10. "Actualiza tu aprovisionador de Astra Control" De modo que tiene la misma versión que Astra Control Center que vas a actualizar para acceder a la funcionalidad más reciente.
-
-
Asegúrese de que todos los pods (incluidos
trident-acp
) se están ejecutando:kubectl get pods -n trident
-
Determine si las clases de almacenamiento están utilizando los controladores Astra Trident compatibles. El nombre del aprovisionador debe ser
csi.trident.netapp.io
. Consulte el siguiente ejemplo:kubectl get sc
Respuesta de ejemplo:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE ontap-gold (default) csi.trident.netapp.io Delete Immediate true 5d23h
Crear un rol de cluster kubeconfig
En el caso de los clústeres que se gestionan mediante kubeconfig, puede crear una función de administrador de permisos limitados o de permisos ampliados para Astra Control Center. Este no es un procedimiento obligatorio para la configuración de Astra Control Center, ya que ya configuró un kubeconfig como parte de la "proceso de instalación".
Este procedimiento le ayuda a crear un kubeconfig independiente si cualquiera de los siguientes escenarios se aplica a su entorno:
-
Deseas limitar los permisos de Astra Control a los clústeres que gestiona
-
Usas varios contextos y no puedes usar el comando predeterminado de Astra Control configurado durante la instalación o un rol limitado con un solo contexto no funcionará en tu entorno
Asegúrese de que tiene lo siguiente para el clúster que tiene intención de administrar antes de completar los pasos del procedimiento:
-
kubectl v1.23 o posterior instalado
-
Acceda con atención al clúster que pretende añadir y gestionar con Astra Control Center
Para este procedimiento, no necesita acceso kubectl al clúster que ejecuta Astra Control Center. -
Una imagen de referencia activa para el clúster que pretende gestionar con derechos de administrador del clúster para el contexto activo
-
Cree una cuenta de servicio:
-
Cree un archivo de cuenta de servicio llamado
astracontrol-service-account.yaml
.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
-
-
Cree uno de los siguientes roles de clúster con permisos suficientes para que Astra Control gestione un clúster:
Rol de clúster limitadoEste rol contiene los permisos mínimos necesarios para que Astra Control gestione un clúster:
-
Cree un
ClusterRole
archivo llamado, por ejemplo,astra-admin-account.yaml
.astra-admin-account.yaml
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: astra-admin-account rules: # Get, List, Create, and Update all resources # Necessary to backup and restore all resources in an app - apiGroups: - '*' resources: - '*' verbs: - get - list - create - patch # Delete Resources # Necessary for in-place restore and AppMirror failover - apiGroups: - "" - apps - autoscaling - batch - crd.projectcalico.org - extensions - networking.k8s.io - policy - rbac.authorization.k8s.io - snapshot.storage.k8s.io - trident.netapp.io resources: - configmaps - cronjobs - daemonsets - deployments - horizontalpodautoscalers - ingresses - jobs - namespaces - networkpolicies - persistentvolumeclaims - poddisruptionbudgets - pods - podtemplates - replicasets - replicationcontrollers - replicationcontrollers/scale - rolebindings - roles - secrets - serviceaccounts - services - statefulsets - tridentmirrorrelationships - tridentsnapshotinfos - volumesnapshots - volumesnapshotcontents verbs: - delete # Watch resources # Necessary to monitor progress - apiGroups: - "" resources: - pods - replicationcontrollers - replicationcontrollers/scale verbs: - watch # Update resources - apiGroups: - "" - build.openshift.io - image.openshift.io resources: - builds/details - replicationcontrollers - replicationcontrollers/scale - imagestreams/layers - imagestreamtags - imagetags verbs: - update
-
(Solo para clústeres de OpenShift) Añada lo siguiente al final del
astra-admin-account.yaml
archivo:# OpenShift security - apiGroups: - security.openshift.io resources: - securitycontextconstraints verbs: - use - update
-
Aplique el rol de clúster:
kubectl apply -f astra-admin-account.yaml
Rol del clúster ampliadoEste rol contiene permisos ampliados para que un clúster lo gestione Astra Control. Puedes usar este rol si utilizas varios contextos y no puedes utilizar el comando kubeconfig predeterminado de Astra Control configurado durante la instalación o un rol limitado con un único contexto no funcionará en tu entorno:
Lo siguiente ClusterRole
Los pasos son un ejemplo general de Kubernetes. Consulte la documentación de la distribución de Kubernetes para obtener instrucciones específicas de su entorno.-
Cree un
ClusterRole
archivo llamado, por ejemplo,astra-admin-account.yaml
.astra-admin-account.yaml
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: astra-admin-account rules: - apiGroups: - '*' resources: - '*' verbs: - '*' - nonResourceURLs: - '*' verbs: - '*'
-
Aplique el rol de clúster:
kubectl apply -f astra-admin-account.yaml
-
-
Cree el enlace de rol de clúster para el rol del clúster a la cuenta de servicio:
-
Cree un
ClusterRoleBinding
archivo llamadoastracontrol-clusterrolebinding.yaml
.astracontrol-clusterrolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: astracontrol-admin roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: astra-admin-account subjects: - kind: ServiceAccount name: astracontrol-service-account namespace: default
-
Aplique el enlace de roles del clúster:
kubectl apply -f astracontrol-clusterrolebinding.yaml
-
-
Crear y aplicar el secreto de token:
-
Cree un archivo secreto de token llamado
secret-astracontrol-service-account.yaml
.secret-astracontrol-service-account.yaml
apiVersion: v1 kind: Secret metadata: name: secret-astracontrol-service-account namespace: default annotations: kubernetes.io/service-account.name: "astracontrol-service-account" type: kubernetes.io/service-account-token
-
Aplique el secreto de token:
kubectl apply -f secret-astracontrol-service-account.yaml
-
-
Agregue el secreto de token a la cuenta de servicio agregando su nombre a la
secrets
array (la última línea del siguiente ejemplo):kubectl edit sa astracontrol-service-account
apiVersion: v1 imagePullSecrets: - name: astracontrol-service-account-dockercfg-48xhx kind: ServiceAccount metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"v1","kind":"ServiceAccount","metadata":{"annotations":{},"name":"astracontrol-service-account","namespace":"default"}} creationTimestamp: "2023-06-14T15:25:45Z" name: astracontrol-service-account namespace: default resourceVersion: "2767069" uid: 2ce068c4-810e-4a96-ada3-49cbf9ec3f89 secrets: - name: astracontrol-service-account-dockercfg-48xhx - name: secret-astracontrol-service-account
-
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-48xhx"}, { "name": "secret-astracontrol-service-account"} ]
Los índices de cada elemento de la
secrets
la matriz comienza con 0. En el ejemplo anterior, el índice paraastracontrol-service-account-dockercfg-48xhx
sería 0 y el índice parasecret-astracontrol-service-account
sería 1. En la salida, anote el número de índice del secreto de la cuenta de servicio. Necesitará este número de índice en el siguiente paso. -
Genere la kubeconfig de la siguiente manera:
-
Cree un
create-kubeconfig.sh
archivo. -
Sustituya
TOKEN_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 Marca de prestigio por un nombre significativo para el clúster.
mv kubeconfig-sa YOUR_CLUSTER_NAME_kubeconfig