Namespaces

Workload-Namespaces

Namespace-Erstellungsverhalten in Bundles

Beim Bereitstellen eines SUSE® Rancher Prime Continuous Delivery Bundles wird der angegebene Namespace automatisch erstellt, wenn er noch nicht existiert.

Konfiguration von Workload-Namespaces

Bei der Konfiguration von Workload-Namespaces ist es wichtig zu beachten, dass bestimmte Optionen dazu gedacht sind, die Werte anderer Optionen oder Namespace-Definitionen in Workload-Ressourcen zu überschreiben. In einigen Fällen kann das Setzen von Namespaces mit bestimmten Optionen zu Fehlern führen, wenn die bereitzustellenden Ressourcen nicht-namespacegebundene Ressourcen enthalten. Um ein besseres Verständnis dafür zu bekommen, wie diese Optionen interagieren, siehe das Diagramm unten. Für weitere Details zu einer bestimmten Option, siehe bitte das GitRepo oder fleet.yaml Referenz.

Konfiguration von Workload-Namespaces

Bereitstellungen über Namespaces hinweg

Es ist möglich, ein GitRepo zu erstellen, das über Namespaces hinweg bereitstellt. Der Hauptzweck davon ist, dass ein zentrales privilegiertes Team die gemeinsame Konfiguration für viele Cluster verwalten kann, die von verschiedenen Teams verwaltet werden. Dies wird erreicht, indem eine BundleNamespaceMapping Ressource in einem Cluster erstellt wird.

Wenn Sie eine BundleNamespaceMapping Ressource erstellen, ist es am besten, dies in einem Namespace zu tun, der nur GitRepos und keine Clusters enthält. Es kann verwirrend werden, wenn Sie Cluster im selben Repo haben, da der übergreifende Namespace GitRepos immer gegen den aktuellen Namespace ausgewertet wird. Wenn Sie also Cluster im selben Namespace haben, möchten Sie sie möglicherweise als Canary-Cluster einrichten.

Eine BundleNamespaceMapping hat nur zwei Felder. Die sind wie folgt:

kind: BundleNamespaceMapping
apiVersion: fleet.cattle.io/v1alpha1
metadata:
  name: not-important
  namespace: typically-unique

# Bundles to match by label.  The labels are defined in the fleet.yaml
# labels field or from the GitRepo metadata.labels field
bundleSelector:
  matchLabels:
    foo: bar

# Namespaces to match by label
namespaceSelector:
  matchLabels:
    foo: bar

Wenn das BundleNamespaceMappings bundleSelector Feld mit einem Bundles Label übereinstimmt, wird das Bundle Zielkriterium gegen alle Cluster in allen Namensräumen ausgewertet, die namespaceSelector entsprechen. Man kann Labels für die erstellten Bundles von Git angeben, indem man Labels in die fleet.yaml Datei oder in das metadata.labels Feld auf der GitRepo setzt.

Einschränkung von GitRepos

Ein Namespace kann mehrere GitRepoRestriction Ressourcen enthalten. Alle GitRepos, die in diesem Namespace erstellt werden, werden mit der Liste der Einschränkungen überprüft. Wenn ein GitRepo gegen eine der Einschränkungen verstößt, befindet sich sein BundleDeployment in einem Fehlerzustand und wird nicht bereitgestellt.

Dies kann auch verwendet werden, um die Standardwerte für die serviceAccount und clientSecretName Felder von GitRepo festzulegen.

kind: GitRepoRestriction
apiVersion: fleet.cattle.io/v1alpha1
metadata:
  name: restriction
  namespace: typically-unique
allowedClientSecretNames: []
allowedRepoPatterns: []
allowedServiceAccounts: []
allowedTargetNamespaces: []
defaultClientSecretName: ""
defaultServiceAccount: ""

Erlaubte Ziel-Namensräume

Dies kann verwendet werden, um eine Bereitstellung auf eine Menge von Namespaces in einem Downstream-Cluster zu beschränken. Wenn eine Einschränkung für erlaubte Ziel-Namespaces vorhanden ist, müssen alle GitRepos ein targetNamespace angeben, und der angegebene Namespace muss in der Zulassungsliste sein. Dies verhindert auch die Erstellung von clusterweiten Ressourcen.

Erlaubter Ziel-Namensraum-Selektor

allowedTargetNamespaceSelector beschränkt Bereitstellungen auf Namensräume in Downstream-Clustern, deren Labels mit dem angegebenen Selektor übereinstimmen. Wenn dieses Feld in einem GitRepoRestriction gesetzt ist, müssen alle GitRepos ein targetNamespace angeben. Der Fleet-Agent überprüft die Labels dieses Namensraums im Downstream-Cluster, bevor ein Bundle bereitgestellt wird:

  • Wenn der Namensraum existiert und seine Labels mit dem Selektor übereinstimmen, wird die Bereitstellung fortgesetzt.

  • Wenn der Namensraum existiert, aber seine Labels nicht übereinstimmen, wird der BundleDeployment in einen Fehlerzustand versetzt und das Bundle wird nicht bereitgestellt.

  • Wenn der Namensraum existiert, aber seine Labels nicht übereinstimmen, wird der in einen Fehlerzustand versetzt und das Bundle wird nicht bereitgestellt.

  • Wenn der Namensraum im Downstream-Cluster nicht existiert, schlägt die Bereitstellung mit einem Fehler fehl. Das Vorab-Erstellen des Namensraums und das korrekte Labeln ist erforderlich; die createNamespace Option von Helm gilt nicht, wenn dieser Selektor gesetzt ist.

Mehrere GitRepoRestriction Ressourcen im selben Namensraum tragen jeweils zu ihrem allowedTargetNamespaceSelector bei. Die Selektoren werden zusammengeführt, bevor sie an die Bundle-Bereitstellungen propagiert werden; ein Namespace muss alle von ihnen erfüllen.

kind: GitRepoRestriction
apiVersion: fleet.cattle.io/v1alpha1
metadata:
  name: restriction
  namespace: project1
allowedTargetNamespaceSelector:
  matchLabels:
    team: frontend

SUSE® Rancher Prime Continuous Delivery Namespaces

Alle Typen im SUSE® Rancher Prime Continuous Delivery Manager sind namespaced. Die Namespaces einer benutzerdefinierten Ressource, z. B. GitRepo, beeinflussen nicht den Namespace der bereitgestellten Ressourcen.

Zu verstehen, wie Namespaces im SUSE® Rancher Prime Continuous Delivery Manager verwendet werden, ist wichtig, um das Sicherheitsmodell zu verstehen und wie man SUSE® Rancher Prime Continuous Delivery in einer Multi-Tenant-Umgebung nutzen kann.

Namespace

GitRepos, Bundles, Clusters, ClusterGroups

Alle Selektoren für GitRepo Ziele werden gegen die Clusters und ClusterGroups in denselben Namespaces ausgewertet. Das bedeutet, dass, wenn Sie create oder update Berechtigungen für einen GitRepo Typ in einem Namespace gewähren, dieser Endbenutzer den Selektor ändern kann, um mit jedem Cluster in diesem Namespace übereinzustimmen. Das bedeutet in der Praxis, dass, wenn Sie zwei Teams haben, die ihre eigenen GitRepo Registrierungen selbst verwalten sollen, sie jedoch nicht die Cluster des jeweils anderen anvisieren dürfen, sie in unterschiedlichen Namespaces sein sollten.

Der Namespace für die Clusterregistrierung, der in Rancher 'Workspace' genannt wird, enthält die Cluster und die ClusterRegistration Ressourcen sowie alle GitRepos und Bundles.

Rancher wird zwei SUSE® Rancher Prime Continuous Delivery Workspaces erstellen: fleet-default und fleet-local.

  • fleet-default wird alle Downstream-Cluster enthalten, die bereits über Rancher registriert sind.

  • fleet-local wird standardmäßig den lokalen Cluster enthalten. Der Zugriff auf fleet-local ist eingeschränkt.

Wichtige Informationen

Das Löschen des Workspaces, des Namespace für die Clusterregistrierung, wird alle Cluster innerhalb dieses Namespaces löschen. Dies wird alle bereitgestellten Bundles, mit Ausnahme des Fleet-Agenten, von den gelöschten Clustern deinstallieren.

Wenn Sie SUSE® Rancher Prime Continuous Delivery im Stil eines einzelnen Clusters verwenden, wird der Namespace immer fleet-local sein. Siehe den Abschnitt fleet-local Namensräume für weitere Informationen.

Für einen Multi-Cluster Stil stellen Sie bitte sicher, dass Sie das richtige Repo verwenden, das den richtigen Zielclustern zugeordnet wird.

Interne Namensräume

Cluster-Registrierungs-Namespace: fleet-local

Der fleet-local Namespace ist ein spezieller Namespace, der für den einzelnen Cluster-Anwendungsfall oder zum Neustarten der Konfiguration des SUSE® Rancher Prime Continuous Delivery Managers verwendet wird. Der Zugang zum lokalen Cluster sollte auf Betreiber beschränkt sein.

Wenn SUSE® Rancher Prime Continuous Delivery installiert ist, wird der fleet-local Namespace zusammen mit einem Cluster namens local und einem ClusterGroup namens default erstellt. Wenn keine Ziele auf einem GitRepo angegeben sind, wird standardmäßig das ClusterGroup mit dem Namen default angesteuert. Das bedeutet, dass alle GitRepos, die in fleet-local erstellt werden, automatisch das local Cluster ansteuern. Der local Cluster bezieht sich auf den Cluster, auf dem der SUSE® Rancher Prime Continuous Delivery Manager läuft.

System-Namespace: cattle-fleet-system

Der SUSE® Rancher Prime Continuous Delivery Controller und der SUSE® Rancher Prime Continuous Delivery Agent laufen in diesem Namespace. Alle Dienstkonten, die von GitRepos referenziert werden, sollten in diesem Namespace im Downstream-Cluster existieren.

System-Registrierungs-Namespace: cattle-fleet-clusters-system

Dieser Namespace enthält Geheimnisse für den Cluster-Registrierungsprozess. Er sollte keine anderen Ressourcen enthalten, insbesondere keine Geheimnisse.

Cluster-Namespaces

Für jeden registrierten Cluster wird ein Namespace vom SUSE® Rancher Prime Continuous Delivery Manager für diesen Cluster erstellt. Diese Namespaces sind in der Form cluster-${namespace}-${cluster}-${random} benannt. Der Zweck dieses Namespace ist, dass alle BundleDeployments für diesen Cluster in diesen Namespace gelegt werden und der Downstream-Cluster dann Zugriff erhält, um BundleDeployments in diesem Namespace nur zu beobachten und zu aktualisieren.