Este documento foi traduzido usando tecnologia de tradução automática de máquina. Sempre trabalhamos para apresentar traduções precisas, mas não oferecemos nenhuma garantia em relação à integridade, precisão ou confiabilidade do conteúdo traduzido. Em caso de qualquer discrepância, a versão original em inglês prevalecerá e constituirá o texto official.

Configuração de rede com SUSE® Rancher Prime: OS Manager

aviso

A Rede Declarativa está em estado de prévia tecnológica com suporte limitado. Por isso, não é recomendado para ambientes de produção.

O MachineRegistration suporta Rede Declarativa e integração com CAPI IPAM Providers.

Pré-requisitos

  • Um servidor DHCP ainda é necessário para o registro de primeira inicialização e redefinição das máquinas. Por essa razão, o tempo de locação pode ser mantido no mínimo, pois durante todo o ciclo de vida da máquina, os endereços IP gerenciados pelo IPAM serão utilizados.

  • Um Provedor de IPAM de sua escolha está instalado no cluster de gerenciamento do Rancher. Por exemplo, o Provedor de IPAM InCluster.

  • NetworkManager precisa ser instalado nas imagens do SO e pode ser configurado diretamente usando o nmconnections configurador de rede. Já incluído nas imagens fornecidas pelo Elemental.

  • (opcionalmente) nmc pode ser usado com o nmc configurador de rede.

  • (opcionalmente) nmstatectl pode ser usado com o nmstate configurador de rede.

Instalando nmc ou nmstatectl nas imagens do SO

Ao usar os configuradores nmc ou nmstate, as ferramentas nmc ou nmstatectl precisam ser instaladas na máquina.

Atualmente, isso pode ser alcançado personalizando uma imagem do Elemental OS com um 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

Como instalar o Provedor de IPAM CAPI

A maneira recomendada de instalar qualquer Provedor CAPI no Rancher é usar Rancher Turtles.

Rancher Turtles permitirá que o usuário instale e gerencie o ciclo de vida de qualquer Provedor CAPI. Para instalá-lo em seu sistema, siga a documentação de instalação do Rancher Turtles.

Uma vez que o Rancher Turtles esteja instalado, a instalação de um Provedor de IPAM CAPI, por exemplo, o Provedor de IPAM InCluster, pode ser realizada aplicando o seguinte 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

Sem o Rancher Turtles

Uma opção alternativa para instalar um Provedor IPAM CAPI é aplicar diretamente o manifesto no cluster Rancher.

Observe que esta solução pode eventualmente levar a conflitos com os CRDs e recursos aplicados, pois eles precisam ser aplicados e mantidos manualmente.

  1. Os CRDs ipaddresses.ipam.cluster.x-k8s.io e ipaddressclaims.ipam.cluster.x-k8s.io devem ser instalados no cluster de gerenciamento do 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

Espera-se que esses CRDs eventualmente façam parte do Rancher, não exigindo instalação manual. Veja: https://github.com/rancher/rancher/issues/46385

  1. Instale o Provedor de IPAM InCluster a partir do manifesto liberado:

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

Configurando Rede

A seção network do MachineRegistration permite que os usuários definam:

  1. Um mapa de referências de IPPool.

  2. Um modelo de configuração de rede (neste caso, o configurador nmc está em uso).

exemplo de MachineRegistration usando Rede Declarativa
Unresolved include directive in modules/pt/pages/operator-operational-tasks/declarative-networking/networking.adoc - include::example$network/machineregistration.yaml[]

Aqui podemos observar que um InClusterIPPool foi definido, uma vez que estamos usando o Provedor de IPAM InCluster para este exemplo.

Em seguida, vamos referenciar este IPPool no MachineRegistration. A chave para esta referência é inventory-ip, e precisaremos de apenas um IP por Máquina registrada. Se sua máquina tiver mais de uma NIC, você pode definir mais referências e usar diferentes IPPools também, por exemplo:

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 chave de referência de IPPool definida pode ser usada para o modelo de configuração de rede:

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

O trecho acima é quase 1:1 syntaxe nm-configurator, com a única exceção do placeholder {inventory-ip}. Durante as fases de instalação ou redefinição das máquinas Elementais, o elemental-operator reivindicará um endereço IP do IPPool referenciado e substituirá o espaço reservado {inventory-ip} por um endereço IP real.

Endereços IP Reivindicados

O IPAddressClaim seguirá todo o ciclo de vida do MachineInventory, garantindo que cada máquina registrada receba IPs únicos. Cada reivindicação é nomeada após o MachineInventory que a utiliza, como $MachineInventoryName-$IPPoolRefKey, por exemplo:

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

Sempre que um MachineInventory for excluído, a configuração de rede padrão (DHCP) será restaurada, excluindo qualquer arquivo de controle na máquina e reiniciando a pilha de rede. Finalmente, os IPs atribuídos serão liberados.

Para mais informações e detalhes sobre como solucionar problemas, consulte a documentação de solução de problemas do Declarative Networking.

Configuradores

Na máquina Elemental, elemental-register pode configurar o NetworkManager de diferentes maneiras. O configurador em uso é definido no MachineRegistration.spec.network:

  • nmc

  • nmstate

  • nmconnections

O configurador nmc utiliza a nm-configurator unified syntax para gerar os arquivos de conexão do NetworkManager.

exemplo de MachineRegistration usando o configurador nmc
Unresolved include directive in modules/pt/pages/operator-operational-tasks/declarative-networking/networking.adoc - include::example$network/machineregistration-nmc.yaml[]

O configurador nmstate utiliza nmstate syntax para gerar os arquivos de conexão do NetworkManager. Observe que nmstatectl precisa estar instalado no sistema Elemental para usar este configurador. Isso não está incluído por padrão nas imagens Elemental, mas pode ser instalado ao construir uma imagem personalizada.

exemplo de MachineRegistration usando o configurador nmstate
Unresolved include directive in modules/pt/pages/operator-operational-tasks/declarative-networking/networking.adoc - include::example$network/machineregistration-nmstate.yaml[]

O nmconnections configurador é a opção mais simples disponível e permite que o usuário escreva diretamente arquivos nmconnection. Definir esses arquivos para configurações de rede complexas pode ser desafiador, mas sempre é possível usar nmcli, ou até mesmo nmstate, ou [nm-configurator](https://github.com/suse-edge/nm-configurator), e usar os arquivos nmconnection gerados como um modelo. Este configurador precisa apenas de NetworkManager, sem nenhuma dependência extra. Exemplo de MachineRegistration usando o configurador nmconnections.

Clique aqui para ver um exemplo de MachineRegistration usando o configurador nmstate.
Unresolved include directive in modules/pt/pages/operator-operational-tasks/declarative-networking/networking.adoc - include::example$network/machineregistration-nmconnections.yaml[]