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
llamadotopic
estopicRef
. - La referencia a un
StorageBucket
llamadobucket
esbucketRef
.
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
.
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 elPubSubTopic
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
Crea el
PubSubTopic
conkubectl 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
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 dePubSubTopic
que has usado en el paso 1. Por ejemplo, el archivo YAML que hace referencia al temamyTopic
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
Crea el
PubSubSubscription
conkubectl 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.