Instalar el controlador de jerarquía

El controlador de jerarquía te permite organizar espacios de nombres de Kubernetes en jerarquías y aplicarles políticas (como RBAC y cuotas de recursos jerárquicos), y observar las cargas de trabajo desde espacios de nombres relacionados.

En esta página, se muestra cómo instalar, configurar y desinstalar el controlador de jerarquía.

Antes de comenzar

Antes de comenzar, asegúrate de haber realizado las siguientes tareas:

  • Instala e inicializa el SDK de Cloud, que proporciona los comandos de gcloud y de kubectl que se usan en estas instrucciones. Si usas Cloud Shell, el SDK de Cloud viene preinstalado.

  • Debes tener un clúster que ejecute una versión de Kubernetes 1.16.x o posterior

El controlador de jerarquía está diseñado para funcionar estrechamente con el sincronizador de configuración que te permite administrar tus espacios de nombres y políticas jerárquicas a través de un repositorio de Git. Si decides hacerlo, te recomendamos que selecciones un repositorio no estructurado cuando instales el sincronizador de configuración, lo que te permite organizar el repositorio de la manera que desees y conserve los beneficios de las políticas jerárquicas. Por el contrario, un repositorio jerárquico puede entrar en conflicto con el controlador de jerarquías, por lo que no es recomendable usar ambos.

Como alternativa, puedes instalar el controlador de jerarquía sin configurar un repositorio del sincronizador de configuración. Los espacios de nombres jerárquicos se pueden definir por completo en el clúster a través de la API de Kubernetes. Si no planeas usar Git, no necesitas otorgar acceso al operador a Git ni configurarlo de ninguna manera, excepto como se describe en la siguiente sección.

Habilita el controlador de jerarquía

Sigue estos pasos para configurar Anthos Config Management a fin de instalar el controlador de jerarquía.

gcloud

Sigue estos pasos para configurar Anthos Config Management a fin de instalar el controlador de jerarquía, incluidos todos los componentes opcionales. Si no deseas habilitar la observabilidad jerárquica o las cuotas de recursos jerárquicas, marca como comentario en las líneas indicadas.

  1. Si usas clústeres privados, agrega reglas de firewall a los proyectos de cada clúster a fin de permitir que los planos de control de clúster de GKE para conectarte a los webhooks del controlador de jerarquía en el puerto 9443 (opcional):

     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
    

    Reemplaza lo siguiente:

    • CONTROL_PLANE_CIDR: El rango de IP para tu plano de control de clúster de GKE, por ejemplo, 172.16.0.16/28
    • NODE_TAG: La etiqueta que se aplica a todos los nodos de tu clúster de GKE.
  2. Establece los siguientes valores en el objeto spec.hierarchyController en true en el archivo de configuración de 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. Aplica el archivo apply-spec.yaml:

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

    Reemplaza lo siguiente:

    • CLUSTER_NAME: Agrega el clúster registrado al que deseas aplicar esta configuración.
    • CONFIG_YAML: Agrega la ruta de acceso a tu archivo apply-spec.yaml.
    • PROJECT_ID: Agrega ID de tu proyecto.

    Se implementan varias cargas de trabajo y, luego, se puede usar el controlador de jerarquía en tu clúster. Esto puede tardar hasta un minuto en completarse.

kubectl

Sigue estos pasos para configurar Anthos Config Management a fin de instalar el controlador de jerarquía, incluidos todos los componentes opcionales. Si no deseas habilitar la observabilidad jerárquica o las cuotas de recursos jerárquicas, comenta en las líneas indicadas.

  1. Si usas clústeres privados, agrega reglas de firewall a los proyectos de cada clúster a fin de permitir que los planos de control de clúster de GKE para conectarte a los webhooks del controlador de jerarquía en el puerto 9443 (opcional):

     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
    

    Reemplaza lo siguiente:

    • CONTROL_PLANE_CIDR: El rango de IP para tu plano de control de clúster de GKE, por ejemplo, 172.16.0.16/28
    • NODE_TAG: La etiqueta que se aplica a todos los nodos de tu clúster de GKE.
  2. En el archivo de configuración del operador, en el objeto spec.hierarchyController, establece el valor de enabled en 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 hierarhical quota:
        enableHierarchicalResourceQuota: true
        # Comment to disable hierarchical observability:
        enablePodTreeLabels: true
       # ...other fields...
    
  3. Aplica la configuración:

      kubectl apply -f config-management.yaml
    

    Se implementan varias cargas de trabajo y, luego, se puede usar el controlador de jerarquía en tu clúster. Esto puede tardar hasta un minuto en completarse.

Instala el complemento de kubectl

Es posible interactuar con el controlador de jerarquía solo a través de herramientas cliente de Kubernetes como kubectl. Sin embargo, el complemento de kubectl de código abierto kubectl-hns simplifica en gran medida varias tareas. Este complemento forma parte del controlador de espacio de nombres jerárquico (HNC), que es un componente del controlador de jerarquía.

La comunidad de OSS distribuye este complemento, que está disponible para Linux y macOS en este momento. Para instalarlo en tu estación de trabajo, consulta Instala el complemento kubectl en la documentación de sincronizador de configuración.

Revisa la instalación

Después de instalar el controlador de jerarquía, puedes verificar que la instalación se haya completado de forma correcta.

gcloud

Ejecuta el siguiente comando:

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

Reemplaza PROJECT_ID por el ID del proyecto.

Deberías ver un resultado similar al siguiente:

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

Si la instalación se realiza correctamente, tendrá el estado INSTALLED en la columna Hierarchy_Controller. El estado puede tardar varios minutos en aparecer después de habilitar el controlador de jerarquía.

kubectl

Si el controlador de jerarquía está instalado de forma correcta, sus Pods se ejecutarán. Los Pods pueden reiniciarse varias veces antes de que estén disponibles.

Dado que los Pods del controlador de jerarquía se ejecutan en el espacio de nombres hnc-system, puedes ver su estado si ejecutas el siguiente comando:

kubectl get pods -n hnc-system

Deberías ver un resultado similar al siguiente:

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

Actualiza el controlador de jerarquías

El controlador de jerarquía se actualiza cada vez que actualizas Anthos Config Management. Para obtener más información, consulta Actualiza Anthos Config Management.

Desinstala el controlador de jerarquía

Sigue estos pasos para desinstalar el controlador de jerarquía de tus clústeres.

gcloud

Para desinstalar el controlador de jerarquías, haz lo siguiente:

  1. Edita la configuración del controlador de jerarquía en el archivo apply-spec.yaml y configura hierarchyController.enabled como false.

  2. Aplica los cambios en el archivo apply-spec.yaml como sigue:

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

    Reemplaza lo siguiente:

    • CLUSTER_NAME: Agrega el clúster registrado al que deseas aplicar esta configuración.
    • CONFIG_YAML: Agrega la ruta de acceso a tu archivo apply-spec.yaml.
    • PROJECT_ID: Agrega ID de tu proyecto.

Una vez que el controlador de jerarquía quita el finalizador hierarchycontroller.configmanagement.gke.io, se completa la desinstalación.

kubectl

Para desinstalar el controlador de jerarquía, edita la configuración de Anthos Config Management en el archivo config-management.yaml y configura hierarchyController.enabled como false. Después de que Anthos Config Management quita el finalizador hierarchycontroller.configmanagement.gke.io, se completa la desinstalación.

Si quieres desinstalar Anthos Config Management por completo, consulta Desinstala el Sincronizador de configuración de un clúster.

¿Qué sigue?