Prácticas recomendadas de Config Connector


En esta página se explican las prácticas recomendadas que debes tener en cuenta al usar Config Connector.

Gestionar los límites de cuota de la API

Si has recibido errores que indican que has superado el límite de cuota de la API, puede que hayas creado demasiados recursos de Config Connector del mismo tipo en el mismo proyecto de cuota. Cuando creas muchos recursos, estos pueden generar demasiadas solicitudes a la API al mismo endpoint de la API debido a la estrategia de conciliación que usa Config Connector.

Una forma de solucionar este problema es solicitar un aumento de cuota. Además de aumentar la cuota, si has confirmado que el error de cuota se debe a solicitudes GET en los recursos gestionados por tus recursos de Config Connector, puedes plantearte una de las siguientes opciones: Google Cloud

Aumentar el intervalo de conciliación

Puedes aumentar el tiempo que transcurre entre las reconciliaciones de un recurso de Config Connector para evitar alcanzar las cuotas de las APIs. Se recomienda definir el intervalo de conciliación en 1 hora.

Para aumentar el intervalo de conciliación, sigue los pasos que se indican en el artículo Configurar el intervalo de conciliación.

Dividir los recursos en varios proyectos

De esta forma, los recursos de Config Connector se distribuyen en diferentes proyectos. Este método funciona bien cuando se añaden recursos nuevos, pero puede ser arriesgado dividir los recursos existentes, ya que es necesario eliminarlos y volver a crearlos en proyectos diferentes. Eliminar recursos puede provocar la pérdida de datos en algunos tipos de recursos, como los recursos SpannerInstance o BigtableTable. Te recomendamos que hagas una copia de seguridad de tus datos antes de eliminarlos.

Para dividir los recursos de Config Connector en diferentes proyectos, sigue estos pasos:

  1. Decide qué recursos de Config Connector quieres mover a otros proyectos.
  2. Elimina los recursos de Config Connector. Asegúrate de que la anotación cnrm.cloud.google.com/deletion-policy no esté configurada como abandon.
  3. Actualice el campo spec.projectRef o la anotación cnrm.cloud.google.com/project-id en la configuración YAML de los recursos de Config Connector que quiera mover a los nuevos proyectos.
  4. Concede a la cuenta de servicio de gestión de identidades y accesos que usa Config Connector los permisos adecuados en los proyectos nuevos.
  5. Aplica la configuración YAML actualizada para crear los recursos de Config Connector.

Cambiar al modo con espacio de nombres

Puedes vincular diferentes cuentas de servicio de gestión de identidades y accesos propiedad de distintos proyectos deGoogle Cloud a diferentes espacios de nombres en los que Config Connector esté instalado en modo de espacio de nombres y dividir tus recursos en diferentes espacios de nombres. Para ello, sigue estos pasos:

  1. Configura Config Connector para que se ejecute en el modo de espacio de nombres. Crea cuentas de servicio de IAM en diferentes proyectos y vincúlalas a diferentes espacios de nombres siguiendo las instrucciones para configurar Config Connector en cada proyecto.

  2. Concede a las nuevas cuentas de servicio de gestión de identidades y accesos los permisos adecuados para el proyecto que contiene los recursos.

  3. Decide qué recursos de Config Connector quieres mover a otros espacios de nombres.

  4. Actualiza la configuración YAML de los recursos de Config Connector y define la anotación cnrm.cloud.google.com/deletion-policyabandon.

  5. Aplica la configuración YAML actualizada para actualizar la política de eliminación de recursos de Config Connector.

  6. Abandonar los recursos de Config Connector.

  7. Actualiza el campo metadata.namespace en la configuración YAML de los recursos de Config Connector que quieras mover a los distintos espacios de nombres.

  8. Aplica la configuración YAML actualizada para adquirir los recursos abandonados.

Gestionar grupos de nodos en clústeres de GKE

Es posible que se produzcan errores al crear un clúster aplicando un recurso ContainerCluster en Config Connector y, a continuación, intentes actualizar el campo nodeConfig u otros campos relacionados con los nodos aplicando una configuración ContainerCluster actualizada. Estos errores se deben a campos inmutables, como nodeConfig, nodeConfig.labels y nodeConfig.taint, que son una limitación técnica de la APIGoogle Cloud subyacente.

Si necesita actualizar estos campos, puede usar el recurso ContainerNodePool para gestionar los grupos de nodos en los que estos campos no son inmutables. Para gestionar grupos de nodos con el recurso ContainerNodePool, debes especificar una anotación cnrm.cloud.google.com/remove-default-node-pool: "true". Esta anotación elimina el grupo de nodos predeterminado que se crea durante la creación del clúster. A continuación, para crear grupos de nodos independientes, especifica los campos nodeConfig en ContainerNodePool en lugar de en ContainerCluster. Consulta el ejemplo de recurso ContainerNodePool como referencia.

Debes definir la anotación cnrm.cloud.google.com/state-into-spec: absent para los recursos ContainerCluster y ContainerNodePool. Esta anotación evita posibles errores de conciliación durante la interacción entre el controlador de Config Connector y las APIs subyacentes.

En los siguientes ejemplos se muestran las configuraciones de ContainerCluster y ContainerNodePool con estas anotaciones definidas:

apiVersion: container.cnrm.cloud.google.com/v1beta1
kind: ContainerCluster
metadata:
  name: containercluster-sample
  annotations:
    cnrm.cloud.google.com/remove-default-node-pool: "true"
    cnrm.cloud.google.com/state-into-spec: absent
spec:
  description: A sample cluster.
  location: us-west1
  initialNodeCount: 1
apiVersion: container.cnrm.cloud.google.com/v1beta1
kind: ContainerNodePool
metadata:
  labels:
    label-one: "value-one"
  name: containernodepool-sample
  annotations:
    cnrm.cloud.google.com/state-into-spec: absent
spec:
  location: us-west1
  autoscaling:
    minNodeCount: 1
    maxNodeCount: 3
  nodeConfig:
    machineType: n1-standard-1
    preemptible: false
    oauthScopes:
      - "https://www.googleapis.com/auth/logging.write"
      - "https://www.googleapis.com/auth/monitoring"
  clusterRef:
    name: containercluster-sample