Projektbezogene Ressourcen


Mit Config Connector können Sie Ihre Ressourcen auf Projekt-, Ordner- oder Organisationsebene verwalten. Damit Config Connector feststellen kann, wo Ihre Ressourcen erstellt werden sollen, sucht er zuerst nach einem bereichsdefinierenden Feld in der Ressourcenspezifikation, falls es nicht gefunden wird. Anschließend wird nach einer bereichsdefinierenden Annotation gesucht.

Feld „projectRef“ angeben

Die meisten projektbezogenen Config Connector-Ressourcen unterstützen in ihrer CRD-Spezifikation ein Feld namens projectRef. Verwenden Sie dieses Feld, um das Google Cloud-Projekt anzugeben, in dem Sie die Ressource erstellen möchten.

Wenn das Google Cloud-Projekt auch im selben Cluster mit der Projekt-CRD verwaltet wird, können Sie das Projekt als Kubernetes-Ressourcenreferenz angeben:

...
spec:
  projectRef:
    name: PROJECT_RESOURCE_NAME
    namespace: PROJECT_RESOURCE_NAMESPACE
...

Dieser Ansatz ermöglicht es, Config Connector zu verwenden und ein Google Cloud-Projekt mit seinen untergeordneten Ressourcen in einem einzigen Anwendungsvorgang zu erstellen. Das Namespace-Feld ist optional, wenn sich die Kubernetes-Ressource des Projekts im selben Kubernetes-Namespace wie Ihre projektbezogene Ressource befindet.

Wenn das Google Cloud-Projekt nicht als Kubernetes-Ressource im selben Cluster verwaltet wird, können Sie die Projekt-ID mit dem Feld external direkt angeben. Das genaue Format des Werts kann je nach Ressourcentyp variieren. Die beiden gängigsten Formate sind "PROJECT_ID" und "projects/PROJECT_ID". Unten sehen Sie ein Beispiel für „projects/PROJECT_ID“:

...
spec:
  projectRef:
    external: "projects/PROJECT_ID"
...

Ressourcenkonfiguration annotieren

Wenn die Config Connector-Ressource projektbezogen ist, aber das Feld projectRef nicht unterstützt, können Sie die Projekt-ID mit der Annotation project-id auf die Ressourcenkonfiguration festlegen:

...
metadata:
  annotations:
    cnrm.cloud.google.com/project-id: PROJECT_ID
...

Hier ist ein Beispiel dafür, wie die YAML-Datei einer FooBar-Ressource mit dieser Annotation aussieht:

apiVersion: foo.cnrm.cloud.google.com/v1beta1
kind: FooBar
metadata:
  annotations:
    cnrm.cloud.google.com/project-id: PROJECT_ID
  name: foobarname

Namespace-Konfiguration annotieren

Sie können eine Standardprojekt-ID für neu erstellte Ressourcen festlegen, indem Sie Ihren Kubernetes-Namespace annotieren. Wenn für eine der Ressourcen im Namespace diese Annotation explizit in ihrer eigenen Konfiguration festgelegt ist, überschreibt die Annotation auf Ressourcenebene die Annotation auf Namespace-Ebene.

Führen Sie den folgenden Befehl aus, um den Namespace mithilfe der Befehlszeile zu annotieren:

kubectl annotate namespace NAMESPACE_NAME cnrm.cloud.google.com/project-id=PROJECT_ID

Ersetzen Sie Folgendes:

  • NAMESPACE_NAME ist der Name Ihres Namespace
  • PROJECT_ID: Ihre Google Cloud-Projekt-ID

Alternativ können Sie ein YAML-Manifest anwenden, das die Annotation enthält. Kopieren Sie das unten aufgeführte YAML-Manifest in eine Datei:

apiVersion: v1
kind: Namespace
metadata:
  annotations:
    cnrm.cloud.google.com/project-id: PROJECT_ID
  name: NAMESPACE_NAME

Ersetzen Sie Folgendes:

  • PROJECT_ID: Ihre Google Cloud-Projekt-ID
  • NAMESPACE_NAME ist der Name Ihres Namespace

Nachdem Sie die Datei erstellt haben, wenden Sie sie auf Ihren Cluster an.

Namespace-Name als Projekt-ID verwenden

Wenn weder die Ressource noch der Namespace eine Projekt-ID angeben, verwendet Config Connector den Namen des Namespace als Projekt-ID. Dieses Standardverhalten wird von Config Connector unterstützt, wird jedoch nicht empfohlen, da der implizite Standardwert der Projekt-ID verwirrend sein kann.