Ressources au niveau du projet


Config Connector peut gérer vos ressources au niveau du projet, du dossier ou de l'organisation. Pour que Config Connector détermine où créer vos ressources, il recherche d'abord un champ définissant le champ d'application dans la spécification de votre ressource. Si aucun champ de ce type n'est trouvé, il recherche une annotation définissant le champ d'application.

Spécifier le champ projectRef

La plupart des ressources Config Connector à l'échelle du projet acceptent un champ nommé projectRef dans sa spécification CRD. Ce champ vous permet de spécifier le projet Google Cloud dans lequel créer la ressource.

Si le projet Google Cloud est également géré dans le même cluster avec le CRD Project, vous pouvez spécifier le projet en tant que référence de ressource Kubernetes :

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

Cette approche permet d'utiliser Config Connector et de créer un avec ses ressources enfants en une seule opération d'application. Le champ "Espace de noms" est facultatif si la ressource Kubernetes du projet se trouve dans dans le même espace de noms Kubernetes que la ressource à l'échelle du projet.

Si le projet Google Cloud n'est pas géré en tant que ressource Kubernetes dans le même cluster, vous pouvez utiliser le champ external pour spécifier directement l'ID du projet associé. Le format exact de la valeur peut varier selon le type de ressource. Les deux formats les plus courants sont "PROJECT_ID" et "projects/PROJECT_ID". Vous trouverez ci-dessous un exemple de "projects/PROJECT_ID" :

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

Annoter la configuration des ressources

Si la ressource Config Connector est à l'échelle du projet, mais n'est pas compatible projectRef, vous pouvez définir l'ID du projet sur la configuration de la ressource à l'aide de l'annotation project-id:

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

Voici un exemple de code YAML de ressource FooBar avec l'annotation:

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

Annoter la configuration de l'espace de noms

Vous pouvez définir un ID de projet par défaut pour les nouvelles ressources en annotant votre espace de noms Kubernetes. Si l'une des ressources de l'espace de noms a cette annotation explicitement définie dans sa propre configuration, l'annotation au niveau de la ressource écrase l'annotation au niveau de l'espace de noms.

Pour annoter l'espace de noms à l'aide de la ligne de commande, exécutez la commande suivante :

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

Remplacez les éléments suivants :

  • NAMESPACE_NAME : nom de votre espace de noms
  • PROJECT_ID : ID de votre projet Google Cloud

Vous pouvez également appliquer un fichier manifeste YAML contenant l'annotation. Copiez le manifeste YAML ci-dessous dans un fichier :

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

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet Google Cloud
  • NAMESPACE_NAME : nom de votre espace de noms

Après avoir créé le fichier, appliquez-le à votre cluster.

Utiliser le nom de l'espace de noms comme ID du projet

Si ni la ressource, ni l'espace de noms ne spécifient d'ID de projet, alors Config Connector utilise le nom de l'espace de noms comme ID de projet. Cette valeur par défaut est compatible avec Config Connector, mais nous vous le déconseillons, car par défaut implicite de l'ID de projet peut prêter à confusion.