Crear referencias de recursos


Un recurso de Google Cloud creado con Config Connector puede hacer referencia a otros recursos. Config Connector define estas relaciones a través de referencias de recursos. En este tema, se explica cómo crear recursos con referencias.

Tipos de referencias

En Config Connector, las referencias pueden ser dependencias o vínculos.

Dependencias
Una referencia de dependencia menciona a un recurso existente de Google Cloud necesario para el recurso Config Connector. Por ejemplo, una regla de firewall no puede existir sin una red.
Vínculos
Una referencia de vínculo conecta recursos independientes. Por ejemplo, un proyecto se puede asociar con una cuenta de facturación.

Especifica referencias de recursos

Debes especificar las referencias de recursos en el spec del recurso. El nombre del campo es el nombre corto del recurso seguido de Ref. Por ejemplo:

  • La referencia a un PubSubTopic llamado topic es topicRef.
  • La referencia a un StorageBucket llamado bucket es bucketRef.

La referencia es un objeto con un solo campo (name). El recurso en resourceRef se reemplaza por el nombre de la referencia.

En el siguiente archivo YAML, se describe un PubSubSubscription de Pub/Sub que hace referencia a un PubSubTopic llamado myTopic.

apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
kind: PubSubSubscription
metadata:
  name: pubsubsubscription-referencing-topic
spec:
  topicRef:
    name: myTopic

Ejemplo de Pub/Sub

Crea un tema de Pub/Sub.

En este ejemplo, se crea un PubSubSubscription que depende de un PubSubTopic.

  1. Copia lo siguiente en un archivo llamado pubsub-topic.yaml:

    apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
    kind: PubSubTopic
    metadata:
    name: TOPIC_NAME
    

    Reemplaza TOPIC_NAME por el nombre de PubSubTopic que quieras.

    Por ejemplo, para crear un tema llamado myTopic, puedes usar el siguiente archivo YAML:

    apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
    kind: PubSubTopic
    metadata:
      name: myTopic
    
  2. Crea el PubSubTopic con kubectl apply.

    kubectl --namespace CC_NAMESPACE apply -f pubsub-topic.yaml

    Reemplaza CC_NAMESPACE con el espacio de nombres que administra Config Connector.

Crea una suscripción a Pub/Sub

  1. Copia lo siguiente en un archivo llamado “pubsub-subscription.yaml”:

    apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
    kind: PubSubSubscription
    metadata:
      name: pubsubsubscription-referencing-topic
    spec:
      topicRef:
        name: TOPIC_NAME
    

    Reemplaza TOPIC_NAME por el nombre de PubSubTopic que usaste en el paso 1. Por ejemplo, el YAML que hace referencia al tema myTopic que creaste antes es el siguiente:

    apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
    kind: PubSubSubscription
    metadata:
      name: pubsubsubscription-referencing-topic
    spec:
      topicRef:
        name: myTopic
    
  2. Crea el PubSubSubscription con kubectl apply.

    kubectl --namespace CC_NAMESPACE apply -f pubsub-subscription.yaml 

    Reemplaza CC_NAMESPACE con el espacio de nombres que administra Config Connector.

Referencias externas

El conector de configuración puede hacer referencia a recursos que no administra. Estos se conocen como Referencias externas. Por ejemplo, el ComputeURLMap a continuación hace referencia a un BackendService llamado test-backendservice.

apiVersion: compute.cnrm.cloud.google.com/v1beta1
kind: ComputeURLMap
metadata:
  name: test-urlmap
spec:
  location: global
  defaultService:
    backendServiceRef:
      external: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/test-backendservice

El formato de los valores que acepta external depende del recurso. Consulta la documentación para recursos específicos en la referencia de recursos. Para averiguar qué valores acepta external, lee las descripciones de los campos external del recurso.

IAMPolicy, IAMPartialPolicy y IAMPolicyMember

IAMPolicy, IAMPartialPolicy y IAMPolicyMember también admiten referencias externas. Por ejemplo, el siguiente IAMPolicyMember hace referencia a un Project con el ID del proyecto test-project.

apiVersion: iam.cnrm.cloud.google.com/v1beta1
kind: IAMPolicyMember
metadata:
  name: test-iampolicymember
spec:
  member: serviceAccount:test-serviceaccount@test-project.iam.gserviceaccount.com
  role: roles/storage.admin
  resourceRef:
    kind: Project
    external: projects/test-project

Para saber qué formato acepta el campo external, consulta la documentación de referencia. Las páginas IAMPolicy, IAMPartialPolicy y IAMPolicyMember enumeran el formato aceptado para todos los recursos compatibles. Los formatos se enumeran en la columna “Formatos de referencia externa” de la tabla Recursos admitidos. También puedes ir a la página de referencia de un recurso individual (por ejemplo, PubSubTopic) y ver el valor que aparece en la fila "Formato de referencia externa de IAM" de la tabla de resumen del recurso.

Referencias de espacios de nombres cruzados

Config Connector permite que los recursos hagan referencia a recursos en otros espacios de nombres. Sin embargo, si Config Connector está instalado en modo de espacio de nombres, debes otorgar permisos adicionales a Config Connector para permitir referencias de espacios de nombres cruzados.

Por ejemplo, si deseas crear recursos en NAMESPACE_A que hagan referencia a recursos en NAMESPACE_B, necesitas crear el siguiente RoleBinding:

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  namespace: NAMESPACE_B
  name: allow-references-from-NAMESPACE_A
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cnrm-viewer
subjects:
- kind: ServiceAccount
  name: cnrm-controller-manager-NAMESPACE_A
  namespace: cnrm-system

¿Qué sigue?

  • Revisa la Referencia de recursos para conocer los recursos que admite Config Connector.

  • Ve cómo puedes aplicar una referencia de recursos a un Secreto en el clúster de Config Connector.