|
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
nmconnectionsconfigurador de rede. Já incluído nas imagens fornecidas pelo Elemental. -
(opcionalmente) nmc pode ser usado com o
nmcconfigurador de rede. -
(opcionalmente) nmstatectl pode ser usado com o
nmstateconfigurador 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.
-
Os CRDs
ipaddresses.ipam.cluster.x-k8s.ioeipaddressclaims.ipam.cluster.x-k8s.iodevem 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 |
-
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:
-
Um mapa de referências de IPPool.
-
Um modelo de configuração de rede (neste caso, o configurador
nmcestá em uso).
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.
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.
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[]