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.

Rede Estática com nm-configurator

aviso

A Rede Declarativa está em fase de preview de tecnologia, com suporte limitado. Portanto, não é recomendado para ambientes de produção.

A nm-configurator configuração por nó pode ser usada para atribuir estaticamente endereços IP a máquinas individuais, com base nos endereços MAC das NICs.

Esta solução não requer um provedor IPAM remoto, mas exige que o usuário mantenha o mapeamento entre endereços MAC conhecidos e endereços IP.

Neste exemplo, vamos personalizar uma imagem Elemental e incluir uma configuração yip que aplicará a configuração de rede estática logo no início da inicialização.

A configuração a seguir cobre 2 nós com uma configuração de rede muito básica.

99_static_network_config.yaml
Unresolved include directive in modules/pt/pages/operator-operational-tasks/declarative-networking/networking-static.adoc - include::example$network/yip-nmc-static-config.yaml[]

Inclua a configuração de rede estática em uma imagem de SO personalizada

Podemos estender uma imagem Elemental para incluir a configuração de rede estática em /system/oem. Qualquer SO alimentado por Elemental, onde o Elemental Toolkit está em execução, avaliará qualquer configuração neste diretório ao executar qualquer estágio. Além disso, vamos personalizar a imagem para instalar o binário nmc necessário.

# The version of Elemental to modify
FROM registry.suse.com/suse/sl-micro/6.0/baremetal-os-container:latest

# Install the static network config
COPY 99_static_network_config.yaml /system/oem/99_static_network_config.yaml

# Install nmc
RUN curl -LO https://github.com/suse-edge/nm-configurator/releases/download/v0.3.1/nmc-linux-x86_64 && \
    install -o root -g root -m 0755 nmc-linux-x86_64 /usr/sbin/nmc

# IMPORTANT: /etc/os-release is used for versioning/upgrade.
ARG IMAGE_REPO=norepo
ARG IMAGE_TAG=latest
RUN \
    sed -i -e "s|^IMAGE_REPO=.*|IMAGE_REPO=\"${IMAGE_REPO}\"|g" /etc/os-release && \
    sed -i -e "s|^IMAGE_TAG=.*|IMAGE_TAG=\"${IMAGE_TAG}\"|g" /etc/os-release && \
    sed -i -e "s|^IMAGE=.*|IMAGE=\"${IMAGE_REPO}:${IMAGE_TAG}\"|g" /etc/os-release

# IMPORTANT: it is good practice to recreate the initrd and re-apply `elemental-init`
RUN elemental init --force elemental-rootfs,grub-config,dracut-config,cloud-config-essentials,elemental-setup

O contêiner do SO agora pode ser construído e enviado para seu registro:

docker build --build-arg IMAGE_REPO=myrepo/static-network-os \
             --build-arg IMAGE_TAG=v1.1.1 \
             -t myrepo/static-network-os:v1.1.1 .
docker push myrepo/static-network-os:v1.1.1

Observe que, como a configuração de rede estática está incluída na imagem, isso exige que você construa e mantenha diferentes imagens com diferentes configurações, provavelmente uma por pool de nós ou uma por cluster, por exemplo. Imagens de SO personalizadas precisam ser mantidas para criar a imagem ISO inicial inicializável (via um SeedImage), mas também ao fazer upgrade das máquinas. A configuração de rede estática desejada deve estar presente nas imagens de SO usadas com a Imagem de SO Gerenciada, caso contrário, a configuração estará ausente ao inicializar a partir do sistema atualizado.

A imagem de SO personalizada também pode ser usada como está para construir uma imagem de disco bruto inicializável:

apiVersion: elemental.cattle.io/v1beta1
kind: SeedImage
metadata:
  name: my-raw-image
  namespace: fleet-default
spec:
  type: raw
  baseImage: myrepo/static-network-os:v1.1.1
  registrationRef:
    apiVersion: elemental.cattle.io/v1beta1
    kind: MachineRegistration
    name: my-registration
    namespace: fleet-default

Crie uma ISO inicializável

Você pode agora construir um contêiner ISO a partir desta imagem de contêiner de SO. Para mais informações sobre como personalizar imagens Elemental, consulte a documentação.

FROM myrepo/static-network-os:v1.1.1 AS os
FROM myrepo/static-network-os:v1.1.1 AS builder

WORKDIR /iso
COPY --from=os / rootfs

# work around buildah issue: https://github.com/containers/buildah/issues/4242
RUN rm -f rootfs/etc/resolv.conf

RUN elemental build-iso \
        dir:rootfs \
        --bootloader-in-rootfs \
        --squash-no-compression \
        -o /output -n "elemental"

FROM busybox
COPY --from=builder /output /elemental-iso

ENTRYPOINT ["busybox", "sh", "-c"]
docker build -t myrepo/static-network-iso:v1.1.1 .
docker push myrepo/static-network-iso:v1.1.1

Uma vez que o contêiner ISO é publicado em seu registro, você pode referenciá-lo no SeedImage como qualquer outra imagem ISO distribuída Elemental.

apiVersion: elemental.cattle.io/v1beta1
kind: SeedImage
metadata:
  name: my-iso
  namespace: fleet-default
spec:
  type: iso
  baseImage: myrepo/static-network-iso:v1.1.1
  registrationRef:
    apiVersion: elemental.cattle.io/v1beta1
    kind: MachineRegistration
    name: my-registration
    namespace: fleet-default

Observe que a configuração de rede estática agora será avaliada quando a mídia de instalação inicializar, e então será instalada no sistema como parte da imagem base.