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.generateName pour garantir un ID de projet unique. Cependant, notez que vous devez utiliser kubectl create (au lieu de kubectl apply) avec cette option, car kubectl apply ne 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 par spec.displayName. Si spec.displayName n’est pas fourni, le champ metadata.name est 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.