|
Ce document a été traduit à l'aide d'une technologie de traduction automatique. Bien que nous nous efforcions de fournir des traductions exactes, nous ne fournissons aucune garantie quant à l'exhaustivité, l'exactitude ou la fiabilité du contenu traduit. En cas de divergence, la version originale anglaise prévaut et fait foi. |
Projets
Création d’un projet de mise à niveau
Les ressources de projet ne peuvent être créées que sur le cluster de gestion. Voir ci-dessous pour la création d’espaces de noms sous des projets dans un cluster géré.
Créer un projet de base
kubectl create -f - <<EOF
apiVersion: management.cattle.io/v3
kind: Project
metadata:
generateName: p-
namespace: c-m-abcde
spec:
clusterName: c-m-abcde
displayName: myproject
EOF
Lors de la création d’un nouveau projet, vous avez deux options principales pour définir le nom :
-
Génération automatique : Utilisez
metadata.generateNamepour garantir un ID de projet unique. Cependant, notez que vous devez utiliserkubectl create(au lieu dekubectl apply) avec cette option, carkubectl applyne la prend pas en charge. -
Nommage manuel : Vous pouvez définir explicitement l’ID du projet en utilisant
metadata.name. Si un projet avec ce nom exact existe déjà, la demande de nom est refusée. Le nom d’affichage visible dans l’interface utilisateur est défini parspec.displayName. Sispec.displayNamen’est pas fourni, le champmetadata.nameest utilisé à la place.
Définissez metadata.namespace et spec.clusterName sur l’ID du cluster auquel le projet appartient.
Si vous créez un projet via un compte de membre du cluster et souhaitez que ce compte puisse accéder au projet, vous devez inclure l’annotation field.cattle.io/creatorId et la définir sur l’ID utilisateur du compte de membre du cluster.
kubectl create -f - <<EOF
apiVersion: management.cattle.io/v3
kind: Project
metadata:
annotations:
field.cattle.io/creatorId: user-id
generateName: p-
namespace: c-m-abcde
spec:
clusterName: c-m-abcde
displayName: myproject
EOF
La définition du champ field.cattle.io/creatorId crée un ProjectRoleTemplateBinding qui accorde à l’utilisateur spécifié la possibilité de voir les ressources du projet avec la commande get et de visualiser le projet dans l’interface utilisateur de Rancher. Les comptes de propriétaire de cluster et d’administrateur n’ont pas besoin de définir cette annotation pour effectuer ces tâches.
La définition de l’annotation field.cattle.io/creator-principal-name sur le principal de l’utilisateur la préserve dans un projetroletemplatebinding créé automatiquement pour le propriétaire du projet.
Si vous ne souhaitez pas que le créateur soit ajouté en tant que membre propriétaire (par exemple, si le créateur est un administrateur de cluster) au projet, vous pouvez définir l’annotation field.cattle.io/no-creator-rbac sur true, ce qui empêchera la création du projetroletemplatebinding correspondant.
Créer un projet avec un quota de ressources
Référez-vous à Quota de ressources Kubernetes.
kubectl create -f - <<EOF
apiVersion: management.cattle.io/v3
kind: Project
metadata:
generateName: p-
namespace: c-m-abcde
spec:
clusterName: c-m-abcde
displayName: myproject
resourceQuota:
limit:
limitsCpu: 1000m
namespaceDefaultResourceQuota:
limit:
limitsCpu: 50m
EOF
Créer un projet avec des limites de conteneurs
Référez-vous à Kubernetes Limit Ranges.
kubectl create -f - <<EOF
apiVersion: management.cattle.io/v3
kind: Project
metadata:
generateName: p-
namespace: c-m-abcde
spec:
clusterName: c-m-abcde
displayName: myproject
containerDefaultResourceLimit:
limitsCpu: 100m
limitsMemory: 100Mi
requestsCpu: 50m
requestsMemory: 50Mi
EOF
Espace de noms de support
Après la création du projet, le champ status.backingNamespace est rempli. Cela représente l’espace de noms dans le cluster de gestion qui est créé pour gérer les ressources liées au projet. Des exemples de ressources stockées dans l’espace de noms de support sont secrets spécifiques au projet et liaisons de modèles de rôle de projet.
Ajouter un membre à un projet
Recherchez l'espace de noms de support du projet pour spécifier la valeur du champ metadata.namespace et recherchez l’ID du projet pour spécifier la valeur du champ projectName.
kubectl --namespace c-m-abcde get projects
Recherchez l’ID du modèle de rôle pour spécifier la valeur du champ roleTemplateName (par exemple, project-member ou project-owner).
kubectl get roletemplates
Lors de l’ajout d’un membre utilisateur, spécifiez le champ userPrincipalName :
kubectl create -f - <<EOF
apiVersion: management.cattle.io/v3
kind: ProjectRoleTemplateBinding
metadata:
generateName: prtb-
namespace: c-m-abcde-p-vwxyz
projectName: c-m-abcde:p-vwxyz
roleTemplateName: project-member
userPrincipalName: keycloak_user://user
EOF
Lors de l’ajout d’un membre de groupe, spécifiez plutôt le champ groupPrincipalName :
kubectl create -f - <<EOF
apiVersion: management.cattle.io/v3
kind: ProjectRoleTemplateBinding
metadata:
generateName: prtb-
namespace: p-vwxyz
projectName: c-m-abcde:p-vwxyz
roleTemplateName: project-member
groupPrincipalName: keycloak_group://group
EOF
Créez un projetroletemplatebinding pour chaque rôle que vous souhaitez attribuer au membre du projet.
Lister les membres du projet
Recherchez l’espace de noms associé au projet :
kubectl --namespace c-m-abcde get projects
Pour lister les projectroletemplatebindings dans l’espace de noms associé au projet :
kubectl --namespace c-m-abcde-p-vwxyz get projectroletemplatebindings
Supprimer un membre d’un projet
Recherchez les IDs de projectroletemplatebinding contenant le membre dans l’espace de noms associé au projet comme décrit dans la section Lister les membres du projet.
Supprimez le projectroletemplatebinding de l’espace de noms associé au projet :
kubectl --namespace c-m-abcde-p-vwxyz delete projectroletemplatebindings prtb-qx874 prtb-7zw7s
Créer un espace de noms dans un projet
La ressource du projet réside dans le cluster de gestion, même si le projet est destiné à un cluster géré. Les espaces de noms sous le projet résident dans le cluster géré.
Sur le cluster de gestion, recherchez l’ID du projet pour le cluster que vous administrez s’il a été généré en utilisant metadata.generateName :
kubectl --namespace c-m-abcde get projects
Sur le cluster géré, créez un espace de noms avec une annotation de projet :
kubectl apply -f - <<EOF
apiVersion: v1
kind: Namespace
metadata:
name: mynamespace
annotations:
field.cattle.io/projectId: c-m-abcde:p-vwxyz
EOF
Notez le format, <cluster ID>:<project ID>.
Suppression d’un projet
Recherchez le projet à supprimer dans l’espace de noms du cluster :
kubectl --namespace c-m-abcde get projects
Supprimez le projet sous l’espace de noms du cluster :
kubectl --namespace c-m-abcde delete project p-vwxyz
Notez que cette commande ne supprime pas les espaces de noms et les ressources qui appartenaient auparavant au projet.
Elle supprime tous les projectroletemplatebindings pour les projets, donc recréer le projet ne restaurera pas les membres ajoutés au projet, et vous devez ajouter à nouveau les utilisateurs en tant que membres.