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 Cloudexistante 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
PubSubTopicnommétopicesttopicRef. - La référence à un
StorageBucketnommébucketestbucketRef.
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_NAMERemplacez
TOPIC_NAMEpar le nomPubSubTopicsouhaité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: myTopicCréez
PubSubTopicaveckubectl apply.kubectl --namespace CC_NAMESPACE apply -f pubsub-topic.yaml
Remplacez
CC_NAMESPACEpar 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_NAMERemplacez
TOPIC_NAMEpar le nomPubSubTopicque vous avez utilisé à l'étape 1. Par exemple, le manifeste YAML faisant référence au sujetmyTopicque vous avez créé précédemment est :apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubSubscription metadata: name: pubsubsubscription-referencing-topic spec: topicRef: name: myTopicCréez
PubSubSubscriptionaveckubectl apply.kubectl --namespace CC_NAMESPACE apply -f pubsub-subscription.yaml
Remplacez
CC_NAMESPACEpar 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 les références externes. 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 consulter la valeur répertoriée à la ligne "Format de référence externe IAM" du 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.