Crear referencias de recursos
Un recurso 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 Google Cloudexistente 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
PubSubTopicllamadotopicestopicRef. - La referencia a un
StorageBucketllamadobucketesbucketRef.
La referencia es un objeto con un solo campo (name). El recurso en resourceRef se reemplaza 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
Crea un tema de Pub/Sub.
En este ejemplo, se crea un PubSubSubscription que depende de un PubSubTopic.
Copia lo siguiente en un archivo llamado
pubsub-topic.yaml:apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubTopic metadata: name: TOPIC_NAMEReemplaza
TOPIC_NAMEpor el nombre dePubSubTopicque desees.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: myTopicCrea el
PubSubTopicconkubectl apply.kubectl --namespace CC_NAMESPACE apply -f pubsub-topic.yaml
Reemplaza
CC_NAMESPACEcon el espacio de nombres que administra Config Connector.
Crea una suscripción a Pub/Sub
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_NAMEReemplaza
TOPIC_NAMEpor el nombre dePubSubTopicque usaste en el paso 1. Por ejemplo, el YAML que hace referencia al temamyTopicque creaste antes es:apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubSubscription metadata: name: pubsubsubscription-referencing-topic spec: topicRef: name: myTopicCrea el
PubSubSubscriptionconkubectl apply.kubectl --namespace CC_NAMESPACE apply -f pubsub-subscription.yaml
Reemplaza
CC_NAMESPACEcon 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 IAMPolicyMember a continuación 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 averiguar qué formato acepta el campo external, lee 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 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 consultar el valor que aparece en la fila "IAM External Reference Format" de la tabla de resumen del recurso.
Referencias entre espacios de nombres
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 otorgarle permisos adicionales para permitir referencias entre espacios de nombres.
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.