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 Sie kubectl create (anstatt kubectl apply) mit dieser Option verwenden müssen, da kubectl apply dies nicht unterstützt.

  • Manuelle Benennung: Sie können die Projekt-ID explizit mit metadata.name festlegen. Wenn ein Projekt mit genau diesem Namen bereits existiert, wird die Namensanforderung abgelehnt. Der Anzeigename, der in der Benutzeroberfläche angezeigt wird, wird von spec.displayName festgelegt. Wenn spec.displayName nicht angegeben ist, wird stattdessen das Feld metadata.name verwendet.

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.