16. Bootstrap del cluster di archiviazione di file e blocchi

Tempo stimato per il completamento: 3 ore

Operable component owner: FILE

Profilo delle competenze: ingegnere del deployment

Questa pagina fornisce istruzioni per configurare l'archiviazione di file e blocchi per il cluster utilizzando NetApp ONTAP.

16.1. Configura gli switch del cluster ONTAP

  1. Controlla le password switch-xx-ad-stgesw01-admin e switch-xx-ad-stgesw02-admin (avranno lo stesso valore). Se le password non esistono, inizializza le credenziali e genera una nuova password casuale. Accedi allo switch tramite la console per impostare la password amministratore:

    # configure terminal
    # username ADMIN_USER password PASSWORD
    # exit
    # copy running-config startup-config
    
  2. Salva le credenziali in un secret e aggiungile a cell.yaml

    apiVersion: v1
    kind: Secret
    metadata:
      name: netapp-ontap-cluster-switch-credential
      namespace: gpc-system
    type: Opaque
    stringData:
      username: ADMIN_USER
      password: PASSWORD
    
  3. Esegui questo comando per ottenere i nomi degli switch di archiviazione:

    kubectl get storageswitch -n gpc-system
    

    Dovresti vedere un output simile al seguente:

    NAME             AGE   MANAGEMENTIP
    kb-ab-stgesw01   10d   192.0.2.0
    kb-ab-stgesw02   10d   192.0.2.1
    

    Per ogni switch, esegui i seguenti passaggi e utilizza il nome dello switch.

  4. Esegui questo comando per recuperare la configurazione dello switch dal CR switchstaticconfig:

    kubectl get switchstaticconfigs -n gpc-system $SWITCH_NAME-static-config -o yaml | /root/release/scripts/yq_linux_amd64 '.spec.config'
    

    Dovresti vedere un output simile al seguente:

    banner motd !
    ******************************************************************************
    * NetApp Reference Configuration File (RCF)
    *
    * Switch   : Nexus N9K-C9336C-FX2
    * Filename : Nexus-9336C-RCF-v1.8-Cluster.txt
    * Date     : 11-01-2021
    * Version  : v1.8
    *
    * Port Usage:
    * Ports  1- 3: Breakout mode (4x10G) Intra-Cluster/HA Ports, int e1/1/1-4, e1/2/1-4, e1/3/1-4
    * Ports  4- 6: Breakout mode (4x25G) Intra-Cluster/HA Ports, int e1/4/1-4, e1/5/1-4, e1/6/1-4
    * Ports  7-34: 40/100GbE Intra-Cluster/HA Ports, int e1/7-34
    * Ports 35-36: Intra-Cluster ISL Ports, int e1/35-36
    *
    * Dynamic breakout commands:
    * 10G: interface breakout module 1 port <range> map 10g-4x
    * 25G: interface breakout module 1 port <range> map 25g-4x
    *
    * Undo breakout commands and return interfaces to 40/100G configuration in config mode:
    * no interface breakout module 1 port <range> map 10g-4x
    * no interface breakout module 1 port <range> map 25g-4x
    * interface Ethernet <interfaces taken out of breakout mode>
    * inherit port-profile CLUSTER
    * priority-flow-control mode auto
    * service-policy type qos type input ROCE_QOS
    * exit
    *
    * This RCF supports Clustering, HA, RDMA, and DCTCP using a single port profile.
    *
    ******************************************************************************
    !
    conf t
    !
    interface breakout module 1 port 1-3 map 10g-4x
    interface breakout module 1 port 4-6 map 25g-4x
    !
    feature lacp
    feature lldp
    feature ssh
    feature sftp-server
    feature scp-server
    !
    vlan 17,18
    exit
    !
    cdp enable
    cdp advertise v1
    cdp timer 5
    system default switchport
    no system default switchport shutdown
    snmp-server community cshm1! group network-operator
    errdisable recovery interval 30
    port-channel load-balance src-dst ip-l4port-vlan
    no ip domain-lookup
    logging console 1
    !
    !
    class-map type qos match-any HA
    match dscp 40
    match cos 5
    !
    class-map type qos match-any RDMA
    match dscp 16
    match cos 2
    !
    class-map type qos match-any CT
    match dscp 0
    match cos 0
    !
    policy-map type qos ROCE_QOS
    class type qos HA
      set qos-group 5
    class type qos RDMA
      set qos-group 2
    class type qos class-default
      set qos-group 0
    !
    class-map type network-qos HA_NETQOS
    match qos-group 5
    !
    class-map type network-qos RDMA_NETQOS
    match qos-group 2
    !
    class-map type network-qos CT_NETQOS
    match qos-group 0
    !
    policy-map type queuing ROCE_QUEUING
    class type queuing c-out-8q-q7
      priority level 1
    class type queuing c-out-8q-q6
      bandwidth remaining percent 0
    class type queuing c-out-8q-q5
      bandwidth remaining percent 43
      random-detect threshold burst-optimized ecn
    class type queuing c-out-8q-q4
      bandwidth remaining percent 0
    class type queuing c-out-8q-q3
      bandwidth remaining percent 0
    class type queuing c-out-8q-q2
      random-detect threshold burst-optimized ecn
      bandwidth remaining percent 28
    class type queuing c-out-8q-q1
      bandwidth remaining percent 0
    class type queuing c-out-8q-q-default
      bandwidth remaining percent 28
      random-detect threshold burst-optimized ecn
    !
    policy-map type network-qos NETQOS
    class type network-qos HA_NETQOS
      pause pfc-cos 5
      mtu 9216
    class type network-qos RDMA_NETQOS
      pause pfc-cos 2
      mtu 9216
    class type network-qos CT_NETQOS
      mtu 9216
    !
    system qos
    service-policy type network-qos NETQOS
    service-policy type queuing output ROCE_QUEUING
    !
    copp profile strict
    !
    !
    !********** Port Profiles **********
    !
    port-profile type ethernet CLUSTER
    description 10/25/40/1000GbE Intra-Cluster/HA Nodes
    switchport mode trunk
    switchport trunk allowed vlan 1,17-18
    spanning-tree port type edge trunk
    spanning-tree bpduguard enable
    mtu 9216
    state enabled
    exit
    !
    !
    !********** Interfaces **********
    !
    interface e1/1/1-4, e1/2/1-4, e1/3/1-4, e1/4/1-4, e1/5/1-4, e1/6/1-4, e1/7-34
    inherit port-profile CLUSTER
    priority-flow-control mode auto
    service-policy input ROCE_QOS
    exit
    !
    !********** Intra-Cluster ISL ports **********
    !
    interface Ethernet1/35
    description Intra-Cluster Switch ISL Port 1/35 (port channel)
    priority-flow-control mode auto
    switchport mode trunk
    switchport trunk allowed vlan 1
    mtu 9216
    channel-group 1 mode active
    no shutdown
    !
    interface Ethernet1/36
    description Intra-Cluster Switch ISL Port 1/36 (port channel)
    priority-flow-control mode auto
    switchport mode trunk
    switchport trunk allowed vlan 1
    mtu 9216
    channel-group 1 mode active
    no shutdown
    !
    interface port-channel1
    service-policy input ROCE_QOS
    priority-flow-control mode auto
    switchport mode trunk
    switchport trunk allowed vlan 1
    mtu 9216
    no shutdown
    !
    !********** Set management ip **********
    !
    interface mgmt0
    ip address 172.28.2.10/29
    !
    vrf context management
    ip route 0.0.0.0/0 mgmt0 172.28.2.9
    !
    hostname kb-ad-stgesw01
    !
    end
    !
    !********** Save config *******
    copy run start
    !
    
  5. Esegui il deployment della configurazione dello switch ottenuta sullo switch utilizzando un cavo seriale o un server di console copiando e incollando i contenuti nello switch.

    Questa configurazione presuppone che:

    • Per A250: e0c/e0d sul dispositivo di archiviazione è collegato alla porta 4-6 tramite un cavo breakout.
    • Per A400: e3a/e3b sul dispositivo di archiviazione è collegato alla porta 7-34 utilizzando un cavo 40 GbE o 100 GbE (non breakout).
    • Per A800: e0a/e1a sul dispositivo di archiviazione è collegato alla porta 7-34 tramite un cavo 40 GbE o 100 GbE (non breakout).

    Tuttavia, potrebbe non essere così. In molte installazioni, il dispositivo di archiviazione è collegato alle porte 4-6, anche se il dispositivo è un A400 o A800. Se una A400 o A800 è collegata alle porte 4-6, modifica la configurazione dello switch per rimuovere le seguenti righe prima dell'applicazione:

      interface breakout module 1 port 1-3 map 10g-4x
      interface breakout module 1 port 4-6 map 25g-4x
    

    Quindi sostituisci questa riga:

      interface e1/1/1-4, e1/2/1-4, e1/3/1-4, e1/4/1-4, e1/5/1-4, e1/6/1-4, e1/7-34
    

    Con questo:

      interface e1/1-34
    

    Con queste modifiche, le porte 1-34 sono tutte configurate per cavi 40 GbE o 100 GbE (non breakout).

    Inoltre, rimuovi le seguenti righe dalla sezione del banner MOTD della configurazione per evitare possibili confusioni in futuro:

    
      * Ports  1- 3: Breakout mode (4x10G) Intra-Cluster/HA Ports, int e1/1/1-4, e1/2/1-4, e1/3/1-4
      * Ports  4- 6: Breakout mode (4x25G) Intra-Cluster/HA Ports, int e1/4/1-4, e1/5/1-4, e1/6/1-4
      * Ports  7-34: 40/100GbE Intra-Cluster/HA Ports, int e1/7-34
    

    Sostituisci queste righe con:

      * Ports  1-34: 40/100GbE Intra-Cluster/HA Ports, int e1/1-34
    
  6. Conferma il CR dell'oggetto ManagementSwitch.

    Esamina l'oggetto ManagementSwitch del cluster KIND di bootstrap e trova la CR corretta che rappresenta lo switch che contiene il dispositivo di archiviazione. Identifica le porte di commutazione fisiche sullo switch di gestione, che sono collegate fisicamente agli switch di archiviazione e verifica che queste connessioni esistano in ManagementSwitch CR in lacpGroups.

    Ad esempio, se la connessione di gestione allo switch di archiviazione è connessa alle porte 10 e 11 dello switch di gestione, verifica che esistano le seguenti informazioni:

    kind: ManagementSwitch
    spec:
      ...
      serverNetwork:
        ...
        lacpGroups:
        - - 10
        - - 11
    

    Utilizza il seguente comando per ottenere i lacpGroups:

    kubectl get ManagementSwitchinternal <switch-name> --namespace=gpc-system -o=jsonpath='{.spec.serverNetwork.lacpGroups}'
    

    Un output di esempio dovrebbe avere questo aspetto, consentendoti di confermare l'esistenza delle porte:

    [[1],[2],[3],[4],[5],[6]]
    

16.2. Inizializza le appliance ONTAP

Ripeti i seguenti passaggi per ogni controller sui sistemi AFF 250/400/800. Ogni sistema ha due controller o nodi.

  1. Utilizza la console seriale e il nome utente predefinito admin per connetterti al nodo del controller di archiviazione.

  2. Verifica la versione del sistema NetApp ONTAP.

    • Esegui il comando version.
    • La versione del sistema NetApp ONTAP deve essere 9.15.1. Se la versione è precedente alla 9.15.1, esegui l'upgrade dei nodi alla versione 9.15.1 prima del bootstrap del cluster di amministrazione dell'organizzazione. Per maggiori dettagli, consulta la Guida all'upgrade.
  3. Imposta gli indirizzi dell'interfaccia IP di interconnessione del cluster.

    Innanzitutto, individua il valore .spec.network.clusterInterconnectIP previsto per l'attuale StorageNode in cellcfg.

    # Note, this command relies on yq, which can be downloaded from https://github.com/mikefarah/yq.
    # If you do not want to install yq, you can manually inspect cellcfg/*-storage.yaml to determine the IPs.
    cat cellcfg/*-storage.yaml | /root/release/scripts/yq_linux_amd64 'select(.kind == "StorageNode") | (.metadata.name, .spec.network.clusterInterconnectIP)'
    

    L'esecuzione del comando precedente stamperà i nomi di tutti i StorageNode e i relativi valori .spec.network.clusterInterconnectIP. Ad esempio:

    aa-ad-stge01-01
    169.254.0.1
    ---
    aa-ad-stge01-02
    169.254.0.3
    ---
    aa-ad-stge02-01
    169.254.0.5
    ---
    aa-ad-stge02-02
    169.254.0.7
    ---
    aa-ad-stge03-01
    169.254.0.9
    ---
    aa-ad-stge03-02
    169.254.0.11
    

    Dall'esempio precedente, per il nodo aa-ad-stge03-01, gli IP 169.254.0.9 e 169.254.0.10 verranno utilizzati nei passaggi successivi. Questo perché 169.254.0.9 è l'IP definito in cellcfg per il nodo aa-ad-stge03-01 e 169.254.0.10 è l'IP successivo (numericamente) dopo 169.254.0.9.

    Successivamente, controlla i valori IP di interconnessione del cluster effettivi per il nodo corrente.

    network interface show
    

    Dovresti vedere due interfacce di rete che iniziano con 169.254, simili all'output seguente:

    ::> net int show
       (network interface show)
                 Logical    Status     Network            Current       Current Is
     Vserver     Interface  Admin/Oper Address/Mask       Node          Port    Home
     ----------- ---------- ---------- ------------------ ------------- ------- ----
     Cluster
                 clus1        up/up    169.254.19.166/16  localhost     e3a     true
                 clus2        up/up    169.254.19.167/16  localhost     e3b     true
    

    Se l'indirizzo dell'interfaccia clus1 corrisponde al valore definito in cellcfg e l'indirizzo dell'interfaccia clus2 è l'IP successivo all'indirizzo clus1 (numericamente), puoi saltare il resto di questo passaggio e procedere al successivo.

    Se vedi una sola interfaccia per il vserver del cluster, esegui net port show per verificare che la seconda porta sia attiva e funzionante. In questo caso, significa che hai perso una delle interfacce e hai due opzioni per risolvere il problema:

    • Opzione 1: aggiungi manualmente l'IP di interconnessione con il seguente comando:

        net interface create -vserver Cluster -lif clus2 -role cluster -address <interconnect-ip> -netmask 255.255.0.0 -home-node localhost -home-port <port>
      
      • interconnect-ip: scegli l'IP successivo (numericamente) dopo l'IP di interconnessione del cluster specificato in cellcfg per il nodo corrente. Ad esempio, se l'IP di interconnessione del cluster specificato in cellcfg per il nodo corrente è 169.254.0.3, scegli 169.254.0.4.

      • porta: a seconda del modello di ONTAP, la porta può essere diversa. Devi scegliere la porta che non ha un'interfaccia mostrata nell'output precedente.

        • Per A250, scegli tra e0c ed e0d.
        • Per A400: scegli tra e3a ed e3b.
        • Per A800, scegli tra e0a ed e1a.
    • Opzione 2: ripristino delle impostazioni di fabbrica del nodo ONTAP (che prevede una configurazione 9a e 9b nel menu di avvio di ONTAP). Esegui di nuovo il comando dopo il ripristino per verificare che esistano due IP. Tieni presente che ti consigliamo di provare prima l'opzione 1 e di passare all'opzione 2 solo se le cose non funzionano correttamente.

    Successivamente, aggiorna l'IP di interconnessione clus1 in modo che sia il valore clusterInterconnectIP specificato per il nodo corrente in cellcfg.

    net int modify -vserver Cluster -lif clus1 -address <interconnect-ip>
    
    • interconnect-ip: il valore clusterInterconnectIP specificato in cellcfg per il nodo corrente.

    Successivamente, aggiorna l'IP di interconnessione clus2 in modo che sia l'IP successivo (numericamente) dopo il valore clusterInterconnectIP specificato per il nodo corrente in cellcfg.

    net int modify -vserver Cluster -lif clus2 -address <next-interconnect-ip>
    
    • next-interconnect-ip: scegli l'IP successivo (numericamente) dopo l'IP di interconnessione del cluster specificato in cellcfg per il nodo corrente. Ad esempio, se l'IP di interconnessione del cluster specificato in cellcfg per il nodo corrente è 169.254.0.3, scegli 169.254.0.4.

    Infine, controlla che i valori IP di interconnessione del cluster effettivi per il nodo attuale corrispondano ai valori previsti in cellcfg.

    network interface show
    

    Dovresti vedere due interfacce di rete che iniziano con 169.254, simili all'output seguente. L'indirizzo dell'interfaccia clus1 deve corrispondere al valore definito in cellcfg. L'indirizzo dell'interfaccia clus2 deve essere l'indirizzo IP successivo all'indirizzo clus1 (numericamente).

    ::> net int show
       (network interface show)
                 Logical    Status     Network            Current       Current Is
     Vserver     Interface  Admin/Oper Address/Mask       Node          Port    Home
     ----------- ---------- ---------- ------------------ ------------- ------- ----
     Cluster
                 clus1        up/up    169.254.0.1/16  localhost     e3a     true
                 clus2        up/up    169.254.0.2/16  localhost     e3b     true
    

    (Facoltativo) Verifica la connettività tra cluster.

    ping -lif clus2 -vserver Cluster -destination <interconnect-ip-other-node>
    

    interconnect-ip-other-node: scegli un IP intercluster da altri nodi. Se la connettività è presente, il ping dovrebbe rispondere.

  4. Imposta la password dell'amministratore (deve essere la stessa su tutti i nodi e viene utilizzata quando viene inserita la password). Assicurati che la password soddisfi i requisiti di complessità, altrimenti visualizzerai un avviso relativo agli account utente non conformi.

     ::> security login password
    
     Enter your current password: Current password is empty, press Enter
     Enter a new password: Enter NEW_PASSWORD
     Enter it again: Enter NEW_PASSWORD
    
  5. Imposta l'IP di gestione e il gateway. Consulta le istruzioni riportate di seguito su come ottenere le informazioni richieste.

    ::> cluster setup
    
    Type yes to confirm and continue: yes
    Enter the node management interface port: e0M
    Enter the node management interface IP address: IP_ADDRESS
    for this node
    Enter the node management interface netmask: NETMASK for
    this IP
    Enter the node management interface default gateway:
    GATEWAY
    

    Esci dalla procedura guidata di configurazione del cluster dopo aver impostato il gateway predefinito inserendo ctrl+c.

    Esegui questo comando per ottenere le informazioni sulla subnet:

    # cat cellcfg/*-storage.yaml | /root/release/scripts/yq_linux_amd64 'select(.kind == "StorageCluster") | (.spec.network.clusterManagement.netmask)'
    

    Dovresti vedere un output simile al seguente:

    203.0.113.0
    

    Esegui questo comando per ottenere le informazioni sul gateway:

    kubectl get subnetclaim -n root kb-ad-mgmtsw01-stge-os-subnet -o jsonpath={.status.ipv4SubnetStatus.gateway} ; echo
    

    Dovresti vedere un output simile al seguente:

    203.0.113.1
    

    Di seguito è riportato un esempio di ottenimento delle informazioni sull'IP:

    # cat cellcfg/*-storage.yaml | /root/release/scripts/yq_linux_amd64 'select(.kind == "StorageNode") | (.metadata.name, .spec.network.managementIP)'
    kb-ad-stge01-01
    203.0.113.0
    ---
    kb-ad-stge01-02
    203.0.113.0
    ---
    kb-ad-stge02-01
    203.0.113.0
    ---
    kb-ad-stge02-02
    203.0.113.0
    
  6. Attiva SSH per l'utente amministratore:

      security login create -user-or-group-name admin -application ssh -authentication-method password -role admin
    
  7. Rinomina il nodo con il nome specificato in cell.yaml.

    system node rename -node localhost -newname NODE_NAME
    
  8. Verifica che i dischi siano configurati correttamente.

    1. Esegui storage aggregate show -fields uses-shared-disks e verifica che aggr0 restituisca true. Output di esempio:

      ::> storage aggregate show -fields uses-shared-disks
      aggregate uses-shared-disks
      --------- -----------------
      aggr0     true
      
    2. Esegui run -node * sysconfig -r e verifica che esistano nomi di dispositivi che terminano con P3. In questo modo, i dischi avranno 3 partizioni. Output di esempio:

      ::> run -node * sysconfig -r
      1 entry was acted on.
      
      Node: localhost
      Aggregate aggr0 (online, raid_dp) (block checksums)
        Plex /aggr0/plex0 (online, normal, active, pool0)
          RAID group /aggr0/plex0/rg0 (normal, block checksums)
      
            RAID Disk Device  HA  SHELF BAY CHAN Pool Type  RPM  Used (MB/blks)    Phys (MB/blks)
            --------- ------  ------------- ---- ---- ---- ----- --------------    --------------
            dparity   0n.18P3 0n    0   18         0 SSD-NVM   N/A 63849/16345536    63857/16347584
            parity    0n.19P3 0n    0   19         0 SSD-NVM   N/A 63849/16345536    63857/16347584
            data      0n.20P3 0n    0   20         0 SSD-NVM   N/A 63849/16345536    63857/16347584
            data      0n.21P3 0n    0   21         0 SSD-NVM   N/A 63849/16345536    63857/16347584
            data      0n.22P3 0n    0   22         0 SSD-NVM   N/A 63849/16345536    63857/16347584
      
    3. Esegui run -node local disk show -n per verificare che le partizioni del disco siano Not Owned e che ci siano 2 * <number of disks> partizioni. Questo esempio mostra 24 partizioni non di proprietà per 12 dischi.

      ::> run -node local disk show -n
        DISK       OWNER                    POOL   SERIAL NUMBER         HOME                    DR HOME
      ------------ -------------            -----  -------------         -------------           -------------
      0n.21P1      Not Owned                  NONE   S5Y0NA0T100941NP001
      0n.21P2      Not Owned                  NONE   S5Y0NA0T100941NP002
      0n.22P1      Not Owned                  NONE   S5Y0NA0T100944NP001
      0n.22P2      Not Owned                  NONE   S5Y0NA0T100944NP002
      0n.18P1      Not Owned                  NONE   S5Y0NA0T101588NP001
      0n.18P2      Not Owned                  NONE   S5Y0NA0T101588NP002
      0n.20P1      Not Owned                  NONE   S5Y0NA0T100947NP001
      0n.20P2      Not Owned                  NONE   S5Y0NA0T100947NP002
      0n.3P1       Not Owned                  NONE   S5Y0NA0T100942NP001
      0n.3P2       Not Owned                  NONE   S5Y0NA0T100942NP002
      0n.1P1       Not Owned                  NONE   S5Y0NA0T100943NP001
      0n.1P2       Not Owned                  NONE   S5Y0NA0T100943NP002
      0n.5P1       Not Owned                  NONE   S5Y0NA0T101314NP001
      0n.5P2       Not Owned                  NONE   S5Y0NA0T101314NP002
      0n.2P1       Not Owned                  NONE   S5Y0NA0T100946NP001
      0n.2P2       Not Owned                  NONE   S5Y0NA0T100946NP002
      0n.23P1      Not Owned                  NONE   S5Y0NA0T100939NP001
      0n.23P2      Not Owned                  NONE   S5Y0NA0T100939NP002
      0n.19P1      Not Owned                  NONE   S5Y0NA0T101608NP001
      0n.19P2      Not Owned                  NONE   S5Y0NA0T101608NP002
      0n.0P1       Not Owned                  NONE   S5Y0NA0T100873NP001
      0n.0P2       Not Owned                  NONE   S5Y0NA0T100873NP002
      0n.4P1       Not Owned                  NONE   S5Y0NA0T101609NP001
      0n.4P2       Not Owned                  NONE   S5Y0NA0T101609NP002
      
    4. Se uno di questi passaggi non va a buon fine, ripristina i dati di fabbrica del sistema.

16.3. Configurare il Network Time Protocol

Ottieni gli IP del server NTP per i relè NTP in esecuzione nel cluster di bootstrap:

  kubectl get ntpservers -n ntp-system -o jsonpath='{.items[*].status.managementIP}{"\n"}'

Per ciascuno dei server NTP, esegui il seguente comando sul primo nodo ONTAP:

  cluster time-service ntp server create -server NTP_SERVER_IP

Ad esempio, se i tuoi nodi ONTAP sono kb-ad-stge01-01, kb-ad-stge01-02, kb-ad-stge02-01 e kb-ad-stge02-02, esegui il comando sul nodo kb-ad-stge01-01.

16.4. Controlla la cartella cellcfg

Per recuperare i valori del nome utente e della password di archiviazione per l'archiviazione di file, utilizza il file del fornitore dell'hardware dedicato all'archiviazione, ad esempio WO15_SO7100911835-2_GDCH-4d-A250-A400_DD-010223.xlsx

16.4.1. Verifica la password amministratore

Trova il nome del secret ONTAP a cui viene fatto riferimento in /CELLCFG/file-storage.yaml dopo StorageCluster.spec.adminSecretName.

Trova il segreto corrispondente e assicurati che i valori siano compilati. In caso contrario, sostituisci il nome utente e la password dell'amministratore:

  apiVersion: v1
  kind: Secret
  metadata:
    name: SECRET_NAME
    namespace: gpc-system
  type: Opaque
  stringData:
    netapp_username: admin
    netapp_password: PASSWORD

16.4.2. Verifica delle licenze ONTAP

Le licenze software ONTAP devono essere state fornite dal fornitore dell'hardware.

Individua il campo StorageCluster.spec.licenses nella cartella /cellcfg/af-storage.yaml e assicurati che le licenze siano compilate. In caso contrario, compila i campi con le licenze:

  apiVersion: ontap.netapp.storage.private.gdc.goog/v1alpha1
  kind: StorageCluster
  metadata:
    creationTimestamp: null
    name: zl-stge-clus-01
    namespace: gpc-system
  spec:
  ...
    licenses:
      - LICENSE_1
      - LICENSE_2
      - LICENSE_3

Per riferimento, di seguito è riportato un esempio di come dovrebbero apparire le voci della licenza nella configurazione della cella:

  licenses:

  ABGITNWODUEVQELPECCAAAAAAAAA
  AHJJWYTTTXKZOFKVBTBAAAAAAAAA
  AHZTHBPQACAAAAKVBTBAAAAAAAAA
  ALTXOYXSVDDCMADPECCAAAAAAAAA
  ANWFPBPQACAAAAKVBTBAAAAAAAAA
  APLKENWODUEVQELPECCAAAAAAAAA
  ARIHVQFAHJMIWBDPECCAAAAAAAAA
  AXFTCRFAHJMIWBDPECCAAAAAAAAA

16.5. Convalida preflight

Esegui il comando di convalida:

gdcloud system check-config --config PATH_TO_CELL_CONFIG --artifacts-directory PATH_TO_ARTIFACTS \
    --scenario FileBlockStorage

Se nel log sono presenti errori, segui i messaggi per risolvere il problema ed esegui di nuovo la convalida.

16.5.1. Potenziali problemi

Questa sezione contiene i potenziali problemi che potresti riscontrare durante l'esecuzione della convalida preflight delle appliance di archiviazione a blocchi di file.

16.5.1.1. NumDisks per StorageAggregate

Ignora gli errori di convalida relativi al conteggio errato dei dischi, ma verifica manualmente il valore di NumDisks nella CR StorageAggregate. StorageAggregate è definito nel file xx-storage.yaml.

Il numero totale di dischi configurati per StorageAggregates per un'appliance di blocchi di file deve corrispondere al numero di dischi presentati nell'appliance meno il numero di dischi di riserva. La best practice prevede di riservare un disco di riserva ogni 12 dischi.

Per calcolare il valore di NumDisks, utilizza la seguente formula:

NumDisks = (Total_Disks/2) - ceil(Total_Disks/12)

NumDisks è uguale a 10 se applichi la formula all'esempio (24/2) - ceil(24/12) descritto in questa sezione.

16.6. Esegui l'installazione

Esegui il comando di installazione:

  gdcloud system storage install -v 3 --config PATH_TO_CELL_CONFIG

Questo comando esegue le seguenti operazioni:

  • Configura il cluster NetApp e aggiunge i nodi disponibili
  • Crea gli aggregati
  • Configura LACP e le VLAN sulle porte dati
  • Configura licenze
  • Configura il monitoraggio
  • Configura la gestione delle chiavi esterna

Al termine del job, esegui node show sulla console ONTAP per assicurarti che non siano presenti avvisi come questi:

kb-stge-clus-01::> node show
Node      Health Eligibility Uptime        Model       Owner    Location
--------- ------ ----------- ------------- ----------- -------- ---------------
kb-ad-stge01-01
          true   true         5 days 02:49 AFF-A250
kb-ad-stge01-02
          true   true         6 days 18:24 AFF-A250
kb-ad-stge02-01
          true   true         5 days 01:52 AFF-A800
kb-ad-stge02-02
          true   true         5 days 01:52 AFF-A800
kb-ad-stge03-01
          true   true         7 days 00:15 AFF-A400
kb-ad-stge03-02
          true   true         7 days 00:26 AFF-A400

Warning: Cluster operation (cluster join) for node "kb-ad-stge03-01" is not complete and the node is not fully functional.
         Run "cluster join" on that node to complete the operation.
6 entries were displayed.

In caso affermativo, segui le istruzioni e accedi a questi nodi ed esegui il comando cluster join corrispondente per assicurarti che scompaia dopo l'operazione.

16.7. Aggiorna le impostazioni di sicurezza

  1. Imposta il banner di accesso:

    security login banner modify -vserver <cluster name> -message "<banner>"
    
  2. Limita il timeout della sessione CLI a 10 minuti:

    system timeout modify 10
    
  3. Imponi la complessità della password e il numero massimo di tentativi di accesso per il ruolo amministratore:

    security login role config modify -vserver CLUSTER_NAME -role admin -passwd-minlength 15 -passwd-min-special-chars 1 -passwd-min-lowercase-chars 1 -passwd-min-uppercase-chars 1 -passwd-min-digits 1 -disallowed-reuse 25 -max-failed-login-attempts 3
    
  4. Limita il timeout della sessione della UI a 10 minuti:

    ::> set diag
    
    Warning: These diagnostic commands are for use by NetApp personnel only.
    Do you want to continue? {y|n}: y
    
    ::> cluster application-record create -name sysmgr.inactivitytimeout -value 10 -vserver <cluster name>
    
  5. Modifica le impostazioni di blocco utente:

    ::> security login role config modify -vserver * -max-failed-login-attempts 3 -lockout-duration 1 -role *
    ::> security ssh modify -vserver * -max-authentication-retry-count 3
    
  6. Disattiva le porte USB (è necessario riavviare per rendere effettive le modifiche):

    ::> set diag
    ::*> system node usb-ports modify -node * -is-disabled-next-boot true
    
  7. Rimuovi il certificato di bootstrap.

    1. Trova il certificato bootstrap-web-ca:

        ::> security certificate show-user-installed
      

      Se il certificato bootstrap-web-ca esiste, l'output ha il seguente aspetto:

      Vserver    Serial Number   Certificate Name                       Type
      ---------- --------------- -------------------------------------- ------------
      aa-aa-stge01
                45B86E1B5CF1CC144B874C80A39D2A99
                                bootstrap-web-ca                       server-ca
          Certificate Authority: bootstrap-web-ca
                Expiration Date: Mon Feb 19 22:55:03 2029
      
  8. Quando vuoi riavviare i nodi, riavviali uno alla volta con il seguente comando:

    ::> system node reboot -node <node-name> -inhibit-takeover true
    

16.8. Memorizzare gli utenti con accesso di emergenza

Durante la configurazione vengono creati automaticamente quattro account breakglass e memorizzati come secret Kubernetes.

  • storage-root-level1
  • storage-root-level1-backup
  • storage-root-level2
  • storage-root-level2-backup

Per storage-root-level2 e storage-root-level2-backup, memorizza e proteggi le tue credenziali su carta come prescritto:

  1. Ottieni il nome utente e la password dal secret con i seguenti comandi, sostituendo SECRET_NAME con il secret che vuoi utilizzare:

    kubectl get secret -n gpc-system SECRET_NAME -o jsonpath='{.data.username}' | base64 --decode
    kubectl get secret -n gpc-system SECRET_NAME -o jsonpath='{.data.password}' | base64 --decode
    
  2. Ottieni il nome del cluster ONTAP:

      ::> cluster identity show
    
  3. Prendi nota di eventuali utenti inattesi con privilegi amministrativi:

      ::> useradmin user list
    
    1. (Facoltativo) Eliminali con l'approvazione dell'operatore dell'infrastruttura. Esegui sempre su workload di produzione e clienti:
          ::> security login delete -user-or-group-name <username> -vserver <Cluster Name> -authentication-method password -application amqp
    
          ::> security login delete -user-or-group-name <username> -vserver <Cluster Name> -authentication-method password -application console
    
          ::> security login delete -user-or-group-name <username> -vserver <Cluster Name> -authentication-method password -application http
    
          ::> security login delete -user-or-group-name <username> -vserver <Cluster Name> -authentication-method password -application ontapi
    
          ::> security login delete -user-or-group-name <username> -vserver <Cluster Name> -authentication-method password -application service-processor
    
          ::> security login delete -user-or-group-name <username> -vserver <Cluster Name> -authentication-method password -application ssh
      ```
    
  4. Elimina l'utente amministratore NetApp creato nel passaggio precedente.

        ::> security login delete -user-or-group-name admin -vserver <Cluster Name> -authentication-method password -application amqp
    
        ::> security login delete -user-or-group-name admin -vserver <Cluster Name> -authentication-method password -application console
    
        ::> security login delete -user-or-group-name admin -vserver <Cluster Name> -authentication-method password -application http
    
        ::> security login delete -user-or-group-name admin -vserver <Cluster Name> -authentication-method password -application ontapi
    
        ::> security login delete -user-or-group-name admin -vserver <Cluster Name> -authentication-method password -application service-processor
    
        ::> security login delete -user-or-group-name admin -vserver <Cluster Name> -authentication-method password -application ssh
    
  5. L'operatore dell'infrastruttura principale (IO) annota il nome utente e la password per ogni appliance in modo leggibile su fogli di carta separati. Piegare i documenti in modo che i contenuti non siano visibili, etichettarli, ad esempio "Credenziali root per lo switch TOR 1", e consegnarli a un tecnico di livello 1 per la custodia sicura.

  6. Con l'ingegnere L1 che osserva, il responsabile dell'IO conserva i documenti in una cassaforte fisica.

  7. L'IO aggiunge un'annotazione ai secret per indicare che il secret è stato memorizzato nel safe.

    kubectl annotate secrets storage-root-level2 -n gpc-system disk.gdc.goog/persisted=''
    

    16.9. Aggiorna i server NTP

Esegui questi passaggi dopo l'installazione del cluster di amministrazione:

  1. Ottieni i nuovi IP del server NTP per i relè NTP in esecuzione nel cluster di amministrazione:

    kubectl get ntpservers -n gpc-system
    
  2. In ONTAP, elimina tutti i server NTP esistenti:

    cluster time-service ntp server show
    cluster time-service ntp server delete -server NTP_SERVER_IP
    
  3. Aggiungi i nuovi server NTP a ONTAP:

    cluster time-service ntp server create -server NTP_SERVER_IP