Ressourcenreferenzen erstellen


Eine Google Cloud-Ressource, die mit Config Connector erstellt wurde, kann auf andere Ressourcen verweisen. Config Connector definiert solche Beziehungen über Ressourcenreferenzen. In diesem Thema wird erläutert, wie Sie Ressourcen mit Referenzen erstellen.

Referenztypen

In Config Connector können Referenzen Abhängigkeiten oder Verknüpfungen sein.

Abhängigkeiten
Eine Abhängigkeitsreferenz bezieht sich auf eine vorhandene Google Cloud-Ressource, die für die Config Connector-Ressource erforderlich ist. Beispielsweise benötigt eine Firewallregel ein Netzwerk.
Verknüpfungen
Ein Verknüpfungsverweis verbindet unabhängige Ressourcen miteinander. Ein Projekt kann beispielsweise mit einem Rechnungskonto verknüpft sein.

Ressourcenreferenzen angeben

Ressourcenreferenzen geben Sie in der spec der Ressource an. Der Feldname ist der Kurzname der Ressource, gefolgt von Ref. Beispiel:

  • Die Referenz auf ein PubSubTopic mit dem Namen topic lautet topicRef.
  • Die Referenz auf einen StorageBucket namens bucket lautet bucketRef.

Die Referenz ist ein Objekt mit einem einzelnen Feld (name). Die Ressource in resourceRef wird durch den Namen der Referenz ersetzt.

Die folgende YAML-Datei beschreibt eine Pub/Sub-PubSubSubscription, die auf ein PubSubTopic namens myTopic verweist.

apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
kind: PubSubSubscription
metadata:
  name: pubsubsubscription-referencing-topic
spec:
  topicRef:
    name: myTopic

Pub/Sub-Beispiel

Pub/Sub-Thema erstellen

In diesem Beispiel erstellen Sie ein PubSubSubscription, das von PubSubTopic abhängt.

  1. Kopieren Sie das Folgende in eine Datei mit dem Namen pubsub-topic.yaml:

    apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
    kind: PubSubTopic
    metadata:
    name: TOPIC_NAME
    

    Ersetzen Sie TOPIC_NAME durch den gewünschten PubSubTopic-Namen

    Sie können beispielsweise folgende YAML-Datei verwenden, um ein Thema mit dem Namen myTopic zu erstellen:

    apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
    kind: PubSubTopic
    metadata:
      name: myTopic
    
  2. Erstellen Sie PubSubTopic mit kubectl apply:

    kubectl --namespace CC_NAMESPACE apply -f pubsub-topic.yaml

    Ersetzen Sie CC_NAMESPACE durch den Namespace, von dem aus Config Connector Ressourcen verwaltet.

Pub/Sub-Abo erstellen

  1. Kopieren Sie Folgendes in eine Datei mit dem Namen „pubsub-subscription.yaml”:

    apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
    kind: PubSubSubscription
    metadata:
      name: pubsubsubscription-referencing-topic
    spec:
      topicRef:
        name: TOPIC_NAME
    

    Ersetzen Sie TOPIC_NAME durch den Namen von PubSubTopic, den Sie in Schritt 1 verwendet haben. Das YAML-Manifest, das auf das zuvor erstellte Thema myTopic verweist, lautet beispielsweise:

    apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
    kind: PubSubSubscription
    metadata:
      name: pubsubsubscription-referencing-topic
    spec:
      topicRef:
        name: myTopic
    
  2. Erstellen Sie PubSubSubscription mit kubectl apply:

    kubectl --namespace CC_NAMESPACE apply -f pubsub-subscription.yaml 

    Ersetzen Sie CC_NAMESPACE durch den Namespace, von dem aus Config Connector Ressourcen verwaltet.

Externe Referenzen

Config Connector kann auch auf Ressourcen verweisen, die es nicht verwaltet. Diese werden als externe Referenzen bezeichnet. Im folgenden Beispiel verweist ComputeURLMap auf einen BackendService namens 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

Das Format der von external akzeptierten Werte hängt von der Ressource ab. Informationen zu einzelnen Ressourcen finden Sie in der Dokumentation der Config Connector-Ressourcen. Die Beschreibungen der external-Felder der Ressource enthalten auch die Werte, die external akzeptiert.

IAMPolicy, IAMPartialPolicy und IAMPolicyMember

IAMPolicy, IAMPartialPolicy und IAMPolicyMember unterstützen auch externe Referenzen. Der folgende IAMPolicyMember verweist beispielsweise auf ein Project mit der Projekt-ID 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

Informationen zum Format des external-Feldes finden Sie in der Referenzdokumentation. Die IAMPolicy IAMPartialPolicy und IAMPolicyMember enthalten das akzeptierte Format für alle unterstützten Ressourcen. Die Formate sind in der Spalte „Externe Referenzformate“ der Tabelle Unterstützte Ressourcen aufgelistet. Sie können auch die Referenzseite einer einzelnen Ressource aufrufen (z. B. PubSubTopic) und schauen Sie sich den Wert unter „IAM External Reference Format“ (Externes Referenzformat für IAM) an. Zeile der Tabelle mit der Zusammenfassung der Ressource.

Namespace-übergreifende Verweise

Config Connector ermöglicht es Ressourcen, auf Ressourcen in anderen Namespaces zu verweisen. Ist Config Connector jedoch im namespace-mode installiert, müssen Sie Config Connector zusätzliche Berechtigungen erteilen, um Namespace-übergreifende Verweise zu ermöglichen.

Wenn Sie beispielsweise Ressourcen in NAMESPACE_A erstellen möchten, die auf Ressourcen in NAMESPACE_B verweisen, müssen Sie Folgendes erstellen: 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

Nächste Schritte

  • Lesen Sie die Ressourcenreferenz , um mehr über die von Config Connector unterstützten Ressourcen zu erfahren.

  • Erfahren Sie, wie Sie einen Ressourcenverweis auf ein Secret in Ihrem Config Connector-Cluster verwenden können.