Administra los conflictos con varios recursos de Config Connector
En esta página, se describe cómo Config Connector maneja los conflictos. Los conflictos pueden ocurrir cuando varios recursos administran el mismo recurso.
Config Connector administra o adquiere recursos cuando mapea la combinación del nombre del recurso de Kubernetes, la anotación del contenedor y, si corresponde, la región o la ubicación. En el caso más simple, organiza los recursos con los proyectos de Google Cloud.
Google Cloud admite niveles adicionales de jerarquía más allá de los proyectos: carpetas, proyectos y organizaciones. Puedes asignar recursos a las carpetas, proyectos y organizaciones con una anotación. Cuando creas un recurso sin una anotación mediante Config Connector, el recurso se crea en el proyecto que comparte el espacio de nombres del recurso.
Es posible, pero no recomendado, crear dos recursos de Config Connector en diferentes espacios de nombres que administran el mismo recurso de Google Cloud. Config Connector solo administra el recurso correspondiente de Google Cloud si puede obtener una asignación de tiempo sobre el recurso de Google Cloud y la prevención de conflictos está habilitada.
Las asignaciones tienen un límite de espacio de nombres. Para obtener una asignación de tiempo de espacio de nombres limitada, Config Connector agrega dos etiquetas al recurso:
cnrm-lease-holder-id
: El controlador de configuración genera un ID único para cada espacio de nombres que administra un recurso con la prevención de conflictos habilitada. Este ID único es el que se usa para configurarcnrm-lease-holder-id
. Para ver la asignación del espacio de nombres al valorcnrm-lease-holder-id
, puedes consultar el ConfigMapnamespace-id
en el espacio de nombrescnrm-system
.cnrm-lease-expiration
: Un tiempo de vencimiento en el tiempo de inicio de Unix.
Config Connector puede actualizar estos valores si se cumple alguna de las siguientes condiciones:
- El valor de
cnrm-lease-holder-id
coincide con el ID globalmente único del espacio de nombres. - El valor de
cnrm-lease-holder-id
está vacío o no existe. - El valor de
cnrm-lease-expiration
está en el pasado.
Cuando una instancia de Config Connector obtiene una asignación de tiempo de un recurso, el tiempo de vencimiento se establece en 40 minutos en el futuro. La misma instancia de Config Connector conserva la administración mientras el recurso esté en el espacio de nombres. Config Connector extiende el tiempo de vencimiento en 40 minutos cuando quedan menos de 20 minutos.
Si Config Connector no puede obtener una asignación de tiempo en un recurso dado, la salida de kubectl describe
en el recurso mostrará un estado de ManagementConflict
.
Modifica la prevención de conflictos
Puedes controlar la prevención de conflictos si agregas la anotación cnrm.cloud.google.com/management-conflict-prevention-policy
al recurso con uno de los siguientes valores:
resource
: los conflictos de gestión se evitan a nivel de recurso cuando se guardan las etiquetas de asignación de tiempo apropiadas en el recurso como se describe en la sección anterior.none
: no se permiten conflictos de administración.
El valor predeterminado es none
.
En el siguiente ejemplo, un manifiesto para ComputeNetwork predeterminado usa una política de administración de none
, lo que significa que no se evitan los conflictos:
apiVersion: compute.cnrm.cloud.google.com/v1beta1
kind: ComputeNetwork
metadata:
annotations:
cnrm.cloud.google.com/management-conflict-prevention-policy: "none"
cnrm.cloud.google.com/project-id: "PROJECT-ID"
cnrm.cloud.google.com/deletion-policy: "abandon"
name: default
spec:
description: Default network for the project
Limitaciones
La prevención de conflictos tiene las siguientes limitaciones:
La prevención de conflictos no funciona para los recursos que no apoyan con etiquetas de recursos. Incluso si cambias el valor de
none
aresource
, no funciona.Si eres Administra recursos con el campo resourceID puedes crear varios recursos con el mismo nombre de recurso de Google Cloud, crearse en el mismo espacio de nombres. Estos recursos crean conflictos que Config Connector no puede administrar.