Créer des références de ressources
Une ressource Google Cloud créée avec Config Connector peut référencer d'autres ressources. Config Connector définit ces relations à l'aide des références de ressources. Cet article explique comment créer des ressources avec des références.
Types de références
Dans Config Connector, les références peuvent être des dépendances ou des liens.
- Dépendances
- Une référence de type dépendance correspond à une ressource Google Cloud existante nécessaire pour la ressource Config Connector. Par exemple, une règle de pare-feu ne peut pas exister sans un réseau.
- Links
- Une référence de type lien associe des ressources indépendantes. Par exemple, un projet peut être associé à un compte de facturation.
Spécifier des références de ressources
Vous devez spécifier des références de ressources dans le spec
de la ressource. Le nom du champ est le nom abrégé de la ressource suivi de Ref
. Exemple :
- La référence à un
PubSubTopic
nommétopic
esttopicRef
. - La référence à un
StorageBucket
nommébucket
estbucketRef
.
La référence est un objet avec un seul champ (name
). La ressource dans resourceRef
est remplacée par le nom de la référence.
Le manifest YAML suivant décrit un abonnement Pub/Sub PubSubSubscription
qui référence un sujet PubSubTopic
nommé myTopic
.
apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
kind: PubSubSubscription
metadata:
name: pubsubsubscription-referencing-topic
spec:
topicRef:
name: myTopic
Exemple Pub/Sub
Créer un sujet Pub/Sub
Dans cet exemple, vous créez un PubSubSubscription
qui dépend d'un PubSubTopic
.
Copiez le code ci-dessous dans un fichier nommé
pubsub-topic.yaml
:apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubTopic metadata: name: TOPIC_NAME
Remplacez
TOPIC_NAME
par le nomPubSubTopic
souhaitéPar exemple, pour créer un sujet nommé
myTopic
, vous pouvez utiliser le fichier YAML suivant :apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubTopic metadata: name: myTopic
Créez
PubSubTopic
aveckubectl apply
.kubectl --namespace CC_NAMESPACE apply -f pubsub-topic.yaml
Remplacez
CC_NAMESPACE
par l'espace de noms à partir duquel Config Connector gère les ressources.
Créer un abonnement Pub/Sub
Copiez ce qui suit dans un fichier nommé "pubsub-subscription.yaml" :
apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubSubscription metadata: name: pubsubsubscription-referencing-topic spec: topicRef: name: TOPIC_NAME
Remplacez
TOPIC_NAME
par le nomPubSubTopic
que vous avez utilisé à l'étape 1. Par exemple, le manifeste YAML faisant référence au sujetmyTopic
que vous avez créé précédemment est :apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubSubscription metadata: name: pubsubsubscription-referencing-topic spec: topicRef: name: myTopic
Créez
PubSubSubscription
aveckubectl apply
.kubectl --namespace CC_NAMESPACE apply -f pubsub-subscription.yaml
Remplacez
CC_NAMESPACE
par l'espace de noms à partir duquel Config Connector gère les ressources.
Références externes
Config Connector peut référencer des ressources qu'il ne gère pas. Celles-ci sont appelées références externes. Par exemple, le ComputeURLMap
ci-dessous fait référence à un BackendService
nommé 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
Le format des valeurs acceptées par external
dépend de la ressource. Consultez les informations sur des ressources spécifiques dans la documentation de référence de la ressource. Vous pouvez savoir quelles valeurs external
sont acceptées en lisant les descriptions des champs external
de la ressource.
IAMPolicy, IAMPartialPolicy et IAMPolicyMember
IAMPolicy
, IAMPartialPolicy
et IAMPolicyMember
sont également compatibles avec
Références. Par exemple, le IAMPolicyMember
ci-dessous fait référence à un Project
avec
l'ID de projet 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
Pour savoir quels formats le champ external
accepte, consultez la documentation de référence. Les pages IAMPolicy, IAMPartialPolicy et IAMPolicyMember fournissent la liste des formats acceptés pour toutes les ressources compatibles. Les formats sont répertoriés dans la colonne "Formats de référence externes" du tableau Ressources compatibles.
Vous pouvez également accéder à la page de référence d'une ressource individuelle (par exemple,
PubSubTopic)
et regardez la valeur indiquée dans le champ "IAM External Reference Format". ligne de la
dans le tableau récapitulatif de la ressource.
Références croisées entre espaces de noms
Config Connector permet de référencer des ressources dans d'autres espaces de noms. Toutefois, si Config Connector est installé en mode espace de noms, vous devez accorder des autorisations supplémentaires à Config Connector pour permettre les références croisées entre espaces de noms.
Par exemple, si vous souhaitez créer des ressources dans NAMESPACE_A
qui référencent des ressources dans NAMESPACE_B
, vous devez créer les RoleBinding
suivants :
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
Étape suivante
Consultez la documentation de référence de la ressource pour en savoir plus sur les ressources compatibles avec Config Connector.
Apprenez à utiliser une référence de ressource à un secret dans votre cluster Config Connector.