Skip to main content
Se proporciona el idioma español mediante traducción automática para su comodidad. En caso de alguna inconsistencia, el inglés precede al español.

Prepare su entorno para la gestión de clústeres con Astra Control

Colaboradores

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.

Antes de empezar
  • 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.

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.

Pasos
  1. 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"
  2. 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.

  3. Asegúrese de que todos los pods (incluidos trident-acp) se están ejecutando:

    kubectl get pods -n trident
  4. 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

Antes de empezar

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

    Nota 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

Pasos
  1. Cree una cuenta de servicio:

    1. 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
    2. Aplicar la cuenta de servicio:

      kubectl apply -f astracontrol-service-account.yaml
  2. Cree uno de los siguientes roles de clúster con permisos suficientes para que Astra Control gestione un clúster:

    Rol de clúster limitado

    Este rol contiene los permisos mínimos necesarios para que Astra Control gestione un clúster:

    1. 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
    2. (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
    3. Aplique el rol de clúster:

      kubectl apply -f astra-admin-account.yaml
    Rol del clúster ampliado

    Este 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:

    Nota 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.
    1. 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:
        - '*'
    2. Aplique el rol de clúster:

      kubectl apply -f astra-admin-account.yaml
  3. Cree el enlace de rol de clúster para el rol del clúster a la cuenta de servicio:

    1. Cree un ClusterRoleBinding archivo llamado astracontrol-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
    2. Aplique el enlace de roles del clúster:

      kubectl apply -f astracontrol-clusterrolebinding.yaml
  4. Crear y aplicar el secreto de token:

    1. 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
    2. Aplique el secreto de token:

      kubectl apply -f secret-astracontrol-service-account.yaml
  5. 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
  6. 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 para astracontrol-service-account-dockercfg-48xhx sería 0 y el índice para secret-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.

  7. Genere la kubeconfig de la siguiente manera:

    1. Cree un create-kubeconfig.sh archivo.

    2. 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
    3. Origen de los comandos para aplicarlos al clúster de Kubernetes.

      source create-kubeconfig.sh
  8. (Opcional) cambie el nombre de la Marca de prestigio por un nombre significativo para el clúster.

    mv kubeconfig-sa YOUR_CLUSTER_NAME_kubeconfig