3.2. 다른 CNI 플러그인을 사용하여 보조 네트워크 생성


보조 네트워크의 특정 구성 필드는 다음 섹션에 설명되어 있습니다.

3.2.1. 브리지 보조 네트워크 구성

다음 오브젝트는 브리지 CNI 플러그인의 구성 매개변수를 설명합니다.

Expand
표 3.3. 브릿지 CNI 플러그인 JSON 구성 오브젝트
필드유형설명

cniVersion

string

CNI 사양 버전입니다. 0.3.1 값이 필요합니다.

name

string

CNO 구성에 대해 이전에 제공한 name 매개변수의 값입니다.

type

string

구성할 CNI 플러그인의 이름: bridge.

ipam

object

IPAM CNI 플러그인의 구성 오브젝트입니다. 플러그인은 연결 정의에 대한 IP 주소 할당을 관리합니다.

Bridge

string

선택 사항: 사용할 가상 브리지의 이름을 지정합니다. 브릿지 인터페이스가 호스트에 없으면 생성됩니다. 기본값은 cni0입니다.

ipMasq

boolean

선택 사항: 가상 네트워크를 떠나는 트래픽에 대해 IP 마스커레이딩을 활성화하려면 true 로 설정합니다. 모든 트래픽의 소스 IP 주소가 브리지의 IP 주소로 다시 작성됩니다. 브리지에 IP 주소가 없으면 이 설정이 적용되지 않습니다. 기본값은 false입니다.

isGateway

boolean

선택 사항: 브릿지에 IP 주소를 할당하려면 true 로 설정합니다. 기본값은 false입니다.

isDefaultGateway

boolean

선택 사항: 브릿지를 가상 네트워크의 기본 게이트웨이로 구성하려면 true 로 설정합니다. 기본값은 false입니다. isDefaultGatewaytrue로 설정되면 isGateway도 자동으로 true로 설정됩니다.

forceAddress

boolean

선택 사항: 이전에 할당된 IP 주소를 가상 브리지에 할당할 수 있도록 true 로 설정합니다. false로 설정하면 중첩되는 하위 집합의 IPv4 주소 또는 IPv6 주소가 가상 브릿지에 지정되는 경우 오류가 발생합니다. 기본값은 false입니다.

hairpinMode

boolean

선택 사항: 가상 브리지가 수신한 가상 포트를 통해 이더넷 프레임을 다시 보낼 수 있도록 하려면 true 로 설정합니다. 이 모드를 반사 릴레이라고도 합니다. 기본값은 false입니다.

promiscMode

boolean

선택 사항: 브릿지에서 무차별 모드를 활성화하려면 true 로 설정합니다. 기본값은 false입니다.

vlan

string

선택 사항: VLAN(가상 LAN) 태그를 정수 값으로 지정합니다. 기본적으로 VLAN 태그는 할당되지 않습니다.

preserveDefaultVlan

string

선택 사항: 기본 vlan을 브리지에 연결된 veth 끝에 유지해야 하는지 여부를 나타냅니다. 기본값은 true입니다.

vlanTrunk

list

선택 사항: VLAN 트렁크 태그를 할당합니다. 기본값은 none 입니다.

mtu

integer

선택 사항: 최대 전송 단위(MTU)를 지정된 값으로 설정합니다. 기본값은 커널에 의해 자동으로 설정됩니다.

enabledad

boolean

선택 사항: 컨테이너 사이드 veth 에 대해 중복 주소 탐지를 활성화합니다. 기본값은 false입니다.

macspoofchk

boolean

선택 사항: mac 스푸핑 검사를 활성화하여 컨테이너에서 발생하는 트래픽을 인터페이스의 mac 주소로 제한합니다. 기본값은 false입니다.

참고

VLAN 매개 변수는 veth 의 호스트에서 VLAN 태그를 구성하고 브리지 인터페이스에서 vlan_filtering 기능도 활성화합니다.

참고

L2 네트워크에 대한 uplink를 구성하려면 다음 명령을 사용하여 uplink 인터페이스에서 VLAN을 허용해야 합니다.

$  bridge vlan add vid VLAN_ID dev DEV
Copy to Clipboard Toggle word wrap

3.2.1.1. 브릿지 CNI 플러그인 구성 예

다음 예제에서는 bridge-net 이라는 보조 네트워크를 구성합니다.

{
  "cniVersion": "0.3.1",
  "name": "bridge-net",
  "type": "bridge",
  "isGateway": true,
  "vlan": 2,
  "ipam": {
    "type": "dhcp"
    }
}
Copy to Clipboard Toggle word wrap

3.2.2. Bond CNI 보조 네트워크 구성

본딩 컨테이너 네트워크 인터페이스(Bond CNI)를 사용하면 여러 네트워크 인터페이스를 컨테이너 내의 단일 논리 "bonded" 인터페이스로 집계하여 네트워크 중복성 및 내결함성을 향상시킬 수 있습니다. 이 플러그인과의 본딩에는 SR-IOV VF(가상 기능)만 지원됩니다.

다음 표에서는 Bond CNI 플러그인의 구성 매개변수를 설명합니다.

Expand
표 3.4. 본딩 CNI 플러그인 JSON 구성 오브젝트
필드유형설명

name

string

이 CNI 네트워크 연결 정의에 지정된 이름을 지정합니다. 이 이름은 컨테이너 내의 인터페이스를 식별하고 참조하는 데 사용됩니다.

cniVersion

string

CNI 사양 버전입니다.

type

string

구성할 CNI 플러그인의 이름을 지정합니다. bond.

miimon

string

ARP(Address Resolution Protocol) 링크 모니터링 빈도를 밀리초 단위로 지정합니다. 이 매개 변수는 본딩 인터페이스에서 ARP 요청을 보내는 빈도를 정의하여 집계된 인터페이스의 가용성을 확인합니다.

mtu

integer

선택 사항: 본딩의 최대 전송 단위(MTU)를 지정합니다. 기본값은 1500입니다.

failOverMac

integer

선택 사항: 본딩의 failOverMac 설정을 지정합니다. 기본값은 0입니다.

mode

string

본딩 정책을 지정합니다.

linksInContainer

boolean

선택 사항: 본딩을 위해 의도한 네트워크 인터페이스를 본딩이 시작될 때 컨테이너의 네트워크 네임스페이스 내에서 직접 생성 및 사용할 수 있는지 여부를 지정합니다. 기본값인 false 인 경우 CNI 플러그인은 본딩을 생성하기 전에 먼저 호스트 시스템에서 이러한 인터페이스를 찾습니다.

links

object

본딩할 인터페이스를 지정합니다.

ipam

object

IPAM CNI 플러그인의 구성 오브젝트입니다. 플러그인은 연결 정의에 대한 IP 주소 할당을 관리합니다.

3.2.2.1. 본딩 CNI 플러그인 구성 예

다음 예제에서는 bond-net1 이라는 보조 네트워크를 구성합니다.

{
 "type": "bond",
 "cniVersion": "0.3.1",
 "name": "bond-net1",
 "mode": "active-backup",
 "failOverMac": 1,
 "linksInContainer": true,
 "miimon": "100",
 "mtu": 1500,
 "links": [
       {"name": "net1"},
       {"name": "net2"}
   ],
  "ipam": {
        "type": "host-local",
        "subnet": "10.56.217.0/24",
        "routes": [{
        "dst": "0.0.0.0/0"
        }],
        "gateway": "10.56.217.1"
    }
}
Copy to Clipboard Toggle word wrap

3.2.3. 호스트 장치 보조 네트워크 구성

참고

device ,hwaddr,kernelpath 또는 pciBusID 매개변수 중 하나만 설정하여 네트워크 장치를 지정합니다.

다음 오브젝트는 호스트 장치 CNI 플러그인의 구성 매개변수를 설명합니다.

Expand
표 3.5. 호스트 장치 CNI 플러그인 JSON 구성 오브젝트
필드유형설명

cniVersion

string

CNI 사양 버전입니다. 0.3.1 값이 필요합니다.

name

string

CNO 구성에 대해 이전에 제공한 name 매개변수의 값입니다.

type

string

구성할 CNI 플러그인의 이름: host-device.

device

string

선택사항: 장치 이름(예: eth0 )입니다.

hwaddr

string

선택사항: 장치 하드웨어 MAC 주소입니다.

kernelpath

string

선택 사항: Linux 커널 장치 경로(예: /sys/devices/pci0000:00/0000:00:1f.6 )

pciBusID

string

선택 사항: 네트워크 장치의 PCI 주소(예: 0000:00:1f.6 )

3.2.3.1. 호스트 장치 구성 예

다음 예제에서는 hostdev-net 이라는 보조 네트워크를 구성합니다.

{
  "cniVersion": "0.3.1",
  "name": "hostdev-net",
  "type": "host-device",
  "device": "eth1"
}
Copy to Clipboard Toggle word wrap

3.2.4. VLAN 보조 네트워크 구성

다음 오브젝트는 VLAN, vlan, CNI 플러그인의 구성 매개변수를 설명합니다.

Expand
표 3.6. VLAN CNI 플러그인 JSON 구성 오브젝트
필드유형설명

cniVersion

string

CNI 사양 버전입니다. 0.3.1 값이 필요합니다.

name

string

CNO 구성에 대해 이전에 제공한 name 매개변수의 값입니다.

type

string

구성할 CNI 플러그인의 이름: vlan.

master

string

네트워크 연결과 연결할 이더넷 인터페이스입니다. 마스터를 지정하지 않으면 기본 네트워크 경로에 대한 인터페이스가 사용됩니다.

vlanId

integer

vlan 의 ID를 설정합니다.

ipam

object

IPAM CNI 플러그인의 구성 오브젝트입니다. 플러그인은 연결 정의에 대한 IP 주소 할당을 관리합니다.

mtu

integer

선택 사항: 최대 전송 단위(MTU)를 지정된 값으로 설정합니다. 기본값은 커널에 의해 자동으로 설정됩니다.

dns

integer

선택 사항: 반환할 DNS 정보입니다. 예를 들어 우선순위가 지정된 DNS 이름 서버 목록입니다.

linkInContainer

boolean

선택 사항: 마스터 인터페이스가 컨테이너 네트워크 네임스페이스에 있는지 또는 기본 네트워크 네임스페이스에 있는지 여부를 지정합니다. 컨테이너 네임스페이스 마스터 인터페이스 사용을 요청하려면 값을 true 로 설정합니다.

중요

CNI 플러그인은 동일한 마스터 인터페이스에서 동일한 vlanId 를 사용하여 여러 vlan 하위 인터페이스를 생성할 수 없기 때문에 vlan 구성이 포함된 NetworkAttachmentDefinition CRD(사용자 정의 리소스 정의)는 노드의 단일 Pod에서만 사용할 수 있습니다.

3.2.4.1. VLAN 구성 예

다음 예제에서는 vlan -net 이라는 보조 네트워크가 있는 vlan 구성을 보여줍니다.

{
  "name": "vlan-net",
  "cniVersion": "0.3.1",
  "type": "vlan",
  "master": "eth0",
  "mtu": 1500,
  "vlanId": 5,
  "linkInContainer": false,
  "ipam": {
      "type": "host-local",
      "subnet": "10.1.1.0/24"
  },
  "dns": {
      "nameservers": [ "10.1.1.1", "8.8.8.8" ]
  }
}
Copy to Clipboard Toggle word wrap

3.2.5. IPVLAN 보조 네트워크에 대한 구성

다음 오브젝트는 IPVLAN, ipvlan, CNI 플러그인의 구성 매개변수를 설명합니다.

Expand
표 3.7. IPVLAN CNI 플러그인 JSON 구성 오브젝트
필드유형설명

cniVersion

string

CNI 사양 버전입니다. 0.3.1 값이 필요합니다.

name

string

CNO 구성에 대해 이전에 제공한 name 매개변수의 값입니다.

type

string

구성할 CNI 플러그인의 이름: ipvlan.

ipam

object

IPAM CNI 플러그인의 구성 오브젝트입니다. 플러그인은 연결 정의에 대한 IP 주소 할당을 관리합니다. 플러그인이 연결되어 있지 않으면 이 작업이 필요합니다.

mode

string

선택사항: 가상 네트워크의 작동 모드입니다. 값은 l2, l3 또는 l3s여야 합니다. 기본값은 l2입니다.

master

string

선택 사항: 네트워크 연결과 연결할 이더넷 인터페이스입니다. 마스터를 지정하지 않으면 기본 네트워크 경로에 대한 인터페이스가 사용됩니다.

mtu

integer

선택 사항: 최대 전송 단위(MTU)를 지정된 값으로 설정합니다. 기본값은 커널에 의해 자동으로 설정됩니다.

linkInContainer

boolean

선택 사항: 마스터 인터페이스가 컨테이너 네트워크 네임스페이스에 있는지 또는 기본 네트워크 네임스페이스에 있는지 여부를 지정합니다. 컨테이너 네임스페이스 마스터 인터페이스 사용을 요청하려면 값을 true 로 설정합니다.

중요
  • ipvlan 오브젝트에서는 가상 인터페이스가 마스터 인터페이스와 통신할 수 없습니다. 따라서 컨테이너는 ipvlan 인터페이스를 사용하여 호스트에 연결할 수 없습니다. 컨테이너가PTP(Precision Time Protocol)를 지원하는 네트워크와 같이 호스트에 대한 연결을 제공하는 네트워크에 참여하고 있는지 확인합니다.
  • 단일 마스터 인터페이스는 macvlanipvlan 을 둘 다 사용하도록 동시에 구성할 수 없습니다.
  • 인터페이스와 무관할 수 없는 IP 할당 체계의 경우 ipvlan 플러그인은 이 논리를 처리하는 이전 플러그인과 연결할 수 있습니다. 마스터 를 생략한 경우 이전 결과에 슬레이브를 부여하려면 ipvlan 플러그인에 대한 단일 인터페이스 이름이 포함되어야 합니다. ipam 을 생략하면 이전 결과가 ipvlan 인터페이스를 구성하는 데 사용됩니다.

3.2.5.1. IPVLAN CNI 플러그인 구성 예

다음 예제에서는 ipvlan-net 이라는 보조 네트워크를 구성합니다.

{
  "cniVersion": "0.3.1",
  "name": "ipvlan-net",
  "type": "ipvlan",
  "master": "eth1",
  "linkInContainer": false,
  "mode": "l3",
  "ipam": {
    "type": "static",
    "addresses": [
       {
         "address": "192.168.10.10/24"
       }
    ]
  }
}
Copy to Clipboard Toggle word wrap

3.2.6. MACVLAN 보조 네트워크 구성

다음 오브젝트는 MACVLAN(Container Network Interface) 플러그인의 구성 매개변수를 설명합니다.

Expand
표 3.8. MACVLAN CNI 플러그인 JSON 구성 오브젝트
필드유형설명

cniVersion

string

CNI 사양 버전입니다. 0.3.1 값이 필요합니다.

name

string

CNO 구성에 대해 이전에 제공한 name 매개변수의 값입니다.

type

string

구성할 CNI 플러그인의 이름: macvlan.

ipam

object

IPAM CNI 플러그인의 구성 오브젝트입니다. 플러그인은 연결 정의에 대한 IP 주소 할당을 관리합니다.

mode

string

선택 사항: 가상 네트워크에 대한 트래픽 가시성을 구성합니다. bridge, passthru, private 또는 vepa 중 하나여야 합니다. 값을 입력하지 않으면 기본값은 bridge입니다.

master

string

선택 사항: 새로 생성된 macvlan 인터페이스와 연결할 호스트 네트워크 인터페이스입니다. 값을 지정하지 않으면 기본 경로 인터페이스가 사용됩니다.

mtu

integer

선택 사항: 지정된 값으로 최대 전송 단위(MTU)입니다. 기본값은 커널에 의해 자동으로 설정됩니다.

linkInContainer

boolean

선택 사항: 마스터 인터페이스가 컨테이너 네트워크 네임스페이스에 있는지 또는 기본 네트워크 네임스페이스에 있는지 여부를 지정합니다. 컨테이너 네임스페이스 마스터 인터페이스 사용을 요청하려면 값을 true 로 설정합니다.

참고

플러그인 구성에 대한 마스터 키를 지정하는 경우 기본 네트워크 플러그인과 연결된 것과 다른 물리적 네트워크 인터페이스를 사용하여 가능한 충돌을 방지합니다.

3.2.6.1. MACVLAN CNI 플러그인 구성 예

다음 예제에서는 macvlan-net 이라는 보조 네트워크를 구성합니다.

{
  "cniVersion": "0.3.1",
  "name": "macvlan-net",
  "type": "macvlan",
  "master": "eth1",
  "linkInContainer": false,
  "mode": "bridge",
  "ipam": {
    "type": "dhcp"
    }
}
Copy to Clipboard Toggle word wrap

3.2.7. Cryostat 보조 네트워크에 대한 구성

다음 오브젝트는 Cryostat CNI 플러그인의 구성 매개변수를 설명합니다.

Expand
표 3.9. Buildah CNI 플러그인 JSON 구성 오브젝트
필드유형설명

cniVersion

string

CNI 사양 버전입니다. 0.3.1 값이 필요합니다.

name

string

CNO 구성에 대해 이전에 제공한 name 매개변수의 값입니다.

type

string

구성할 CNI 플러그인의 이름입니다. 탭합니다.

mac

string

선택 사항: 인터페이스에 지정된 MAC 주소를 요청합니다.

mtu

integer

선택 사항: 최대 전송 단위(MTU)를 지정된 값으로 설정합니다. 기본값은 커널에 의해 자동으로 설정됩니다.

selinuxcontext

string

선택 사항: 탭 장치와 연결할 SELinux 컨텍스트입니다.

참고

OpenShift Container Platform에는 system_u:system_r:container_t:s0 값이 필요합니다.

multiQueue

boolean

선택 사항: 다중 큐를 활성화하려면 true 로 설정합니다.

소유자

integer

선택 사항: 탭 장치를 소유한 사용자입니다.

group

integer

선택 사항: 탭 장치를 소유한 그룹입니다.

Bridge

string

선택 사항: 탭 장치를 기존 브리지의 포트로 설정합니다.

3.2.7.1. 탭 구성 예

다음 예제에서는 mynet 이라는 보조 네트워크를 구성합니다.

{
 "name": "mynet",
 "cniVersion": "0.3.1",
 "type": "tap",
 "mac": "00:11:22:33:44:55",
 "mtu": 1500,
 "selinuxcontext": "system_u:system_r:container_t:s0",
 "multiQueue": true,
 "owner": 0,
 "group": 0
 "bridge": "br1"
}
Copy to Clipboard Toggle word wrap

3.2.7.2. Cryostat CNI 플러그인에 대한 SELinux 부울 설정

container_t SELinux 컨텍스트를 사용하여 탭 장치를 생성하려면 MCO(Machine Config Operator)를 사용하여 호스트에서 container_use_devices 부울을 활성화합니다.

사전 요구 사항

  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. 다음 세부 정보를 사용하여 setsebool-container-use-devices.yaml 과 같은 새 YAML 파일을 생성합니다.

    apiVersion: machineconfiguration.openshift.io/v1
    kind: MachineConfig
    metadata:
      labels:
        machineconfiguration.openshift.io/role: worker
      name: 99-worker-setsebool
    spec:
      config:
        ignition:
          version: 3.2.0
        systemd:
          units:
          - enabled: true
            name: setsebool.service
            contents: |
              [Unit]
              Description=Set SELinux boolean for the TAP CNI plugin
              Before=kubelet.service
    
              [Service]
              Type=oneshot
              ExecStart=/usr/sbin/setsebool container_use_devices=on
              RemainAfterExit=true
    
              [Install]
              WantedBy=multi-user.target graphical.target
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 실행하여 새 MachineConfig 오브젝트를 만듭니다.

    $ oc apply -f setsebool-container-use-devices.yaml
    Copy to Clipboard Toggle word wrap
    참고

    MachineConfig 오브젝트에 변경 사항을 적용하면 변경 사항이 적용된 후 영향을 받는 모든 노드가 정상적으로 재부팅됩니다. 이 업데이트를 적용하는 데 시간이 다소 걸릴 수 있습니다.

  3. 다음 명령을 실행하여 변경 사항이 적용되었는지 확인합니다.

    $ oc get machineconfigpools
    Copy to Clipboard Toggle word wrap

    예상 출력

    NAME        CONFIG                                                UPDATED   UPDATING   DEGRADED   MACHINECOUNT   READYMACHINECOUNT   UPDATEDMACHINECOUNT   DEGRADEDMACHINECOUNT   AGE
    master      rendered-master-e5e0c8e8be9194e7c5a882e047379cfa      True      False      False      3              3                   3                     0                      7d2h
    worker      rendered-worker-d6c9ca107fba6cd76cdcbfcedcafa0f2      True      False      False      3              3                   3                     0                      7d
    Copy to Clipboard Toggle word wrap

    참고

    모든 노드는 업데이트 및 준비 상태에 있어야 합니다.

3.2.8. 보조 네트워크에서 route-override 플러그인을 사용하여 경로 구성

다음 오브젝트는 route-override CNI 플러그인의 구성 매개변수를 설명합니다.

Expand
표 3.10. 경로 덮어쓰기 CNI 플러그인 JSON 구성 오브젝트
필드유형설명

type

string

구성할 CNI 플러그인의 이름: route-override.

flushroutes

boolean

선택 사항: 기존 경로를 플러시하려면 true 로 설정합니다.

flushgateway

boolean

선택 사항: 기본 경로 이름을 게이트웨이 경로로 플러시하려면 true 로 설정합니다.

delroutes

object

선택 사항: 컨테이너 네임스페이스에서 삭제할 경로 목록을 지정합니다.

addroutes

object

선택 사항: 컨테이너 네임스페이스에 추가할 경로 목록을 지정합니다. 각 경로는 dst 및 선택적 gw 필드가 있는 사전입니다. gw 를 생략하면 플러그인은 기본 게이트웨이 값을 사용합니다.

skipcheck

boolean

선택 사항: check 명령을 건너뛰려면 true 로 설정합니다. 기본적으로 CNI 플러그인은 컨테이너 라이프사이클 중에 네트워크 설정을 확인합니다. route-override 를 사용하여 경로를 동적으로 수정할 때 이 검사를 건너뛰면 최종 구성이 업데이트된 경로를 반영하는지 확인합니다.

3.2.8.1. route-override 플러그인 구성 예

route-override CNI는 상위 CNI와 연결할 때 사용하도록 설계된 CNI 유형입니다. 독립적으로 작동하지 않지만 상위 CNI를 사용하여 먼저 네트워크 인터페이스를 생성하고 라우팅 규칙을 수정할 수 있기 전에 IP 주소를 할당합니다.

다음 예제에서는 mymacvlan 이라는 보조 네트워크를 구성합니다. 상위 CNI는 eth1 에 연결된 네트워크 인터페이스를 생성하고 host-local IPAM을 사용하여 192.168.1.0/24 범위의 IP 주소를 할당합니다. 그런 다음 route-override CNI가 상위 CNI에 연결되고 기존 경로를 플러시하고, 192.168.0.0/24에 대한 경로를 삭제하고, 사용자 지정 게이트웨이를 사용하여 192.168.0.0/24 에 대한 새 경로를 추가하여 라우팅 규칙을 수정합니다.

{
    "cniVersion": "0.3.0",
    "name": "mymacvlan",
    "plugins": [
        {
            "type": "macvlan",         
1

            "master": "eth1",
            "mode": "bridge",
            "ipam": {
                "type": "host-local",
                "subnet": "192.168.1.0/24"
            }
        },
        {
            "type": "route-override",    
2

            "flushroutes": true,
            "delroutes": [
                {
                    "dst": "192.168.0.0/24"
                }
            ],
            "addroutes": [
                {
                    "dst": "192.168.0.0/24",
                    "gw": "10.1.254.254"
                }
            ]
        }
    ]
}
Copy to Clipboard Toggle word wrap
1
상위 CNI는 eth1 에 연결된 네트워크 인터페이스를 생성합니다.
2
연결된 경로 조정 CNI 는 라우팅 규칙을 수정합니다.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat