Prácticas recomendadas para Config Connector


En esta página, se explican las prácticas recomendadas que debes tener en cuenta cuando usas Config Connector.

Administrar los límites de cuota de las APIs

Si encuentras errores que indican que superaste el límite de cuota de la API, es posible 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 para el mismo extremo de API debido a la estrategia de conciliación que utiliza Config Connector.

Una forma de resolver este problema es solicitar un aumento de la cuota. Además de un aumento de cuota, si confirmaste que el error de cuota lo generan las solicitudes GET a los recursos de Google Cloud que administran tus recursos de Config Connector, puedes considerar una de las siguientes opciones:

Aumenta el intervalo de conciliación

Puedes aumentar el tiempo entre la conciliación de Config Connector para un recurso y evitar alcanzar las cuotas de API. Se recomienda establecer el intervalo de conciliación en 1 hora.

Para aumentar el intervalo de conciliación, sigue los pasos que se indican en Cómo configurar el intervalo de conciliación.

Divide tus recursos en varios proyectos

Este enfoque distribuye tus recursos de Config Connector entre diferentes proyectos. Este enfoque funciona bien cuando se agregan recursos nuevos, pero puede ser riesgoso dividir los recursos existentes, ya que debes borrarlos y volver a crearlos en diferentes proyectos. Borrar recursos puede causar la pérdida de datos con algunos tipos de recursos, como los SpannerInstance o BigtableTable. Debes crear una copia de seguridad de tus datos antes de borrarlos.

Para dividir los recursos existentes de Config Connector en diferentes proyectos, completa los siguientes pasos:

  1. Decide qué recursos de Config Connector planeas mover a proyectos diferentes.
  2. Borra los recursos de Config Connector. Asegúrate de que la anotación cnrm.cloud.google.com/deletion-policy no esté configurada como abandon.
  3. Actualiza 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 planeas trasladar a los proyectos nuevos.
  4. Otorga a la cuenta de servicio de IAM que usa Config Connector los permisos adecuados en los proyectos nuevos.
  5. Aplica la configuración actualizada de YAML para crear los recursos de Config Connector.

Cambiar al modo de espacio de nombres

Puedes vincular diferentes cuentas de servicio de IAM que sean propiedad de diferentes proyectos de Google Cloud a espacios de nombres distintos en los que Config Connector esté instalado en el modo con espacio de nombres, y dividir tus recursos en diferentes espacios de nombres. Para lograrlo, completa los siguientes pasos:

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

  2. Otorga a las cuentas de servicio de IAM nuevas los permisos adecuados para el proyecto que contiene los recursos.

  3. Decide qué recursos de Config Connector planeas mover a diferentes espacios de nombres.

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

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

  6. Abandona los recursos de Config Connector.

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

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

Administra grupos de nodos en clústeres de GKE

Es posible que experimentes errores cuando crees un clúster si aplicas un recurso ContainerCluster en Config Connector y, luego, intentes actualizar nodeConfig o algún otro campo relacionado con el nodo mediante la aplicación de una configuración ContainerCluster actualizada. Estos errores se deben a campos inmutables, como nodeConfig, nodeConfig.labels y nodeConfig.taint, que es una limitación técnica de la API de Google Cloud subyacente.

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

Debes establecer 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 muestra una configuración de ContainerCluster y ContainerNodePool con este conjunto de anotaciones:

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