使用 JCNR 部署服务链 (cSRX)
从版本 23.4 开始,瞻博网络云原生路由器 (JCNR) 可以与 瞻博网络的容器化 SRX (cSRX) 平台集成,以提供 IPsec 等安全服务。此功能是使用基于主机的服务链实现的。云原生路由器与同一 Kubernetes 群集中的安全服务实例 (cSRX) 相链接。cSRX 实例在 L3 模式下作为 Pod 服务运行。cSRX 实例通过您从瞻博网络软件下载 站点下载的 helm chart 进行定制和部署。
自定义 cSRX Helm Chart
cSRX 服务链实例通过 helm chart 进行部署。配置参数通过 values.yaml
清单文件提供。部署由两个基本组件组成:
-
csrx-init:这是一个 init 容器,用于准备主 cSRX 应用程序的配置。它从
values.yaml
清单文件中提取必要的信息,对其进行处理,然后生成 cSRX 的配置数据。这可以确保主 cSRX 应用以有效、最新配置启动。 -
csrx:cSRX 是主要的应用容器,也是 cSRX 部署的核心组件。它依赖于容器提供的
csrx-init
配置才能正常运行。
您可以通过在 values.yaml
清单文件中指定一系列配置参数来自定义 cSRX 部署。关键配置选项包括:
-
interfaceType:这是 cSRX 上用于连接到 JCNR 的接口类型。必须设置为
vhost
ONLY。 -
interfaceConfigs:这是一个数组,用于定义接口 IP 地址、网关地址和可选路由。接口 IP 必须与
localAddress
阵列中的ipSecTunnelConfigs
元素匹配。路由应包含将解密流量引导到 JCNR 的前缀,以及 IPSec 网关的可达性路由。 -
ipSecTunnelConfigs:这是一个数组,用于定义 IPsec 配置详细信息,例如 ike-phase1、提议、策略和网关配置。流量选择器应包含预期要加密的流量。
-
jcnr_config:这是一个数组,用于定义要在 JCNR 中配置的路由,用于将流量从 JCNR 引导到 cSRX,并将 IPsec 流量从远程 IPsec 网关引导到 cSRX,以便应用安全服务链。
下面是用于 cSRX 部署的示例 values.yaml:
# Default values for cSRX. # This is a YAML-formatted file. # Declare variables to be passed into your templates. common: registry: enterprise-hub.juniper.net repository: jcnr-container-prod csrxInit: image: junos-csrx-init tag: 23.4R1.9 imagePullPolicy: IfNotPresent resources: #limits: # memory: 1Gi # cpu: 1 #requests: # memory: 1Gi # cpu: 1 csrx: image: junos-csrx tag: 23.4R1.9 imagePullPolicy: IfNotPresent resources: limits: hugepages-1Gi: 4Gi memory: 4Gi requests: hugepages-1Gi: 4Gi memory: 4Gi # 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 # nodeAffinity: Can be used to inject nodeAffinity for cSRX # you may label the nodes where we wish to deploy cSRX and inject affinity accordingly #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 replicas: 1 interfaceType: "vhost" interfaceConfigs: - name: eth1 ip: 171.1.1.1/30 # should match ipSecTunnelConfigs localAddress if configured gateway: 171.1.1.2 # gateway configuration #ip6: 171:1:1::1/64 # optional #ip6Gateway: 171:1:1::2 # optional routes: # this field is optional - "181.1.1.0/24" #- "200.1.1.0/24" - name: eth2 ip: 1.21.1.1/30 # should match ipSecTunnelConfigs localAddress if configured gateway: 1.21.1.2 # gateway configuration #ip6: 181:2:1::1/64 # optional #ip6Gateway: 181:2:1::2 # optional routes: # this field is optional - "222.1.1.0/24" #- "192.1.1.0/24" ipSecTunnelConfigs: # untrust - interface: eth1 ## section ike-phase1, proposal, policy, gateway gateway: 181.1.1.1 localAddress: 171.1.1.1 authenticationAlgorithm: sha-256 encryptionAlgorithm: aes-256-cbc preSharedKey: "$9$zt3l3AuIRhev8FnNVsYoaApu0RcSyev8XO1NVYoDj.P5F9AyrKv8X" trafficSelector: - name: ts1 localIP: 222.1.1.0/24 ## IP cannot be 0.0.0.0/0 remoteIP: 111.1.1.0/24 ## IP cannot be 0.0.0.0/0 jcnr_config: - name: eth2 routes: - "111.1.1.0/24" csrx_ctrl_cpu: "0x01" csrx_data_cpu: "0x0A"
安装 cSRX
cSRX 服务链在部署 JCNR 之后部署。阅读此部分以安装 cSRX 实例。
从瞻博网络软件下载站点下载 cSRX 安装 包。您下载的文件名为 junos_csrx_<release>.tar.gz。下载文件后,将其展开并切换到 junos_csrx_release_number 目录。
- 部署需要 cSRX 容器映像。您可以选择以下选项之一:
- 从瞻博网络存储库下载并部署映像
enterprise-hub.juniper.net
—。有关如何在部署舵图中配置存储库凭据的说明,请参阅 配置存储库凭据 。 - 您可以使用
docker load
命令将 cSRX 映像上传到本地 docker 或您自己的 docker 存储库。映像位于 junos_csrx_release_number/images 目录中。docker load -i images/csrx-images.tgz
- 从瞻博网络存储库下载并部署映像
- 在
secrets/csrx-secrets.yaml
文件中输入 cSRX 许可证。您必须以 base64 编码格式输入密码和许可证。您可以查看以下文件的csrx-secrets.yaml
示例内容:apiVersion: v1 kind: Secret metadata: name: service-chain-instance namespace: jcnr data: csrx_license: | <add your license in base64 format>
要对许可证文件进行编码,请将许可证文件复制到主机服务器上并发出命令:
base64 -w 0 licenseFile
您必须复制 base64 输出并将其粘贴到
secrets/csrx-secrets.yaml
文件的相应位置。注意:您必须从帐户团队获取许可证文件,并按照上述说明将其安装在 secrets.yaml 文件中。csrx-init 容器会执行许可证检查,并且仅在找到所需的密钥
service-chain-instance
时才继续操作。 将 应用于
csrx-secrets.yaml
Kubernetes 系统。kubectl apply -f secrets/secrets.yaml secret/service-chain-instance created
在安装 cSRX 实例之前,请确保 JCNR 的所有组件都已启动并运行。
确保您已自定义 cSRX 主控图。导航到 junos_csrx_release_number/helmchart 目录。展开捆绑包以查看 helmcharts。参考上面给出的示例来配置 values.yaml。导航到 junos_csrx_release_number/helmchart/junos-csrx 目录并发出以下命令以安装 cSRX 实例。
helm install csrx .