Ressources au niveau du dossier


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 votre spécification de ressource, s'il ne le trouve pas, puis recherche une annotation de définition du champ d'application.

Spécifier le champ folderRef

La plupart des ressources Config Connector à l'échelle d'un dossier acceptent un champ nommé folderRef dans sa spécification CRD. Utilisez ce champ pour spécifier le dossier Google Cloud dans lequel vous souhaitez créer la ressource.

Si le dossier Google Cloud est également géré dans le même cluster via la CRD Dossier, vous pouvez le spécifier en tant que référence à une ressource Kubernetes:

...
spec:
  folderRef:
    name: FOLDER_RESOURCE_NAME
    namespace: FOLDER_RESOURCE_NAMESPACE
...

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

Si le dossier 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 dossier. Le format exact de la valeur peut varier en fonction du type de ressource. Les deux formats les plus courants sont "FOLDER_ID" et "folders/FOLDER_ID". Voici un exemple pour "FOLDER_ID" :

...
spec:
  folderRef:
    external: "FOLDER_ID"
...

Annoter la configuration des ressources

Si la ressource Config Connector est à l'échelle d'un dossier, mais qu'elle n'est pas compatible avec le champ folderRef, vous pouvez définir l'ID de dossier sur la configuration de ressources à l'aide de l'annotation folder-id:

...
metadata:
  annotations:
    cnrm.cloud.google.com/folder-id: FOLDER_ID
...

Voici un exemple de code YAML de ressource contenant cette annotation:

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

Annoter la configuration de l'espace de noms

Vous pouvez définir un ID de dossier par défaut pour les ressources nouvellement créées en annotant votre espace de noms Kubernetes. Si cette annotation est explicitement définie dans l'une des ressources de l'espace de noms, 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/folder-id=FOLDER_ID

Remplacez les éléments suivants :

  • NAMESPACE_NAME : nom de votre espace de noms
  • FOLDER_ID : ID de votre dossier 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/folder-id: FOLDER_ID
  name: NAMESPACE_NAME

Remplacez les éléments suivants :

  • FOLDER_ID : ID de votre dossier Google Cloud
  • NAMESPACE_NAME : nom de votre espace de noms

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