|
Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar. |
Projekte
Ein Projekt erstellen
Projektressourcen dürfen nur im Management-Cluster erstellt werden. Siehe unten für das Erstellen von Namespaces unter Projekten in einem verwalteten Cluster.
Ein Basisprojekt erstellen
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
Beim Erstellen eines neuen Projekts haben Sie zwei Hauptoptionen zur Festlegung des Namens:
-
Automatische Generierung: Verwenden Sie
metadata.generateName, um eine eindeutige Projekt-ID sicherzustellen. Beachten Sie jedoch, dass Siekubectl create(anstattkubectl apply) mit dieser Option verwenden müssen, dakubectl applydies nicht unterstützt. -
Manuelle Benennung: Sie können die Projekt-ID explizit mit
metadata.namefestlegen. Wenn ein Projekt mit genau diesem Namen bereits existiert, wird die Namensanforderung abgelehnt. Der Anzeigename, der in der Benutzeroberfläche angezeigt wird, wird vonspec.displayNamefestgelegt. Wennspec.displayNamenicht angegeben ist, wird stattdessen das Feldmetadata.nameverwendet.
Setzen Sie metadata.namespace und spec.clusterName auf die ID des Clusters, zu dem das Projekt gehört.
Wenn Sie ein Projekt über ein Cluster-Mitgliedskonto erstellen und möchten, dass dieses Konto auf das Projekt zugreifen kann, müssen Sie die Annotation field.cattle.io/creatorId einfügen und sie auf die Benutzer-ID des Cluster-Mitgliedskontos setzen.
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
Das Setzen des Feldes field.cattle.io/creatorId erstellt ein ProjectRoleTemplateBinding, das dem angegebenen Benutzer die Möglichkeit gibt, Projektressourcen mit dem Befehl get zu sehen und das Projekt in der Rancher-Benutzeroberfläche anzuzeigen. Clusterbesitzer- und Administratorkonten müssen diese Annotation nicht setzen, um diese Aufgaben auszuführen.
Das Setzen der Annotation field.cattle.io/creator-principal-name auf das Hauptkonto des Benutzers bewahrt es in einem automatisch für den Projektbesitzer erstellten projektroletemplatebinding.
Wenn Sie nicht möchten, dass der Ersteller als Eigentümermitglied (z. B. wenn der Ersteller ein Clusteradministrator ist) zum Projekt hinzugefügt wird, können Sie die field.cattle.io/no-creator-rbac Annotation auf true setzen, was die Erstellung des entsprechenden projectroletemplatebinding verhindert.
Erstellen eines Projekts mit einer Ressourcenquote
Verweisen Sie auf Kubernetes Ressourcenquote.
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
Erstellen eines Projekts mit Container-Limitbereichen
Verweisen Sie auf Kubernetes Limitbereiche.
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
Backing-Namespace
Nach der Erstellung des Projekts wird das Feld status.backingNamespace ausgefüllt. Dies stellt den Namespace im Management-Cluster dar, der erstellt wird, um projektbezogene Ressourcen zu verwalten. Beispiele für Ressourcen, die im Backing-Namespace gespeichert sind, sind projektbezogene Geheimnisse und Projektrollenvorlagenbindungen.
Hinzufügen eines Mitglieds zu einem Projekt
Suchen Sie den Backing-Namespace des Projekts, um den Wert des Feldes metadata.namespace anzugeben, und suchen Sie die ID des Projekts, um den Wert des Feldes projectName anzugeben.
kubectl --namespace c-m-abcde get projects
Suchen Sie die ID der Rollenvorlage, um den Wert des roleTemplateName Feldes anzugeben (z. B. project-member oder project-owner).
kubectl get roletemplates
Beim Hinzufügen eines Benutzermitglieds geben Sie das userPrincipalName Feld an:
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
Beim Hinzufügen eines Gruppenmitglieds geben Sie stattdessen das groupPrincipalName Feld an:
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
Erstellen Sie ein projectroletemplatebinding für jede Rolle, die Sie dem Projektmitglied zuweisen möchten.
Auflisten der Projektmitglieder
Suchen Sie den Backing-Namespace des Projekts:
kubectl --namespace c-m-abcde get projects
Um projectroletemplatebindings im Backing-Namespace des Projekts aufzulisten:
kubectl --namespace c-m-abcde-p-vwxyz get projectroletemplatebindings
Löschen eines Mitglieds aus einem Projekt
Suchen Sie die IDs der projectroletemplatebindings, die das Mitglied im Namespace des Projekts enthalten, wie im Abschnitt Auflisten der Projektmitglieder beschrieben.
Löschen Sie die projectroletemplatebinding aus dem Namespace des Projekts:
kubectl --namespace c-m-abcde-p-vwxyz delete projectroletemplatebindings prtb-qx874 prtb-7zw7s
Erstellen eines Namespace in einem Projekt
Die Projektressource befindet sich im Management-Cluster, auch wenn das Projekt für einen verwalteten Cluster gedacht ist. Die Namespaces unter dem Projekt befinden sich im verwalteten Cluster.
Suchen Sie im Management-Cluster die Projekt-ID für den Cluster, den Sie verwalten, wenn er mit metadata.generateName generiert wurde:
kubectl --namespace c-m-abcde get projects
Erstellen Sie im verwalteten Cluster einen Namespace mit einer Projektannotation:
kubectl apply -f - <<EOF
apiVersion: v1
kind: Namespace
metadata:
name: mynamespace
annotations:
field.cattle.io/projectId: c-m-abcde:p-vwxyz
EOF
Beachten Sie das Format, <cluster ID>:<project ID>.
Löschen eines Projekts
Suchen Sie das zu löschende Projekt im Cluster-Namespace:
kubectl --namespace c-m-abcde get projects
Löschen Sie das Projekt im Cluster-Namespace:
kubectl --namespace c-m-abcde delete project p-vwxyz
Bitte beachten Sie, dass dieser Befehl die Namespaces und Ressourcen, die früher zum Projekt gehörten, nicht löscht.
Er löscht jedoch alle Projektrollen-Vorlagenbindungen für die Projekte, sodass das erneute Erstellen des Projekts die hinzugefügten Mitglieder nicht wiederherstellt, und Sie müssen die Benutzer erneut als Mitglieder hinzufügen.