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
llamadotopic
estopicRef
. - La referencia a un
StorageBucket
llamadobucket
esbucketRef
.
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 una 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_NAME
Reemplaza
TOPIC_NAME
por el nombre dePubSubTopic
que desees.Por ejemplo, para crear un tema llamado
myTopic
, puedes usar el siguiente YAML archivo:apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubTopic metadata: name: myTopic
Crea el
PubSubTopic
conkubectl 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
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 nombrePubSubTopic
que usaste en el paso 1. Por ejemplo, el YAML que hace referencia al temamyTopic
que creaste anteriormente es el siguiente:apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubSubscription metadata: name: pubsubsubscription-referencing-topic spec: topicRef: name: myTopic
Crea el
PubSubSubscription
conkubectl 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 recursos externos
Referencias. Por ejemplo, el IAMPolicyMember
que aparece 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 sección “Formatos de referencia externos” de la tabla Recursos compatibles.
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 "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 el 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.