Risorse relative ai progetti


Config Connector può gestire le risorse a livello di progetto, cartella o organizzazione. Affinché Config Connector possa determinare dove creare le risorse, controlla prima se è presente un campo che definisce l'ambito nella specifica della risorsa. Se non lo trova, controlla se è presente un'annotazione che definisce l'ambito.

Specifica il campo projectRef

La maggior parte delle risorse Config Connector basate su progetto supporta un campo denominato projectRef nella specifica CRD. Utilizza questo campo per specificare il Google Cloud progetto in cui vuoi creare la risorsa.

Se il Google Cloud progetto è gestito anche nello stesso cluster con il Project RCD, puoi specificarlo come riferimento alla risorsa Kubernetes:

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

Questo approccio consente di utilizzare Config Connector e creare un Google Cloud progetto con le relative risorse secondarie in un'unica operazione di applicazione. Il campo dello spazio dei nomi è facoltativo se la risorsa Kubernetes del progetto si trova nello stesso spazio dei nomi Kubernetes della risorsa basata sul progetto.

Se il Google Cloud progetto non è gestito come risorsa Kubernetes nello stesso cluster, puoi utilizzare il campo external per specificare direttamente l'ID progetto. Il formato esatto del valore può variare in base al tipo di risorsa. I due formati più comuni sono "PROJECT_ID" e "projects/PROJECT_ID". Di seguito è riportato un esempio di "projects/PROJECT_ID":

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

Annotare la configurazione delle risorse

Se la risorsa Config Connector è basata sul progetto, ma non supporta il campo projectRef, puoi impostare l'ID progetto nella configurazione della risorsa utilizzando l'annotazione project-id:

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

Ecco un esempio di codice YAML di una risorsa FooBar con questa annotazione:

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

Configurazione dello spazio dei nomi annotato

Puoi impostare un ID progetto predefinito per le risorse appena create annotando lo spazio dei nomi Kubernetes. Se una delle risorse nello spazio dei nomi ha questa annotazione impostata esplicitamente nella propria configurazione, l'annotazione a livello di risorsa sovrascrive l'annotazione a livello di spazio dei nomi.

Per annotare lo spazio dei nomi utilizzando la riga di comando, esegui il seguente comando:

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

Sostituisci quanto segue:

  • NAMESPACE_NAME: il nome dello spazio dei nomi
  • PROJECT_ID: il tuo Google Cloud ID progetto

In alternativa, puoi applicare un manifest YAML contenente l'annotazione. Copia il codice YAML di seguito in un file:

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

Sostituisci quanto segue:

  • PROJECT_ID: il tuo Google Cloud ID progetto
  • NAMESPACE_NAME: il nome dello spazio dei nomi

Dopo aver creato il file, applicalo al cluster.

Utilizzo del nome dello spazio dei nomi come ID progetto

Se né la risorsa né lo spazio dei nomi specificano un ID progetto, Config Connector utilizza il nome dello spazio dei nomi come ID progetto. Questo comportamento predefinito è supportato da Config Connector, ma non lo consigliamo perché il valore predefinito implicito dell'ID progetto può creare confusione.