Installazione di Hierarchy Controller

Controller gerarchia consente di organizzare gli spazi dei nomi Kubernetes in gerarchie, applicare criteri (ad esempio RBAC e quote gerarchiche delle risorse), e osserva i carichi di lavoro dagli spazi dei nomi correlati.

Questa pagina mostra come installare, configurare e disinstallare Controller gerarchia.

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti attività:

  • Installa e inizializza Google Cloud CLI, che fornisce il comando Comandi gcloud e kubectl utilizzati in queste istruzioni. Se utilizzi Cloud Shell, Google Cloud CLI entra sono preinstallate.

  • Avere un cluster che esegue una versione di Kubernetes 1.16.x o successiva.

Il controller gerarchia è progettato per lavorare a stretto contatto con Config Sync che consente di gestire gli spazi dei nomi gerarchici e i criteri tramite un repository Git. Per farlo, ti consigliamo di selezionare un'opzione repository non strutturato quando installi Config Sync, che ti consente di organizzare il repository nel modo che preferisci, mantenendo i vantaggi dei criteri gerarchici. Di al contrario, un repository gerarchico può entrare in conflitto con Hierarchy Controller; non è consigliabile utilizzarli insieme.

In alternativa, puoi scegliere di installare Hierarchy Controller senza la configurazione di un repository Config Sync; sono definiti spazi dei nomi gerarchici interamente sul cluster tramite l'API Kubernetes. Se non hai intenzione di utilizzando Git, non è necessario concedere all'operatore l'accesso a Git configurarla in qualsiasi modo, ad eccezione di quanto descritto nella sezione seguente.

Abilita Hierarchy Controller

Segui questi passaggi per configurare l'installazione di Config Sync Controller gerarchia.

gcloud

Segui questi passaggi per configurare l'installazione di Config Sync Controller gerarchia, inclusi tutti i componenti facoltativi. In caso contrario vuoi attivare osservabilità gerarchica o quote gerarchiche delle risorse, commentate le righe indicate.

  1. (Facoltativo) Se utilizzi cluster privati, aggiungi regole firewall ai progetti di ogni cluster per consentire al cluster GKE piani di controllo per connettersi ai webhook di Hierarchy Controller sulla porta 9443:

     gcloud compute firewall-rules create allow-cluster-control-plane-tcp-9443 \
       --allow tcp:9443 \
       --network default \
       --source-ranges CONTROL_PLANE_CIDR \
       --target-tags NODE_TAG
    

    Sostituisci quanto segue:

    • CONTROL_PLANE_CIDR: l'intervallo IP per il tuo dal piano di controllo del cluster GKE. Ad esempio, 172.16.0.16/28.
    • NODE_TAG: un tag applicato a tutti i nodi in cluster GKE.
  2. Imposta i seguenti valori nell'oggetto spec.hierarchyController su true nel file di configurazione gcloud:

    # apply-spec.yaml
    
    applySpecVersion: 1
    spec:
      hierarchyController:
        # Set to true to enable hierarchical namespaces
        enabled: true
        # Comment to disable hierarchical quota:
        enableHierarchicalResourceQuota: true
        # Comment to disable hierarchical observability:
        enablePodTreeLabels: true
      # ...other fields...
    
  3. Applica il file apply-spec.yaml:

     gcloud beta container fleet config-management apply \
         --membership=CLUSTER_NAME \
         --config=CONFIG_YAML \
         --project=PROJECT_ID
    

    Sostituisci quanto segue:

    • CLUSTER_NAME: aggiungi il cluster registrato che vuoi a cui applicare questa configurazione.
    • CONFIG_YAML: aggiungi il percorso a apply-spec.yaml .
    • PROJECT_ID: aggiungi il tuo ID progetto.

    Viene eseguito il deployment di diversi carichi di lavoro, quindi Hierarchy Controller diventa utilizzabili nel cluster. L'operazione può richiedere fino a un minuto.

kubectl

Segui questi passaggi per configurare l'installazione di Config Sync Controller gerarchia, inclusi tutti i componenti facoltativi. In caso contrario vuoi attivare osservabilità gerarchica o quote gerarchiche delle risorse, commentate le righe indicate.

  1. (Facoltativo) Se utilizzi cluster privati, aggiungi regole firewall ai progetti di ogni cluster per consentire al cluster GKE piani di controllo per connettersi ai webhook di Hierarchy Controller sulla porta 9443:

     gcloud compute firewall-rules create allow-cluster-control-plane-tcp-9443 \
       --allow tcp:9443 \
       --network default \
       --source-ranges CONTROL_PLANE_CIDR \
       --target-tags NODE_TAG
    

    Sostituisci quanto segue:

    • CONTROL_PLANE_CIDR: l'intervallo IP per il tuo dal piano di controllo del cluster GKE. Ad esempio, 172.16.0.16/28.
    • NODE_TAG: un tag applicato a tutti i nodi in cluster GKE.
  2. Nel file di configurazione per l'operatore, nel campo Oggetto spec.hierarchyController, imposta il valore di enabled su true:

    # config-management.yaml
    
    apiVersion: configmanagement.gke.io/v1
    kind: ConfigManagement
    metadata:
      name: config-management
    spec:
      # Set to true to enable hierarchical namespaces
      hierarchyController:
        enabled: true
        # Comment to disable hierarchical quota:
        enableHierarchicalResourceQuota: true
        # Comment to disable hierarchical observability:
        enablePodTreeLabels: true
       # ...other fields...
    
  3. Applica la configurazione:

      kubectl apply -f config-management.yaml
    

    Viene eseguito il deployment di diversi carichi di lavoro, quindi Hierarchy Controller diventa utilizzabili nel cluster. L'operazione può richiedere fino a un minuto.

Installa il plug-in kubectl

È possibile interagire con Hierarchy Controller esclusivamente tramite Strumenti client di Kubernetes come kubectl. Tuttavia, l'open source kubectl-hns plug-in kubectl semplifica notevolmente diverse attività. Questo plug-in fa parte della HNC (Hierarchical Namespace Controller) che è un componente di Hierarchy Controller.

Questo plug-in è distribuito dalla community OSS ed è attualmente disponibile per Linux e macOS. Per installarlo sulla workstation, vedi Installa il plug-in kubectl nella documentazione di Config Sync.

Verifica l'installazione

Dopo aver installato Hierarchy Controller, puoi verificare che l'installazione è stata completata correttamente.

gcloud

Esegui questo comando:

gcloud beta container fleet config-management status \
    --project=PROJECT_ID

Sostituisci PROJECT_ID con l'ID del progetto.

Dovresti vedere un output simile all'esempio seguente:

Name          ...other columns... Hierarchy_Controller
CLUSTER_NAME  ...other fields ... INSTALLED

Un'installazione eseguita correttamente è associata allo stato INSTALLED in Hierarchy_Controller. Potrebbero essere necessari diversi minuti prima che lo stato vengono visualizzati dopo l'attivazione di Hierarchy Controller.

kubectl

Se Hierarchy Controller è installato correttamente, I pod saranno in esecuzione. I pod potrebbero riavviarsi più volte prima di essere disponibili.

Poiché i pod del controller gerarchia vengono eseguiti nello spazio dei nomi hnc-system, puoi visualizzarne lo stato eseguendo questo comando:

kubectl get pods -n hnc-system

Dovresti vedere un output simile all'esempio seguente:

NAME                                         READY   STATUS    RESTARTS   AGE
gke-hc-controller-manager-6f4dbb484d-t8tdm   2/2     Running   1          1m
hnc-controller-manager-7b75655894-tzqvx      2/2     Running   1          1m

Esegui l'upgrade del controller gerarchia

Il controller gerarchia viene aggiornato ogni volta che esegui l'upgrade Config Sync. Per saperne di più, vedi Esegui l'upgrade di Config Sync.

Disinstalla controller gerarchia

Segui questi passaggi per disinstallare Hierarchy Controller dai tuoi cluster.

gcloud

Per disinstallare Hierarchy Controller:

  1. Modifica la configurazione di Hierarchy Controller nel tuo apply-spec.yaml file e imposta hierarchyController.enabled su false.

  2. Applica le modifiche nel file apply-spec.yaml:

     gcloud beta container fleet config-management apply \
         --membership=CLUSTER_NAME \
         --config=CONFIG_YAML \
         --project=PROJECT_ID
    

    Sostituisci quanto segue:

    • CLUSTER_NAME: aggiungi il cluster registrato che vuoi a cui applicare questa configurazione.
    • CONFIG_YAML: aggiungi il percorso a apply-spec.yaml .
    • PROJECT_ID: aggiungi il tuo ID progetto.

Dopo la rimozione del controller gerarchia nel finalizzatore hierarchycontroller.configmanagement.gke.io, la disinstallazione è completato.

kubectl

Per disinstallare Hierarchy Controller, modifica Config Sync configurazione nel file config-management.yaml e imposta hierarchyController.enabled a false. Dopo la rimozione da Config Sync nel finalizzatore hierarchycontroller.configmanagement.gke.io, la disinstallazione è completato.

Se vuoi disinstallare completamente Config Sync, consulta Disinstalla Config Sync da un cluster.

Passaggi successivi