Projektbezogene Ressourcen


Mit Config Connector können Sie Ihre Ressourcen auf Projekt-, Ordner- oder Organisationsebene verwalten. Um zu bestimmen, wo Ihre Ressourcen erstellt werden sollen, sucht Config Connector zuerst in Ihrer Ressourcenspezifikation nach einem Feld, das den Geltungsbereich definiert. Wenn es nicht gefunden wird, wird nach einer Annotation, die den Geltungsbereich definiert, gesucht.

Feld projectRef angeben

Die meisten Config Connector-Ressourcen auf Projektebene unterstützen in ihrer CRD-Spezifikation ein Feld namens projectRef. Mit diesem Feld können Sie das Google Cloud Projekt angeben, in dem Sie die Ressource erstellen möchten.

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

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

Mit diesem Ansatz können Sie Config Connector verwenden und ein Google Cloud-Projekt mit seinen untergeordneten Ressourcen in einem einzigen Anwendenvorgang erstellen. Das Feld „Namespace“ ist optional, wenn sich die Kubernetes-Ressource des Projekts im selben Kubernetes-Namespace wie die Ressource auf Projektebene befindet.

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

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

Ressourcenkonfiguration annotieren

Wenn die Config Connector-Ressource auf Projektebene liegt, das Feld projectRef aber nicht unterstützt, können Sie die Projekt-ID mithilfe der project-id-Anmerkung in der Ressourcenkonfiguration festlegen:

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

Hier ist ein Beispiel dafür, wie die YAML 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 Anmerkung in der eigenen Konfiguration explizit festgelegt ist, wird die Anmerkung auf Namespaceebene durch die Anmerkung auf Ressourcenebene überschrieben.

Führen Sie folgenden Befehl aus, um den Namespace über die Befehlszeile mit Annotationen zu versehen:

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 für die Ressource noch für den Namespace eine Projekt-ID angegeben ist, verwendet Config Connector den Namen des Namespace als Projekt-ID. Dieses Standardverhalten wird von Config Connector unterstützt, wir empfehlen es jedoch nicht, da die implizite Standardprojekt-ID verwirrend sein kann.