Este documento ha sido traducido utilizando tecnología de traducción automática. Si bien nos esforzamos por proporcionar traducciones precisas, no ofrecemos garantías sobre la integridad, precisión o confiabilidad del contenido traducido. En caso de discrepancia, la versión original en inglés prevalecerá y constituirá el texto autorizado.

Configuración de red con SUSE® Rancher Prime: OS Manager

warning

La red declarativa está en estado de versión preliminar con soporte limitado. Por lo tanto, no se recomienda para entornos de producción.

La MachineRegistration soporta la red declarativa e integración con Proveedores de CAPI IPAM.

Requisitos previos

  • Se requiere un servidor DHCP para el registro de primer arranque y reinicio de las máquinas. Por esta razón, el Tiempo de Arrendamiento puede mantenerse al mínimo, ya que durante todo el ciclo de vida de la máquina, se utilizarán las Direcciones IP gestionadas por IPAM.

  • Un proveedor de IPAM de su elección está instalado en el clúster de gestión de Rancher. Por ejemplo, el Proveedor IPAM InCluster.

  • NetworkManager necesita estar instalado en las imágenes del sistema operativo y puede configurarse directamente usando el nmconnections configurador de red. Ya incluido en las imágenes proporcionadas por Elemental.

  • (opcionalmente) nmc puede usarse con el nmc configurador de red.

  • (opcionalmente) nmstatectl puede usarse con el nmstate configurador de red.

Instalando nmc o nmstatectl en imágenes del sistema operativo

Al usar los configuradores nmc o nmstate, las herramientas nmc o nmstatectl necesitan ser instaladas en la máquina.

Actualmente, esto se puede lograr personalizando una imagen de Elemental OS con un comando personalizado:

  • 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

Cómo instalar el Proveedor IPAM CAPI

La forma recomendada de instalar cualquier Proveedor CAPI en Rancher es usar Rancher Turtles.

Rancher Turtles permitirá al usuario instalar y gestionar el ciclo de vida de cualquier Proveedor CAPI. Para instalarlo en su sistema, por favor siga la documentación de instalación de Rancher Turtles.

Una vez que Rancher Turtles está instalado, la instalación de un Proveedor IPAM CAPI, por ejemplo, el Proveedor IPAM InCluster, se puede llevar a cabo aplicando el siguiente recurso:

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

Sin Rancher Turtles

Una opción alternativa para instalar un Proveedor IPAM CAPI es aplicar directamente el manifiesto en el clúster de Rancher.

Tenga en cuenta que esta solución puede eventualmente llevar a conflictos con los CRDs y recursos aplicados, ya que necesitan ser aplicados y mantenidos manualmente.

  1. Los CRDs ipaddresses.ipam.cluster.x-k8s.io y ipaddressclaims.ipam.cluster.x-k8s.io deben ser instalados en el clúster de gestión de Rancher:

     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

Se espera que estos CRDs eventualmente sean parte de Rancher, sin requerir instalación manual. Consulte: https://github.com/rancher/rancher/issues/46385

  1. Instale el Proveedor IPAM InCluster desde el manifiesto publicado:

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

Configuración de la Red

La sección network del MachineRegistration permite a los usuarios definir:

  1. Un mapa de referencias de IPPool.

  2. Una plantilla de configuración de red (en este caso se está utilizando el configurador nmc).

ejemplo de MachineRegistration utilizando Redes Declarativas
Unresolved include directive in modules/es/pages/operator-operational-tasks/declarative-networking/networking.adoc - include::example$network/machineregistration.yaml[]

Aquí podemos observar que se ha definido un InClusterIPPool, ya que estamos utilizando el Proveedor IPAM InCluster para este ejemplo.

A continuación, vamos a referenciar este IPPool en el MachineRegistration. La clave para esta referencia es inventory-ip, y solo vamos a necesitar una IP por Máquina registrada. Si su máquina tiene más de un NIC, puede definir más referencias y utilizar diferentes IPPools también, por ejemplo:

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

Cada clave de referencia de IPPool definida puede ser utilizada para la plantilla de configuración de red:

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

El fragmento anterior es casi 1:1 sintaxis nm-configurator, con la única excepción del marcador de posición {inventory-ip}. Durante las fases de instalación o reinicio de las máquinas Elemental, el elemental-operator reclamará una dirección IP del Pool de IP referenciado y sustituirá el marcador de posición {inventory-ip} con una dirección IP real.

Direcciones IP reclamadas

El IPAddressClaim seguirá todo el ciclo de vida del MachineInventory, asegurando que a cada máquina registrada se le asigne una dirección IP única. Cada reclamación lleva el nombre del MachineInventory que la utiliza, como $MachineInventoryName-$IPPoolRefKey, por ejemplo:

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

Siempre que se elimine un MachineInventory, se restaurará la configuración de red predeterminada (DHCP), eliminando cualquier perfil de red en la máquina y reiniciando la pila de red. Finalmente, se liberarán las direcciones IP asignadas.

Para más información y detalles sobre cómo solucionar problemas, consulte la documentación de resolución de problemas de Redes Declarativas.

Configuradores

En la máquina Elemental, elemental-register puede configurar el NetworkManager de diferentes maneras. El configurador en uso se define en el MachineRegistration.spec.network:

  • nmc

  • nmstate

  • nmconnections

El configurador nmc utiliza la nm-configurator unified syntax para generar los archivos de conexión de NetworkManager.

ejemplo de MachineRegistration utilizando el configurador nmc
Unresolved include directive in modules/es/pages/operator-operational-tasks/declarative-networking/networking.adoc - include::example$network/machineregistration-nmc.yaml[]

El configurador nmstate utiliza nmstate syntax para generar los archivos de conexión de NetworkManager. Tenga en cuenta que nmstatectl necesita estar instalado en el sistema Elemental para usar este configurador. Esto no está incluido por defecto en las imágenes Elemental, pero se puede instalar al construir una imagen personalizada.

ejemplo de MachineRegistration utilizando el configurador nmstate
Unresolved include directive in modules/es/pages/operator-operational-tasks/declarative-networking/networking.adoc - include::example$network/machineregistration-nmstate.yaml[]

El nmconnections configurador es la opción más sencilla disponible y permite al usuario escribir directamente archivos nmconnection. Definir estos archivos para configuraciones de red complejas puede ser un desafío, pero siempre es posible utilizar nmcli, o incluso nmstate, o [nm-configurator](https://github.com/suse-edge/nm-configurator), y usar los archivos generados nmconnection como plantilla. Este configurador solo necesita NetworkManager, sin ninguna dependencia extra. Ejemplo de MachineRegistration utilizando el configurador nmconnections.

Haz clic aquí para el ejemplo de MachineRegistration utilizando el configurador nmstate.
Unresolved include directive in modules/es/pages/operator-operational-tasks/declarative-networking/networking.adoc - include::example$network/machineregistration-nmconnections.yaml[]