Crear referencias de recursos


Un recurso Google Cloud creado con Config Connector puede hacer referencia a otros recursos. Config Connector define estas relaciones mediante 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 enlaces.

Dependencias
Una referencia de dependencia hace referencia a un recurso Google Cloud necesario para el recurso de Config Connector. Por ejemplo, no puede haber una regla de firewall sin una red.
Enlaces
Una referencia de enlace vincula recursos independientes. Por ejemplo, un proyecto se puede asociar a una cuenta de facturación.

Especificar referencias de recursos

Las referencias de recursos se especifican en el spec del recurso. El nombre del campo es el nombre abreviado 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 de resourceRef se sustituye por el nombre de la referencia.

El siguiente archivo YAML 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

Crear un PubSubTopic

En este ejemplo, creas 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
    

    Sustituye TOPIC_NAME por el PubSubTopic nombre 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

    Sustituye CC_NAMESPACE por el espacio de nombres desde el que Config Connector gestiona los recursos.

Crear un PubSubSubscription

  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
    

    Sustituye TOPIC_NAME por el nombre de PubSubTopic que has usado en el paso 1. Por ejemplo, el archivo YAML que hace referencia al tema myTopic que has creado 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 

    Sustituye CC_NAMESPACE por el espacio de nombres desde el que Config Connector gestiona los recursos.

Referencias externas

Config Connector puede hacer referencia a recursos que no gestiona. Se conocen como referencias externas. Por ejemplo, el ComputeURLMap de abajo 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 aceptados por external depende del recurso. Consulta la documentación de recursos concretos en la referencia de recursos. Para saber qué valores acepta external, consulta las descripciones de los campos de external del recurso.

IAMPolicy, IAMPartialPolicy y IAMPolicyMember

IAMPolicy, IAMPartialPolicy y IAMPolicyMember también admiten ExternalReferences. Por ejemplo, el IAMPolicyMember de abajo hace referencia a un Project con el ID de 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. En las páginas IAMPolicy, IAMPartialPolicy y IAMPolicyMember se indica el formato aceptado para todos los recursos admitidos. Los formatos se indican 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 concreto (por ejemplo, PubSubTopic) y consultar el valor que aparece en la fila "Formato de referencia externa de gestión de identidades y accesos" de la tabla de resumen del recurso.

Referencias entre espacios de nombres

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

Por ejemplo, si quieres crear recursos en NAMESPACE_A que hagan referencia a recursos de NAMESPACE_B, debes crear lo 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

Siguientes pasos

  • Consulta la referencia de recursos para obtener información sobre los recursos que admite Config Connector.

  • Consulta cómo puedes usar una referencia de recurso a un secreto en tu clúster de Config Connector.