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.

Netzwerkkonfiguration mit SUSE® Rancher Prime: OS Manager

warning

Das deklarative Networking befindet sich im Zustand der Technologievorschau mit eingeschränkter Unterstützung. Aus diesem Grund wird es nicht für Produktionsumgebungen empfohlen.

Die Maschinenregistrierung unterstützt das deklarative Networking und die Integration mit CAPI IPAM-Anbietern.

Voraussetzungen

  • Ein DHCP-Server ist weiterhin erforderlich für die Erstregistrierung und das Zurücksetzen von Maschinen. Aus diesem Grund kann die Lease Time minimal gehalten werden, da während des gesamten Lebenszyklus der Maschine die von IPAM gesteuerten IP-Adressen verwendet werden.

  • Ein IPAM-Anbieter Ihrer Wahl ist im Rancher-Management-Cluster installiert. Zum Beispiel der InCluster IPAM-Anbieter.

  • NetworkManager muss auf den Betriebssystem-Images installiert werden und kann direkt mit dem nmconnections Netzwerk Konfigurator konfiguriert werden. Bereits in den von Elemental bereitgestellten Images enthalten.

  • (optional) nmc kann mit dem nmc Netzwerk Konfigurator verwendet werden.

  • (optional) nmstatectl kann mit dem nmstate Netzwerk Konfigurator verwendet werden.

Installation von nmc oder nmstatectl auf Betriebssystem-Images

Bei Verwendung der nmc oder nmstate Konfiguratoren müssen die nmc oder nmstatectl Tools auf der Maschine installiert werden.

Derzeit kann dies durch Anpassen eines Elemental OS-Images mit einem benutzerdefinierten Befehl erreicht werden:

  • nmc

  • nmstatectl

# Install nmc
RUN curl -LO https://github.com/suse-edge/nm-configurator/releases/download/v0.3.3/nmc-linux-x86_64 && \ install -o root -g root -m 0755 nmc-linux-x86_64 /usr/sbin/nmc
# Install nmstatectl
RUN curl -LO https://github.com/nmstate/nmstate/releases/download/v2.2.40/nmstatectl-linux-x64.zip && \ unzip nmstatectl-linux-x64.zip && \ chmod +x nmstatectl && \ mv ./nmstatectl /usr/sbin/nmstatectl && \ rm nmstatectl-linux-x64.zip

Wie man den CAPI IPAM-Anbieter installiert

Der empfohlene Weg, um einen CAPI-Anbieter in Rancher zu installieren, ist, Rancher Turtles zu verwenden.

Rancher Turtles ermöglichen es dem Benutzer, den Lebenszyklus eines beliebigen CAPI-Anbieters zu installieren und zu verwalten. Um ihn auf Ihrem System zu installieren, folgen Sie bitte der Dokumentation zur Installation von Rancher Turtles.

Sobald Rancher Turtles installiert ist, kann ein IPAM CAPI-Anbieter, zum Beispiel der InCluster IPAM-Anbieter, installiert werden, indem die folgende Ressource angewendet wird.

kind: CAPIProvider
metadata:
  name: in-cluster
  namespace: default
spec:
  name: in-cluster
  type: ipam
  fetchConfig:
    url: "https://github.com/kubernetes-sigs/cluster-api-ipam-provider-in-cluster/releases"
  version: v0.1.0

Ohne Rancher Turtles

Eine alternative Möglichkeit, einen CAPI IPAM Provider zu installieren, ist, das Manifest direkt im Rancher-Cluster anzuwenden.

Beachten Sie, dass diese Lösung schließlich zu Konflikten mit den angewendeten CRDs und Ressourcen führen kann, da diese manuell angewendet und verwaltet werden müssen.

  1. Die ipaddresses.ipam.cluster.x-k8s.io und ipaddressclaims.ipam.cluster.x-k8s.io CRDs müssen im Rancher-Management-Cluster installiert werden:

     kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/main/config/crd/bases/ipam.cluster.x-k8s.io_ipaddressclaims.yaml
     kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/main/config/crd/bases/ipam.cluster.x-k8s.io_ipaddresses.yaml
info

Es wird erwartet, dass diese CRDs schließlich Teil von Rancher werden und keine manuelle Installation erfordern. Siehe: https://github.com/rancher/rancher/issues/46385

  1. Installieren Sie den InCluster IPAM-Anbieter aus dem veröffentlichten Manifest:

     kubectl apply -f https://github.com/kubernetes-sigs/cluster-api-ipam-provider-in-cluster/releases/download/v0.1.0/ipam-components.yaml

Netzwerk konfigurieren

Der network Abschnitt des MachineRegistration ermöglicht es Benutzern, Folgendes zu definieren:

  1. Eine Karte von IPPool-Referenzen.

  2. Eine Netzwerk-Konfiguration (in diesem Fall wird der nmc Konfigurator verwendet).

Beispiel für die Maschinenregistrierung mit deklarativem Networking
Unresolved include directive in modules/de/pages/operator-operational-tasks/declarative-networking/networking.adoc - include::example$network/machineregistration.yaml[]

Hier können wir beobachten, dass ein InClusterIPPool definiert wurde, da wir für dieses Beispiel den InCluster IPAM-Anbieter verwenden.

Als Nächstes werden wir diesen IPPool im MachineRegistration referenzieren. Der Schlüssel für diese Referenz ist inventory-ip, und wir benötigen nur eine IP pro registrierter Maschine. Wenn Ihre Maschine mehr als eine NIC hat, können Sie weitere Referenzen definieren und auch verschiedene IPPools verwenden, zum Beispiel:

ipAddresses:
  main-nic-ip:
    apiGroup: ipam.cluster.x-k8s.io
    kind: InClusterIPPool
    name: elemental-inventory-pool
  secondary-nic-ip:
    apiGroup: ipam.cluster.x-k8s.io
    kind: InClusterIPPool
    name: elemental-inventory-pool
  private-nic-ip:
    apiGroup: ipam.cluster.x-k8s.io
    kind: InClusterIPPool
    name: elemental-private-pool

Jeder definierte IPPool-Referenzschlüssel kann für die Netzwerkkonfiguration verwendet werden:

config:
  dns-resolver:
    config:
      server:
      - 192.168.122.1
      search: []
  routes:
    config:
    - destination: 0.0.0.0/0
      next-hop-interface: eth0
      next-hop-address: 192.168.122.1
      metric: 150
      table-id: 254
  interfaces:
    - name: eth0
      type: ethernet
      description: Main-NIC
      state: up
      ipv4:
        enabled: true
        dhcp: false
        address:
        - ip: "{inventory-ip}"
          prefix-length: 24
      ipv6:
        enabled: false

Der obige Ausschnitt ist fast 1:1 nm-configurator Syntax, mit der einzigen Ausnahme des {inventory-ip} Platzhalters. Während der Installations- oder Rücksetzphasen von Elemental-Maschinen wird der elemental-operator eine IP-Adresse aus dem referenzierten IP-Pool beanspruchen und den {inventory-ip} Platzhalter durch eine echte IP-Adresse ersetzen.

Beanspruchte IP-Adressen

Der IPAddressClaim wird den gesamten Lebenszyklus des MachineInventory verfolgen und sicherstellen, dass jeder registrierte Maschine eindeutige IPs zugewiesen bekommt. Jeder Claim wird nach dem MachineInventory benannt, der ihn verwendet, zum Beispiel:

apiVersion: ipam.cluster.x-k8s.io/v1beta1
kind: IPAddressClaim
metadata:
  finalizers:
    - ipam.cluster.x-k8s.io/ReleaseAddress
  name: m-e5331e3b-1e1b-4ce7-b080-235ed9a6d07c-inventory-ip
  namespace: fleet-default
  ownerReferences:
    - apiVersion: elemental.cattle.io/v1beta1
      kind: MachineInventory
      name: m-e5331e3b-1e1b-4ce7-b080-235ed9a6d07c
spec:
  poolRef:
    apiGroup: ipam.cluster.x-k8s.io
    kind: InClusterIPPool
    name: elemental-inventory-pool
status:
  addressRef:
    name: m-e5331e3b-1e1b-4ce7-b080-235ed9a6d07c-inventory-ip

Wann immer ein MachineInventory gelöscht wird, wird die Standardnetzwerkkonfiguration (DHCP) wiederhergestellt, wodurch jedes Netzwerkprofil auf der Maschine gelöscht und der Netzwerkstapel neu gestartet wird. Schließlich werden die zugewiesenen IPs freigegeben.

Für weitere Informationen und Details zur Fehlersuche konsultieren Sie bitte die Troubleshooting Declarative Networking-Dokumentation.

Konfiguratoren

Auf der Elemental-Maschine kann elemental-register das NetworkManager auf verschiedene Weise konfigurieren. Der verwendete Konfigurator ist im MachineRegistration.spec.network definiert:

  • nmc

  • nmstate

  • nmconnections

Der nmc Konfigurator verwendet die nm-configurator einheitliche Syntax, um die Verbindungsdateien von NetworkManager zu generieren.

Beispiel für die Maschinenregistrierung mit dem nmc-Konfigurator
Unresolved include directive in modules/de/pages/operator-operational-tasks/declarative-networking/networking.adoc - include::example$network/machineregistration-nmc.yaml[]

Der nmstate Konfigurator verwendet nmstate-Syntax, um die Verbindungsdateien von NetworkManager zu generieren. Beachten Sie, dass nmstatectl auf dem Elemental-System installiert sein muss, um diesen Konfigurator zu verwenden. Dies ist standardmäßig nicht in Elemental-Images enthalten, kann jedoch beim Erstellen eines benutzerdefinierten Images installiert werden.

Beispiel für die Maschinenregistrierung mit dem nmstate-Konfigurator
Unresolved include directive in modules/de/pages/operator-operational-tasks/declarative-networking/networking.adoc - include::example$network/machineregistration-nmstate.yaml[]

Der nmconnections Konfigurator ist die einfachste verfügbare Option und ermöglicht es dem Benutzer, nmconnection Dateien direkt zu schreiben. Die Definition dieser Dateien für komplexe Netzwerk-Setups kann herausfordernd sein, aber es ist immer möglich, nmcli oder sogar nmstate oder [nm-configurator](https://github.com/suse-edge/nm-configurator) zu verwenden und die generierten nmconnection Dateien als Vorlage zu nutzen. Dieser Konfigurator benötigt nur NetworkManager, ohne zusätzliche Abhängigkeiten. Beispiel für die Maschinenregistrierung mit dem nmconnections-Konfigurator.

Klicken Sie hier für ein Beispiel der Maschinenregistrierung mit dem nmstate-Konfigurator.
Unresolved include directive in modules/de/pages/operator-operational-tasks/declarative-networking/networking.adoc - include::example$network/machineregistration-nmconnections.yaml[]