2.3. Configuration de la création de projets
Dans OpenShift Container Platform, projects est utilisé pour regrouper et isoler des objets liés. Lorsqu'une demande est faite pour créer un nouveau projet à l'aide de la console web ou de la commande oc new-project
, un point de terminaison dans OpenShift Container Platform est utilisé pour provisionner le projet selon un modèle, qui peut être personnalisé.
En tant qu'administrateur de cluster, vous pouvez autoriser et configurer la façon dont les développeurs et les comptes de service peuvent créer, ou self-provision, leurs propres projets.
2.3.1. A propos de la création de projets
Le serveur API de OpenShift Container Platform fournit automatiquement de nouveaux projets basés sur le modèle de projet identifié par le paramètre projectRequestTemplate
dans la ressource de configuration de projet du cluster. Si le paramètre n'est pas défini, le serveur API crée un modèle par défaut qui crée un projet avec le nom demandé et attribue à l'utilisateur demandeur le rôle admin
pour ce projet.
Lorsqu'une demande de projet est soumise, l'API substitue les paramètres suivants dans le modèle :
Paramètres | Description |
---|---|
| Le nom du projet. Obligatoire. |
| Le nom d'affichage du projet. Peut être vide. |
| La description du projet. Peut être vide. |
| Le nom d'utilisateur de l'utilisateur administrateur. |
| Le nom d'utilisateur de l'utilisateur demandeur. |
L'accès à l'API est accordé aux développeurs ayant le rôle self-provisioner
et le rôle de cluster self-provisioners
. Ce rôle est disponible par défaut pour tous les développeurs authentifiés.
2.3.2. Modifier le modèle pour les nouveaux projets
En tant qu'administrateur de cluster, vous pouvez modifier le modèle de projet par défaut afin que les nouveaux projets soient créés en fonction de vos besoins.
Pour créer votre propre modèle de projet personnalisé :
Procédure
-
Connectez-vous en tant qu'utilisateur disposant des privilèges
cluster-admin
. Générer le modèle de projet par défaut :
oc adm create-bootstrap-project-template -o yaml > template.yaml
-
Utilisez un éditeur de texte pour modifier le fichier
template.yaml
généré en ajoutant des objets ou en modifiant des objets existants. Le modèle de projet doit être créé dans l'espace de noms
openshift-config
. Chargez votre modèle modifié :$ oc create -f template.yaml -n openshift-config
Modifiez la ressource de configuration du projet à l'aide de la console Web ou de la CLI.
En utilisant la console web :
-
Naviguez jusqu'à la page Administration
Cluster Settings. - Cliquez sur Configuration pour afficher toutes les ressources de configuration.
- Trouvez l'entrée pour Project et cliquez sur Edit YAML.
-
Naviguez jusqu'à la page Administration
Utilisation de la CLI :
Modifier la ressource
project.config.openshift.io/cluster
:$ oc edit project.config.openshift.io/cluster
Mettez à jour la section
spec
pour inclure les paramètresprojectRequestTemplate
etname
, et définissez le nom de votre modèle de projet téléchargé. Le nom par défaut estproject-request
.Ressource de configuration de projet avec modèle de projet personnalisé
apiVersion: config.openshift.io/v1 kind: Project metadata: ... spec: projectRequestTemplate: name: <template_name>
- Après avoir enregistré vos modifications, créez un nouveau projet pour vérifier que vos modifications ont bien été appliquées.
2.3.3. Désactiver l'auto-provisionnement des projets
Vous pouvez empêcher un groupe d'utilisateurs authentifiés d'auto-approvisionner de nouveaux projets.
Procédure
-
Connectez-vous en tant qu'utilisateur disposant des privilèges
cluster-admin
. Affichez l'utilisation de la liaison de rôle du cluster
self-provisioners
en exécutant la commande suivante :$ oc describe clusterrolebinding.rbac self-provisioners
Exemple de sortie
Name: self-provisioners Labels: <none> Annotations: rbac.authorization.kubernetes.io/autoupdate=true Role: Kind: ClusterRole Name: self-provisioner Subjects: Kind Name Namespace ---- ---- --------- Group system:authenticated:oauth
Passez en revue les sujets de la section
self-provisioners
.Supprimez le rôle de cluster
self-provisioner
du groupesystem:authenticated:oauth
.Si la liaison des rôles du cluster
self-provisioners
lie uniquement le rôleself-provisioner
au groupesystem:authenticated:oauth
, exécutez la commande suivante :$ oc patch clusterrolebinding.rbac self-provisioners -p '{"subjects": null}'
Si la liaison du rôle de cluster
self-provisioners
lie le rôleself-provisioner
à plus d'utilisateurs, de groupes ou de comptes de service que le groupesystem:authenticated:oauth
, exécutez la commande suivante :$ oc adm policy \ remove-cluster-role-from-group self-provisioner \ system:authenticated:oauth
Modifiez le lien du rôle de cluster
self-provisioners
pour empêcher les mises à jour automatiques du rôle. Les mises à jour automatiques réinitialisent les rôles de cluster à l'état par défaut.Pour mettre à jour l'attribution des rôles à l'aide de l'interface de ligne de commande :
Exécutez la commande suivante :
$ oc edit clusterrolebinding.rbac self-provisioners
Dans la définition de rôle affichée, définissez la valeur du paramètre
rbac.authorization.kubernetes.io/autoupdate
surfalse
, comme indiqué dans l'exemple suivant :apiVersion: authorization.openshift.io/v1 kind: ClusterRoleBinding metadata: annotations: rbac.authorization.kubernetes.io/autoupdate: "false" ...
Pour mettre à jour l'attribution des rôles à l'aide d'une seule commande :
$ oc patch clusterrolebinding.rbac self-provisioners -p '{ "metadata": { "annotations": { "rbac.authorization.kubernetes.io/autoupdate": "false" } } }'
Connectez-vous en tant qu'utilisateur authentifié et vérifiez qu'il n'est plus possible d'auto-provisionner un projet :
$ oc new-project test
Exemple de sortie
Error from server (Forbidden): You may not request a new project via this API.
Pensez à personnaliser ce message de demande de projet pour fournir des instructions plus utiles et spécifiques à votre organisation.
2.3.4. Personnalisation du message de demande de projet
Lorsqu'un développeur ou un compte de service qui n'est pas en mesure d'auto-provisionner des projets fait une demande de création de projet à l'aide de la console web ou de la CLI, le message d'erreur suivant est renvoyé par défaut :
You may not request a new project via this API.
Les administrateurs de clusters peuvent personnaliser ce message. Envisagez de le mettre à jour pour fournir des instructions supplémentaires sur la manière de demander un nouveau projet spécifique à votre organisation. Par exemple :
-
Pour demander un projet, contactez votre administrateur système à l'adresse
projectname@example.com
. -
Pour demander un nouveau projet, remplissez le formulaire de demande de projet situé à l'adresse
https://internal.example.com/openshift-project-request
.
Pour personnaliser le message de demande de projet :
Procédure
Modifiez la ressource de configuration du projet à l'aide de la console Web ou de la CLI.
En utilisant la console web :
-
Naviguez jusqu'à la page Administration
Cluster Settings. - Cliquez sur Configuration pour afficher toutes les ressources de configuration.
- Trouvez l'entrée pour Project et cliquez sur Edit YAML.
-
Naviguez jusqu'à la page Administration
Utilisation de la CLI :
-
Connectez-vous en tant qu'utilisateur disposant des privilèges
cluster-admin
. Modifier la ressource
project.config.openshift.io/cluster
:$ oc edit project.config.openshift.io/cluster
-
Connectez-vous en tant qu'utilisateur disposant des privilèges
Mettez à jour la section
spec
pour inclure le paramètreprojectRequestMessage
et définissez la valeur de votre message personnalisé :Ressource de configuration de projet avec message de demande de projet personnalisé
apiVersion: config.openshift.io/v1 kind: Project metadata: ... spec: projectRequestMessage: <message_string>
Par exemple :
apiVersion: config.openshift.io/v1 kind: Project metadata: ... spec: projectRequestMessage: To request a project, contact your system administrator at projectname@example.com.
- Après avoir enregistré vos modifications, essayez de créer un nouveau projet en tant que développeur ou compte de service qui n'est pas en mesure d'auto-provisionner des projets afin de vérifier que vos modifications ont été appliquées avec succès.