Red Hat Blog를 보다가 관심 가는 글이 보여서 AI번역+약간 교정해 보았습니다.
출처: https://developers.redhat.com/articles/2025/05/27/how-integrate-senao-sx904-openshift-cluster
이 글에서는 Senao Networks SX904 스마트 NIC 플랫폼의 잠재적 활용 사례 중 하나를 소개합니다. Fortinet FortiGate-VM 차세대 방화벽(NGFW)을 네트워크의 uCPE 장치로 구축하는 것입니다. Senao SX904를 OpenShift 클러스터에 쉽게 통합하고 Red Hat OpenShift Virtualization Engine 및 SR-IOV 네트워크 운영자와 함께 구성하여 엣지에서 가상 머신 워크로드를 배포하는 유연하고 확장성이 뛰어난 방식을 제공하는 방법을 직접 보여드리겠습니다.
이 기사에서 제시하는 솔루션에 대해 자세히 알아보려면 먼저 선도적인 컴퓨팅, 네트워킹 및 스토리지 솔루션으로 데이터 센터 강화를 참조하세요 .
OpenShift와 통합된 Senao SX904
Intel NETSEC Accelerator 참조 설계를 기반으로 하는 Senao Networks SX904 Smart NIC 와 Red Hat OpenShift Container Platform을 통합하면 컨테이너화 및 가상화된 워크로드를 오프로드하는 혁신적이고 비용 효율적인 접근 방식을 제공합니다.
기존의 베어 메탈 Customer Premises Equipment (CPE)는 일반적으로 라우팅이나 방화벽과 같은 단일 고정 기능을 위해 설계되었습니다. 하지만 화이트박스 네트워킹 장치에 가상화된 네트워크 기능(VNF)을 구축함으로써 클라우드 네이티브 고객은 더 큰 유연성과 확장성을 확보할 수 있습니다. 이러한 접근 방식이 바로 범용 고객 댁내 장비(uCPE)입니다.
Senao SX904는 엣지 네트워크 컴퓨팅 및 보안 애플리케이션용으로 설계된 PCIe 폼팩터 SmartNIC으로, 일반적으로 데이터 센터 서버에서 제공하는 다양한 기능을 제공합니다. Senao SX904를 OpenShift 클러스터의 독립형 노드로 활용하여 x86 서버에서 워크로드를 실행하는 비용 효율적인 대안을 제공할 수 있습니다. 이 카드는 Intel® Xeon® D 프로세서로 구동되며, 듀얼 25G Intel® 이더넷 E810 컨트롤러가 통합되어 있어 단일 루트 I/O 가상화를 지원합니다 .
고급 가상 보안 처리 장치(vSPU)를 탑재한 FortiGate VNF는 처리량 장벽을 극복하여 프라이빗 및 퍼블릭 클라우드에서 최고의 성능을 제공합니다. FortiGate VM을 사용하면 모든 애플리케이션을 안전하게 마이그레이션하고 클라우드에서 고가용성 대규모 가상 사설망(VPN)을 포함한 다양한 사용 사례를 지원할 수 있습니다. FortiGate 가상 방화벽(FortiGate-VM)은 차세대 방화벽 또는 VPN 게이트웨이로 구축할 수 있는 유연성을 갖춘 차세대 방화벽 기능을 제공합니다.
다음으로 Senao SX904를 OpenShift 클러스터에 쉽게 통합하고 OpenShift 가상화 엔진 과 OpenShift SR-IOV Network Operator 와 함께 구성하여 에지에서 가상 머신 워크로드를 배포하는 데 유연하고 확장성이 뛰어난 접근 방식을 제공하는 방법에 대한 실습 사례를 제공하겠습니다.
OpenShift 워커 노드에 SX904 설치
SX904는 일반 상용 서버와 동일한 방식으로 OpenShift 클러스터에 구축할 수 있습니다. SX904에는 DMTF Redfish 표준을 활용하여 자동 설치를 지원하는 베이스보드 관리 컨트롤러(BMC)가 포함되어 있으며, 가상 미디어를 지원하는 내장 웹 UI를 제공합니다(그림 1).

Senao SX904를 OpenShift 노드로 프로비저닝하는 방법에 대한 자세한 내용은 이 KB 문서 에서 확인하거나 공식 OpenShift 문서를 참조하세요.
가상 워크로드를 위한 클러스터 구성
클러스터가 배포되면 가상 네트워크 기능 실행에 필요한 구성을 적용할 수 있습니다. OpenShift Virtualization 연산자는 OpenShift Container Platform을 확장하여 컨테이너 기반 워크로드와 동일한 플랫폼에서 가상화된 워크로드를 호스팅하고 관리할 수 있도록 합니다.
이 설치 가이드에서는 SX904에 OpenShift Virtualization Engine을 설치하고 구성하는 방법에 대한 단계별 지침을 제공합니다.
영구 저장소 구성
OpenShift LVM Storage 오퍼레이터를 설치하여 OpenShift Container Platform 클러스터에서 논리 볼륨 관리자(LVM) 스토리지를 활성화하고 가상 워크로드에 대한 스토리지를 동적으로 프로비저닝하도록 구성할 수 있습니다. 영구 스토리지에는 LVM을 사용하는 것이 좋지만, 다른 영구 스토리지 프레임워크를 사용할 수도 있습니다.
OpenShift에서 LVM 스토리지 운영자를 활성화하는 전체 단계는 공식 OpenShift 컨테이너 플랫폼 문서를 참조하세요. Senao SX904에 동적 영구 스토리지를 설정하는 방법에 대한 기본 데모는 앞서 언급한 설치 가이드를 참조하세요 .
OpenShift Virtualization 운영자 구성
OpenShift Virtualization 연산자는 OpenShift Container Platform을 확장하여 컨테이너 기반 워크로드와 동일한 플랫폼에서 가상화된 워크로드를 호스팅하고 관리할 수 있도록 합니다. OpenShift Virtualization Engine을 활성화하는 전체 단계는 공식 OpenShift Container Platform 문서를 참조하세요.
Senao SX904에서 OpenShift Virtualization Engine을 구성하는 방법에 대한 기본 데모는 이 문서를 참조하세요 .
Senao SX904 SR-IOV 장치 구성
OpenShift SR-IOV 네트워크 운영자를 사용하면 SX904 Intel® 이더넷 컨트롤러를 구성하여 가상 머신 워크로드에 가상 기능(VF) 장치를 제공할 수 있습니다.
SR-IOV 네트워크 운영자를 활용하여 여러 SriovNetwork 사용자 지정 리소스를 구성하여 Fortinet Fortigate-VM 주변의 기본 네트워크 토폴로지를 시연할 수 있습니다. 예를 들어, SX904의 물리적 포트에 가상 파일 시스템(VF)을 생성하고 세 개의 개별 VLAN 태그가 지정된 네트워크를 정의하는 정책을 정의할 수 있습니다. 이더넷 E810 컨트롤러의 SR-IOV 기능을 활용하면 가상 네트워크 기능 내에서 여러 네트워크를 지원할 수 있습니다.
SX904에 가상 네트워크 기능 배포
이제 가상 워크로드를 구축할 준비가 되었습니다. Fortinet FortiGate-VM NGFW는 다양한 네트워크 위협으로부터 수상 경력에 빛나는 보호 기능을 제공하며, 프라이빗, 퍼블릭 및 통신사 클라우드 전반에 걸쳐 일관된 보안 정책을 시행할 수 있도록 지원합니다. SX904에 FortiGate-VM을 구축하여 몇 가지 기본 정책을 적용하는 모습을 시연해 보겠습니다. FortiGate-VM의 전체 기능에 대한 자세한 내용은 FortiGate-VM 데이터시트와 Fortinet 제품 목록 에서 확인하실 수 있습니다 .
FortiGate-VM 컨테이너 이미지 생성
- Fortinet 지원에 로그인하여 VM을 다운로드하여 FortiOS QCOW2 이미지를 다운로드하세요. 자세한 내용은 Fortinet 공식 문서 에서 확인할 수 있습니다 .
- FortiOS 컨테이너 이미지를 생성하고 업로드하세요. FortiOS qcow2 이미지와 같은 디렉터리에 다음 Dockerfile을 생성하세요. 컨테이너화된 이미지 에 대한 자세한 내용은 에서 확인할 수 있습니다 .
FROM scratch ADD --chown=107:107 fortios.qcow2 /disk/
- OpenShift 클러스터에서 접근할 수 있는 저장소에 이미지를 빌드하고 푸시합니다.
podman build -t <private-repository-address>/fortios:v7.6.0 podman push <private-repository-address>/fortios:v7.6.0
cloud-init을 사용하여 사용자 정의 구성 생성
FortiGate 라이선스 파일과 결합하여 MIME 기반 cloud-init 구성 파일을 생성할 수 있는 userData를 정의합니다. 이 구성 파일은 FortiOS 구성 파일이나 라이브 인스턴스에서 가져온 백업 파일일 수 있습니다. 이 데모에서는 이전에 구성한 VM의 백업을 사용하여 배포를 구축합니다. 다음은 이 파일에서 주목할 만한 몇 가지 섹션입니다.
system_global:
admintimeout: 480
alias: <..>
gui-auto-upgrade-setup-warning: disable
hostname: <..>
timezone: "US/Pacific"
system_interface:
- port1:
vdom: "root"
ip: 10.240.4.99 255.255.255.0
allowaccess: ping https ssh snmp http telnet fgfm radius-acct probe-response ftm
type: physical
snmp-index: 1
mtu-override: enable
mtu: 1400
- port2:
vdom: "root"
ip: 10.100.30.1 255.255.255.0
allowaccess: ping https ssh snmp http telnet fgfm radius-acct probe-response fabric
type: physical
device-identification: enable
lldp-transmission: enable
role: lan
snmp-index: 2
- port3:
vdom: "root"
ip: 172.16.1.1 255.255.255.0
allowaccess: ping https ssh snmp http telnet fgfm radius-acct probe-response fabric
type: physical
device-identification: enable
lldp-transmission: enable
role: lan
snmp-index: 3
...
router_static:
- 2:
gateway: 10.240.4.10
distance: 30
priority: 5
device: "port1"
...
- write-mime-multipart 유틸리티를 사용하여 cloud-init 파일을 생성합니다.
# dnf install cloud-utils
...
Complete!
# write-mime-multipart --h
Usage: write-mime-multipart [options]
Options:
-h, --help show this help message and exit
-o FILE, --output=FILE
write output to FILE [default -]
-z, --gzip compress output
-d DEFTYPE, --default=DEFTYPE
default mime type [default text/plain]
--delim=DELIM delimiter [default :]
# write-mime-multipart -o cloudinit.txt cli-commands.txt license.txt- cloud-init 파일의 내용을 기반으로 OpenShift에서 비밀을 생성하여 이 구성을 FortiGate VM에 제공합니다.
# oc create secret generic forticonfig-fortigate-test --from-file=userdata=cloudinit.txt -n sx904-vms secret/forticonfig-fortigate-test created
Senao SX904에 FortiGate-VM VNF 배포
FortiGate-VM에 대한 VirtualMachine 정의를 생성합니다. 이전 단계에서 생성한 각 네트워크에 해당하는 SR-IOV 인터페이스를 지정합니다.
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
name: fortios-02
namespace: sx904-vms
spec:
dataVolumeTemplates:
- apiVersion: cdi.kubevirt.io/v1beta1
kind: DataVolume
metadata:
creationTimestamp: null
name: fortios-02
spec:
source:
registry:
secretRef: local-registry-fortios
url: 'docker://<private-repository-address>/fortios:v7.6.0'
storage:
resources:
requests:
storage: 30Gi
running: true
template:
metadata:
labels:
kubevirt.io/size: small
kubevirt.io/domain: fortios-02
spec:
domain:
cpu:
cores: 8
devices:
disks:
- name: rootdisk
disk:
bus: virtio
interfaces:
- name: default
macAddress: 02:9b:48:00:10:03
masquerade: {}
model: virtio
- name: management_vlan10
sriov: {}
macAddress: '02:23:10:00:00:09'
- name: trusted_vlan2
sriov: {}
macAddress: '02:23:10:00:00:11'
- name: untrusted_vlan3
sriov: {}
macAddress: '02:23:10:00:00:13'
resources:
requests:
memory: 8196M
networks:
- name: default
pod: {}
- name: management_vlan10
multus:
networkName: sriov-sx904-enp244s0f0-vlan10
- name: trusted_vlan2
multus:
networkName: sriov-sx904-enp244s0f0-vlan2
- name: untrusted_vlan3
multus:
networkName: sriov-sx904-enp244s0f1-vlan3
volumes:
- name: rootdisk
dataVolume:
name: fortios-02
- name: cloudinitconfig
cloudInitConfigDrive:
secretRef:
name: forticonfig-fortigate-test
클러스터에 VirtualMachine 리소스 정의를 적용합니다.
# oc create -f forigate_vm.yaml virtualmachine/fortios-02 created
OpenShift 웹 콘솔의 Virtualization 탭 에서 가상 머신이 생성된 것을 볼 수 있습니다 (그림 2).

기본적으로 FortiGate-VM의 포트 1은 관리 네트워크 내의 모든 컴퓨터에서 웹 콘솔에 액세스할 수 있는 관리 인터페이스를 제공합니다(그림 3).

cloud-init에서 정의한 포트가 해당 네트워크에 구성된 것을 볼 수 있습니다(그림 4).

SX904 노드에서는 VF가 FortiGate-VM의 각 포트에 제대로 연결되어 있는 것을 볼 수 있습니다.
[core@wsfd-advnetlab229-intel-ptl ~]$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s30u1u2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 1000
link/ether 32:90:52:64:7c:1f brd ff:ff:ff:ff:ff:ff
3: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master ovs-system state UP mode DEFAULT group default qlen 1000
link/ether 88:dc:97:44:ed:3c brd ff:ff:ff:ff:ff:ff
4: enp244s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 88:dc:97:44:ed:3f brd ff:ff:ff:ff:ff:ff
vf 0 link/ether 86:27:fb:9b:3f:18 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off
vf 1 link/ether 2e:f7:01:08:51:a4 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off
vf 2 link/ether 02:23:10:00:00:09 brd ff:ff:ff:ff:ff:ff, vlan 10, spoof checking on, link-state auto, trust off
vf 3 link/ether 02:9b:48:00:10:03 brd ff:ff:ff:ff:ff:ff, vlan 10, spoof checking on, link-state auto, trust off
vf 4 link/ether 3a:76:9d:41:e6:fe brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off
vf 5 link/ether ce:7e:7d:95:fb:0b brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off
vf 6 link/ether 62:2e:18:4a:cf:69 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off
vf 7 link/ether b2:90:26:ec:26:94 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off
vf 8 link/ether be:c8:98:60:e8:f7 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off
vf 9 link/ether 36:b8:a0:30:02:9c brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off
vf 10 link/ether da:01:45:17:40:ec brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off
vf 11 link/ether 02:23:10:00:00:11 brd ff:ff:ff:ff:ff:ff, vlan 2, spoof checking on, link-state auto, trust off
5: enp244s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 88:dc:97:44:ed:40 brd ff:ff:ff:ff:ff:ff
vf 0 link/ether 02:23:10:00:00:13 brd ff:ff:ff:ff:ff:ff, vlan 3, spoof checking on, link-state auto, trust off
vf 1 link/ether d6:d0:aa:d4:15:9f brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off
vf 2 link/ether 22:f6:4c:cf:14:d4 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off
vf 3 link/ether 36:8f:31:a5:6c:76 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off
vf 4 link/ether 5a:45:5a:07:60:62 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off
vf 5 link/ether da:86:87:5c:f5:e2 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off
6: enp244s0f2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 88:dc:97:44:ed:3d brd ff:ff:ff:ff:ff:ff
7: enp244s0f3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 88:dc:97:44:ed:3e brd ff:ff:ff:ff:ff:ff
방화벽이 서브넷 간에 기본적인 3계층 패킷 전달을 수행할 수 있는지 확인하기 위한 간단한 실험을 수행할 수 있습니다. 기본적으로 신뢰할 수 있는 네트워크의 시스템에서는 FortiGate-VM의 포트에 접속할 수 있습니다. 하지만 신뢰할 수 없는 네트워크의 시스템에는 접속할 수 없습니다.
[trusted@10.100.30.2]# traceroute 172.16.1.3 traceroute to 172.16.1.3 (172.16.1.3), 30 hops max, 60 byte packets 1 10.100.30.1 (10.100.30.1) 0.155 ms 0.136 ms 0.130 ms 2 * * * 3 * * * 4 * * * ... 29 * * * 30 * * *
FortiGate-VM 웹 UI에서 이를 허용하기 위해 기본 방화벽 정책 규칙을 추가할 수 있습니다(그림 5).

[trusted@10.100.30.2]# traceroute 172.16.1.3 traceroute to 172.16.1.3 (172.16.1.3), 30 hops max, 60 byte packets 1 10.100.30.1 (10.100.30.1) 0.125 ms 0.114 ms 0.108 ms 2 172.16.1.3 (172.16.1.3) 12.700 ms 12.695 ms 12.690 ms
마지막 생각
일상적인 구성을 통해 SX904의 컴퓨팅 리소스를 활용하여 이 카드가 데이터센터에 통합되어 호스트의 가상 네트워크 기능 워크로드를 오프로드하고 전반적인 효율성과 성능을 향상시키는 방식을 시연할 수 있습니다. Fortinet의 FortiGate-VM 차세대 방화벽을 범용 고객 댁내 장비(uCPE) 솔루션으로 구축함으로써, 이러한 접근 방식이 기존 하드웨어 기반 네트워크 어플라이언스에 비해 유연하고 확장 가능하며 비용 효율적인 대안을 어떻게 제공하는지 보여드립니다.
Red Hat OpenShift와 OpenShift Virtualization Engine으로 구동되는 SX904는 Kubernetes 클라우드 기반 인프라의 민첩성을 유지하면서 엣지에서 VNF를 실행할 수 있는 강력한 플랫폼임이 입증되었습니다.