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 est topicRef.
  • La référence à un StorageBucket nommé bucket est bucketRef.

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.

  1. 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 nom PubSubTopic 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
    
  2. Créez PubSubTopic avec kubectl 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

  1. 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 nom PubSubTopic que vous avez utilisé à l'étape 1. Par exemple, le manifeste YAML faisant référence au sujet myTopic 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
    
  2. Créez PubSubSubscription avec kubectl 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.

Références externes pour IAMPolicy et IAMPolicyMember

IAMPolicy 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:
    apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1
    kind: Project
    external: projects/test-project

Pour savoir quels formats le champ external accepte, consultez la documentation de référence. Les pages IAMPolicy 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