Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Customize JCNR Helm Chart for EKS Deployment

SUMMARY Read this topic to learn about the deployment configuration available for the Juniper Cloud-Native Router when deployed on Amazon EKS.

You can deploy and operate Juniper Cloud-Native Router in the L3 mode on Amazon EKS. You configure the deployment mode by editing the appropriate attributes in the values.yaml file prior to deployment.

Helm Chart Attributes and Descriptions

Customize the helm charts using the Juniper_Cloud_Native_Router_release-number/helmchart/values.yaml file. The configuration keys of the helm chart are shown in the table below.
Table 1: Helm Chart Attributes and Descriptions
Key Additional Key Configuration Description
registry   Defines the docker registry for the vRouter, cRPD and jcnr-cni container images.

The default value is set to:

  • Juniper Enterprise Hub for helm charts downloaded from the Juniper Support Site.

  • Amazon Elastic Container Registry (ECR) for helm charts downloaded from the AWS marketplace.

repository   Defines the repository path for the vRouter, cRPD and jcnr-cni container images. This is a global key and takes precedence over "repository" paths under "common" section. The default value is:
  • jcnr-container-prod/ for Juniper Support package.

  • juniper-networks for AWS Marketplace subscriptions.

imagePullSecret   Defines the registry authentication credentials. View the Configure Repository Credentials topic for more information.
  registryCredentials Base64 representation of your Docker registry credentials.
  secretName Name of the secret object that will be created.
common   Defines repository paths and tags for the vRouter, cRPD and jcnr-cni container images. Use default.
  repository Defines the repository path. The global repository key takes precedence if defined.

The default value is set to:

  • atom-docker/cn2/bazel-build/dev/ for Juniper Support package.

  • juniper-networks for AWS Marketplace subscriptions.

  tag Defines the image tag. The default value is configured to the appropriate tag number for the JCNR release version.
replicas (Optional) Indicates the number of cRPD replicas deployed on the worker nodes in a multi-node cluster. If the value is not specified, the default value 1 is considered. The value for this key must be specified for multi-node clusters and must match the number of nodes to which JCNR must be deployed.
storageClass

Indicates the name of the storage class for cRPD. Must be specified as gp2 for EKS deployments.

awsregion   Defines the AWS region for the EKS deployment.
noLocalSwitching Not applicable for EKS deployments.
fabricInterface  

Provide a list of interfaces to be bound to the DPDK. You can also provide subnets instead of interface names. If both the interface name and the subnet are specified, then the interface name takes precedence over subnet/gateway combination. The subnet/gateway combination is useful when the interface names vary in a multi-node cluster.

Note: Use the L3 only section to configure fabric interfaces for Amazon EKS. The L2 only and L2-L3 sections are not applicable for EKS deployments.

For example:

  # L3  only
  - eth1:
      ddp: "off"                 
  - eth2:
      ddp: "off"                
  subnet An alternative mode of input for interface names. For example:
- subnet: 10.40.1.0/24 
  gateway: 10.40.1.1 
  ddp: "off"    

With the subnet mode of input, interfaces are auto-detected in each subnet. Specify either subnet/gateway or the interface name. Do not configure both. The subnet/gateway form of input is particularly helpful in environments where the interface names vary for a multi-node K8s cluster.

  ddp

Not applicable for EKS deployments.

  interface_mode Not applicable for EKS deployments.
  vlan-id-list

Not applicable for EKS deployments.

  storm-control-profile

Not applicable for EKS deployments.

  native-vlan-id Not applicable for EKS deployments.
  no-local-switching Not applicable for EKS deployments.
fabricWorkloadInterface Not applicable for EKS deployments.
log_level Defines the log severity. Available value options are: DEBUG, INFO, WARN, and ERR.
Note:

Leave the log_level set to the default INFO unless instructed to change it by Juniper support.

log_path

The defined directory stores various JCNR related descriptive logs such as contrail-vrouter-agent.log, contrail-vrouter-dpdk.log, etc. The default value is /var/log/jcnr/.

syslog_notifications

Indicates the absolute path to the file that stores syslog-ng generated notifications in JSON format. The default value is /var/log/jcnr/jcnr_notifications.json.

nodeAffinity

(Optional) Defines labels on nodes to determine where to place the vRouter pods. By default the vRouter pods are deployed to all worker nodes of a cluster.

In the example below, the node affinity label is defined as "key1=jcnr". You must apply this label to each node where JCNR must be deployed:

nodeAffinity:
  - key: key1
    operator: In
    values:
      - jcnr
Note:

This key is a global setting.

key Key-value pair that represents a node label that must be matched to apply the node affinity.
operator Defines the relationship between the node label and the set of values in the matchExpression parameters in the pod specification. This value can be In, NotIn, Exists, DoesNotExist, Lt, or Gt.
cni_bin_dir (Optional) The default path is /opt/cni/bin. You can override the default cni path with a path used by your distribution e.g. /var/opt/cni/bin.
grpcTelemetryPort

(Optional) Enter a value for this parameter to override cRPD telemetry gRPC server default port of 50051.

grpcVrouterPort (Optional) Enter a value for this parameter to override vRouter gRPC server default port of 50052.
vRouterDeployerPort   (Optional) Default value is 8081. Configure to override if the default port is unavailable.
restoreInterfaces Recommend to set the value of this key to true to restore the interfaces back to their original state in case the vRouter pod crashes or restarts.
bondInterfaceConfigs Not applicable for EKS deployments.
mtu Maximum Transmission Unit (MTU) value for all physical interfaces (VFs and PFs). Default value is 9000.
cpu_core_mask

Indicates the vRouter forward core mask. If qos is enabled, you will need to allocate 4 CPU cores. Use the cores not used by the host OS in your EC2 instance.

stormControlProfiles Not applicable for EKS deployments.
ddp Not applicable for EKS deployments.
qosEnable

Set to false for EKS deployments.

corePattern

Indicates the core pattern to denote how the core file is generated. If this configuration is left blank, then JCNR pods will not overwrite the default pattern.

Note:

Set the corePattern value on host before deploying JCNR. You may change the value in /etc/sysctl.conf. For example, kernel.core_pattern=/var/crash/core_%e_%p_%i_%s_%h_%t.gz

coreFilePath Indicates the path for the core file. If the value is left blank, then vRouter considers /var/crashes as the default value.
vrouter_dpdk_uio_driver The uio driver is vfio-pci.
Note:

For Amazon EKS, you need to additionally update the dpdkCommandAdditionalArgs key in the helmchart/charts/jcnr-vrouter/values.yaml file and set tx and rx descriptors to 256. For example:

Sample Helm Charts

Sample EKS JCNR helm charts are provided below:

Helm Chart for Amazon EKS Deployment (Subscription via Juniper Support Site)

A working Amazon EKS L3 helm chart sample is shown below. The configured sections are highlighted in bold:

Helm Chart for EKS Deployment (Subscription via AWS Marketplace)

A working Amazon EKS L3 helm chart sample is shown below. The configured sections are highlighted in bold: