클라우드 네이티브 라우터 Helm 차트 사용자 지정
주니퍼 클라우드 네이티브 라우터는 L2, L3 또는 L2-L3* 모드로 구축 및 운영할 수 있습니다. 배포 전에 파일에서 적절한 속성을 values.yaml
편집하여 배포 모드를 구성합니다.
-
L2-L3 구축 모드는 주니퍼 클라우드 네이티브 라우터 릴리스 23.2의 주니퍼 기술 프리뷰(테크 프리뷰) 기능입니다.
-
fabricInterface
파일 키values.yaml
에서 다음을 수행합니다.-
모든 인터페이스
interface_mode
에 구성된 키가 있으면 구축 모드는 L2가 됩니다. -
하나 이상의 인터페이스에
interface_mode
키가 구성되어 있고 나머지 인터페이스에 키가 없는interface_mode
경우 구축 모드는 L2-L3이 됩니다. -
인터페이스
interface_mode
에 키가 구성되어 있지 않은 경우 구축 모드는 L3이 됩니다.
-
파일을 사용하여 helm 차트를 Juniper_Cloud_Native_Router_version-number/helmchart/values.yaml
사용자 지정합니다. 헴 차트의 구성 키는 아래 표에 나와 있습니다.
키 | 추가 키 구성 | 설명 |
---|---|---|
레지스트리 | vRouter, cRPD 및 jcnr-cni 컨테이너 이미지가 호스팅되는 Docker 레지스트리를 정의합니다. 기본값은 입니다 enterprise-hub.juniper.net . |
|
저장소 | (선택 사항) vRouter, cRPD 및 jcnr-cni 컨테이너 이미지에 대한 리포지토리 경로를 정의합니다. 이것은 전역 키이며 "공통" 섹션 아래의 "저장소" 경로보다 우선합니다. | |
이미지 풀시크릿 | (선택 사항) 레지스트리 인증 자격 증명을 정의합니다. 주니퍼 리포지토리 또는 프라이빗 레지스트리에 대한 자격 증명을 구성할 수 있습니다. | |
registry자격 증명 | Docker 레지스트리 자격 증명의 Base64 표현입니다. 자세한 정보는 Configure Repository Credentials 항목을 참조하십시오. | |
시크릿 이름 | 생성될 시크릿 오브젝트의 이름. | |
보통의 | vRouter, cRPD 및 jcnr-cni 컨테이너 이미지에 대한 응답 경로와 태그를 정의합니다. | |
저장소 | 저장소 경로를 정의합니다. 기본값은 입니다 atom-docker/cn2/bazel-build/dev/ . 정의된 경우 전역 리포지토리 키가 우선합니다. |
|
태그 | 이미지 태그를 정의합니다. 기본값은 클라우드 네이티브 라우터 릴리스 버전에 적합한 태그 번호로 구성됩니다. | |
복제본 | (선택 사항) cRPD의 복제본 수를 나타냅니다. 값을 지정하지 않으면 기본값 1이 고려됩니다. 이 키의 값은 다중 노드 클러스터에 대해 지정해야 합니다. | |
'storageClass' | (선택 사항) cRPD에 대한 스토리지 클래스의 이름을 나타냅니다. gp2를 사용할 수 있는 AWS와 같은 클라우드 배포에 대해 이 키를 지정해야 합니다. |
|
noLocalSwitching | (선택 사항) 브리지 도메인의 인터페이스가 이더넷 프레임 사본을 송수신하지 못하도록 합니다. 하나 이상의 쉼표로 구분된 VLAN ID를 입력하여 VLAN ID에 속하는 인터페이스가 서로 프레임을 전송하지 않도록 합니다. 이 키는 L2 및 L2-L3 구축에만 적용됩니다. 이 키를 활성화하면 모든 액세스 인터페이스에 기능이 제공됩니다. 트렁크 인터페이스에서 기능을 활성화하려면 fabricInterface 키에서 no-local-switching 키를 구성합니다. | |
패브릭인터페이스 | DPDK에 바인딩할 인터페이스 목록을 제공합니다. 인터페이스 이름 대신 서브넷을 제공할 수도 있습니다. 인터페이스 이름과 서브넷이 모두 지정된 경우 인터페이스 이름이 서브넷/게이트웨이 조합보다 우선합니다. 서브넷/게이트웨이 조합은 인터페이스 이름이 다중 노드 클러스터에서 다를 때 유용합니다.
메모:
예를 들어: # L2 only - eth1: ddp: "auto" interface_mode: trunk vlan-id-list: [100, 200, 300, 700-705] storm-control-profile: rate_limit_pf1 native-vlan-id: 100 no-local-switching: true - bond0: ddp: "auto" # auto/on/off interface_mode: trunk vlan-id-list: [100, 200, 300, 700-705] storm-control-profile: rate_limit_pf1 #native-vlan-id: 100 #no-local-switching: true # L3 only - eth1: ddp: "off" - eth2: ddp: "off" # L2L3 - eth1: ddp: "auto" - eth2: ddp: "auto" interface_mode: trunk vlan-id-list: [100, 200, 300, 700-705] storm-control-profile: rate_limit_pf1 native-vlan-id: 100 no-local-switching: true |
|
서브넷 | 인터페이스 이름에 대한 대체 입력 모드. 예를 들어: - subnet: 10.40.1.0/24 gateway: 10.40.1.1 ddp: "off" 옵션은 |
|
DDP (디피) | (선택 사항) 인터페이스 수준의 DDP(Dynamic Device Personalization) 구성을 나타냅니다. DDP는 GTPU, SCTP 등과 같은 트래픽에 대해 NIC에서 데이터 경로 최적화를 제공합니다. 본드 인터페이스의 경우 DDP 구성을 활성화하려면 모든 슬레이브 인터페이스 NIC가 DDP를 지원해야 합니다. 설정 옵션에는 자동, 켜기 또는 끄기가 포함됩니다. 기본 설정은 꺼져 있습니다.
메모:
서브넷/인터페이스 수준 |
|
interface_mode | L2 인터페이스의 경우 으로 interface_mode: trunk |
|
vlan-id 목록 | 인터페이스와 연결된 VLAN ID 목록을 제공합니다. |
|
스톰 컨트롤 프로필 | 인터페이스에 대한 적절한 스톰 컨트롤 프로필을 연결하는 데 을(를) 사용합니다 |
|
네이티브 vlan-id | 패브릭 트렁크 모드 인터페이스의 물리적 인터페이스에서 수신되는 태그 없는 데이터 패킷과 연결하려면 vlan-id-list의 VLAN ID 중 하나로 을(를) 구성합니다 fabricInterface: - bond0: interface_mode: trunk vlan-id-list: [100, 200, 300] storm-control-profile: rate_limit_pf1 native-vlan-id: 100 |
|
로컬 스위칭 없음 | 문이 구성된 경우 인터페이스가 서로 직접 통신하지 no-local-switching 합니다. 허용되는 값은 true 또는 false입니다. | |
fabricWorkloadInterface | (선택 사항) 서로 다른 워크로드가 연결되는 인터페이스를 정의합니다. 소프트웨어 기반 또는 하드웨어 기반 인터페이스일 수 있습니다. | |
log_level | 로그 심각도를 정의합니다. 사용 가능한 값 옵션은 DEBUG, INFO, WARN 및 ERR입니다.
메모:
주니퍼 지원팀에서 변경하도록 지시하지 않는 한 log_level INFO로 설정된 상태로 둡니다. |
|
log_path | 정의된 디렉터리는 contrail-vrouter-agent.log, contrail-vrouter-dpdk.log 등과 같은 다양한 클라우드 네이티브 라우터 관련 설명 로그를 저장합니다. |
|
syslog_notifications | syslog-ng에서 생성된 알림을 JSON 형식으로 저장하는 파일의 절대 경로를 나타냅니다. |
|
nodeAffinity (노드 선호도) | (선택 사항) 노드에 레이블을 정의하여 cRPD, vRouter 및 syslog-ng 포드를 배치할 위치를 결정합니다. 예를 들어: nodeAffinity: - key: node-role.kubernetes.io/worker operator: Exists
메모:
이 키는 전역 설정입니다. OCP 설정에서 노드 선호도는 작업자에서만 클라우드 네이티브 라우터를 가져오도록 구성해야 합니다. |
|
열쇠 | 노드 선호도를 적용하기 위해 일치해야 하는 노드 레이블을 나타내는 키-값 쌍입니다. | |
연산자 | 노드 레이블과 Pod 사양의 matchExpression 매개변수에 있는 값 집합 간의 관계를 정의합니다. 이 값은 In, NotIn, Exists, DoesNotExist, Lt 또는 Gt일 수 있습니다. | |
cni_bin_dir | (선택 사항) 기본 경로는 /opt/cni/bin입니다. 기본 cni 경로를 원하는 경로(예: /var/opt/cni/bin)로 재정의할 수 있습니다. Red Hat OpenShift와 같은 일부 배포에서는 기본 CNI 경로를 변경해야 할 수 있습니다. 경로 변수(cni_bin_dir)를 비워 두는 것은 OCP에서 실행 가능한 옵션이 아닙니다. | |
grpcTelemetryPort | (선택 사항) 이 매개 변수의 값을 입력하여 cRPD 텔레메트리 gRPC 서버 기본 포트 50051을 재정의합니다. |
|
grpcVrouter포트 | (선택 사항) vRouter gRPC 서버 기본 포트 50052보다 우선하려면 이 매개 변수의 값을 입력합니다. | |
복원 인터페이스 | vRouter 포드가 충돌하거나 다시 시작될 경우 인터페이스를 원래 상태로 복원하려면 이 키의 값을 true로 설정합니다. | |
bondInterface구성 | (선택 사항) L2 또는 L2-L3 구축에 대해서만 본드 인터페이스 구성을 활성화합니다. | |
이름 | (선택 사항) 본드 인터페이스의 이름입니다. | |
모드 | (선택 사항) 기본값은 1(Active_Backup)입니다. | |
슬레이브 인터페이스 | (선택 사항) | |
최대 전송 단위(MTU) | 모든 물리적 인터페이스(VF 및 PF)에 대한 최대 전송 단위(MTU) 값입니다. | |
cpu_core_mask | vRouter 포워드 코어 마스크를 나타냅니다. qos를 사용하는 경우 4개의 CPU 코어(기본 및 형제 요소)를 할당해야 합니다. |
|
'stormControlProfiles'입니다 | 패브릭 인터페이스에서 BUM 트래픽의 속도 제한 프로필을 초당 바이트로 구성합니다. | |
rate_limit_pf1 | ||
대역폭 | ||
수준 | ||
DDP (디피) | (선택 사항) 전역 DDP(Dynamic Device Personalization) 구성을 나타냅니다. DDP는 GTPU, SCTP 등과 같은 트래픽에 대해 NIC에서 데이터 경로 최적화를 제공합니다. 본드 인터페이스의 경우 DDP 구성을 활성화하려면 모든 슬레이브 인터페이스 NIC가 DDP를 지원해야 합니다. 설정 옵션에는 자동, 켜기 또는 끄기가 포함됩니다. 기본 설정은 꺼져 있습니다.
메모:
서브넷/인터페이스 수준 |
|
qos활성화 | QoS를 사용하거나 사용하지 않도록 설정하려면 true 또는 false로 설정합니다.
메모:
QoS는 Intel X710 NIC에서 지원되지 않습니다. |
|
'코어 패턴' | 코어 파일이 생성되는 방법을 나타내는 코어 패턴을 나타냅니다. 이 구성을 비워 두면 클라우드 네이티브 라우터 Pod가 기본 패턴을 덮어쓰지 않습니다.
메모:
JCNR을 배포하기 전에 호스트에서 corePattern 값을 설정합니다. 의 |
|
코어파일 경로 | 코어 파일의 경로를 나타냅니다. 값을 비워 두면 vRouter는 /var/crashes를 기본값으로 간주합니다. | |
vrouter_dpdk_uio_driver | uio 드라이버는 또는 uio_pci_generic 일 수 있습니다vfio-pci . |
기본 helm 차트는 다음과 같습니다.
#################################################################### # Common Configuration (global vars) # #################################################################### global: registry: enterprise-hub.juniper.net/ # uncomment below if all images are available in the same path; it will # take precedence over "repository" paths under "common" section below repository: jcnr-container-prod/ # uncomment below if you are using a private registry that needs authentication # registryCredentials - Base64 representation of your Docker registry credentials # secretName - Name of the Secret object that will be created #imagePullSecret: # registryCredentials: <base64-encoded-credential> # secretName: regcred common: vrouter: repository: atom-docker/cn2/bazel-build/dev/ tag: R23.2-156 crpd: repository: junos-docker-local/warthog/ tag: 23.2R1.14 jcnrcni: repository: junos-docker-local/warthog/ tag: 23.2-20230628-8cf4350 # Number of replicas for cRPD; this option must be used for multinode clusters # JCNR will take 1 as default if replicas is not specified #replicas: "3" # storageClass: Name of the storage class for cRPD. This option is must for # cloud deployments such as AWS where gp2 can be used #storageClass: gp2 #noLocalSwitching: [700] # fabricInterface: provide a list of interfaces to be bound to dpdk # You can also provide subnets instead of interface names. Interfaces name take precedence over # Subnet/Gateway combination if both specified (although there is no reason to specify both) # Subnet/Gateway combination comes handy when the interface names vary in a multi-node cluster fabricInterface: ######################### # L2 only #- eth1: # ddp: "auto" # ddp parameter is optional; options include auto or on or off; default: off # interface_mode: trunk # vlan-id-list: [100, 200, 300, 700-705] # storm-control-profile: rate_limit_pf1 # native-vlan-id: 100 # no-local-switching: true #- eth2: # ddp: "auto" # ddp parameter is optional; options include auto or on or off; default: off # interface_mode: trunk # vlan-id-list: [700] # storm-control-profile: rate_limit_pf1 # native-vlan-id: 100 # no-local-switching: true #- bond0: # ddp: "auto" # auto/on/off # ddp parameter is optional; options include auto or on or off; default: off # interface_mode: trunk # vlan-id-list: [100, 200, 300, 700-705] # storm-control-profile: rate_limit_pf1 # #native-vlan-id: 100 # #no-local-switching: true ######################### # L3 only #- eth1: # ddp: "off" # ddp parameter is optional; options include auto or on or off; default: off #- eth2: # ddp: "off" # ddp parameter is optional; options include auto or on or off; default: off ######################## # L2L3 #- eth1: # ddp: "auto" # ddp parameter is optional; options include auto or on or off; default: off #- eth2: # ddp: "auto" # ddp parameter is optional; options include auto or on or off; default: off # interface_mode: trunk # vlan-id-list: [100, 200, 300, 700-705] # storm-control-profile: rate_limit_pf1 # native-vlan-id: 100 # no-local-switching: true ################################## # Provide subnets instead of interface names # Interfaces will be auto-detected in each subnet # Only one of the interfaces or subnet range must # be configured. This form of input is particularly # helpful when the interface names vary in a multi-node # K8s cluster #- subnet: 10.40.1.0/24 # gateway: 10.40.1.1 # ddp: "off" # ddp parameter is optional; options include auto or on or off; default: off #- subnet: 192.168.1.0/24 # gateway: 192.168.1.1 # ddp: "off" # ddp parameter is optional; options include auto or on or off; default: off ################################## # fabricWorkloadInterface is applicable only for Pure L2 deployments # #fabricWorkloadInterface: #- enp59s0f1v0: # interface_mode: access # vlan-id-list: [700] #- enp59s0f1v1: # interface_mode: trunk # vlan-id-list: [800, 900] ######################### # defines the log severity. Possible options: DEBUG, INFO, WARN, ERR log_level: "INFO" # "log_path": this directory will contain various jcnr related descriptive logs # such as contrail-vrouter-agent.log, contrail-vrouter-dpdk.log etc. log_path: "/var/log/jcnr/" # "syslog_notifications": absolute path to the file that will contain syslog-ng # generated notifications in json format syslog_notifications: "/var/log/jcnr/jcnr_notifications.json" # nodeAffinity: Can be used to inject nodeAffinity for vRouter, cRPD and syslog-ng pods # You may label the nodes where we wish to deploy JCNR and inject affinity accodingly #nodeAffinity: #- key: node-role.kubernetes.io/worker # operator: Exists #- key: node-role.kubernetes.io/master # operator: DoesNotExist #- key: kubernetes.io/hostname # operator: In # values: # - example-host-1 # cni_bin_dir: Path where the CNI binary will be put; default: /opt/cni/bin # this may be overriden in distributions other than vanilla K8s # e.g. OpenShift - you may use /var/lib/cni/bin or /etc/kubernetes/cni/net.d #cni_bin_dir: /var/lib/cni/bin # grpcTelemetryPort: use this parameter to override cRPD telemetry gRPC server default port of 50051 #grpcTelemetryPort: 50055 # grpcVrouterPort: use this parameter to override vRouter gRPC server default port of 50052 #grpcVrouterPort: 50060 jcnr-vrouter: # restoreInterfaces: setting this to true will restore the interfaces # back to their original state in case vrouter pod crashes or restarts restoreInterfaces: false # Enable bond interface configurations L2 only or L2 L3 deployment #bondInterfaceConfigs: # - name: "bond0" # mode: 1 # ACTIVE_BACKUP MODE # slaveInterfaces: # - "enp59s0f0v0" # - "enp59s0f0v1" # MTU for all physical interfaces( all VF’s and PF’s) mtu: "9000" # vrouter fwd core mask # if qos is enabled, you will need to allocate 4 CPU cores (primary and siblings) cpu_core_mask: "2,3,22,23" # rate limit profiles for bum traffic on fabric interfaces in bytes per second stormControlProfiles: rate_limit_pf1: bandwidth: level: 0 #rate_limit_pf2: # bandwidth: # level: 0 # Set ddp to enable Dynamic Device Personalization (DDP) # Provides datapath optimization at NIC for traffic like GTPU, SCTP etc. # Options include auto or on or off; default: off ddp: "auto" # Set true/false to Enable or Disable QOS, note: QOS is not supported on X710 NIC. qosEnable: false # core pattern to denote how the core file will be generated # if left empty, JCNR pods will not overwrite the default pattern corePattern: "" # path for the core file; vrouter considers /var/crashes as default value if not specified coreFilePath: /var/crash # uio driver will be vfio-pci or uio_pci_generic vrouter_dpdk_uio_driver: "vfio-pci"
Amazon EKS에 클라우드 네이티브 라우터를 설치하는 경우 helmchart/charts/jcnr-vrouter/values.yaml 파일의 키를 업데이트 dpdkCommandAdditionalArgs
하고 및 rx
설명자를 256으로 설정합니다tx
. 예를 들어:
dpdkCommandAdditionalArgs: "--yield_option 0 --dpdk_txd_sz 256 --dpdk_rxd_sz 256"
다양한 배포 모드에 대한 추가 작업 샘플은 클라우드 네이티브 라우터 Helm 차트에 대한 작업 샘플 항목에 제공되었습니다.