JCNRを使用したサービスチェーン(cSRX)の導入
リリース23.4以降、Juniper Cloud-Native Router(JCNR )をジュニパーのコンテナ化されたSRX(cSRX) プラットフォームと統合して、IPsecなどのセキュリティサービスを提供できます。この機能は、ホストベースのサービスチェイニングを使用して実現されます。Cloud-Native Routerは、同じKubernetesクラスタ内のセキュリティサービスインスタンス(cSRX)とチェイニングされています。cSRXインスタンスは、L3モードのポッドサービスとして実行されます。cSRXインスタンスは、ジュニパーネットワークスのソフトウェアダウンロード サイトからダウンロードするHelmチャートを介してカスタマイズおよび導入されます。
cSRX Helm チャートのカスタマイズ
cSRXサービスチェイニングインスタンスは、Helmチャートを介して展開されます。構成パラメーターは、 values.yaml マニフェスト ファイルを介して提供されます。導入は、次の 2 つの重要なコンポーネントで構成されています。
-
csrx-init:メインのcSRXアプリケーション用の設定を準備するinitコンテナです。
values.yamlマニフェストファイルから必要な情報を抽出して処理し、cSRXの設定データを生成します。これにより、メインのcSRXアプリケーションが有効で最新の設定で起動するようになります。 -
csrx:cSRXは、メインアプリケーションコンテナであり、cSRX導入のコアコンポーネントです。正しく機能するかどうかは、
csrx-initコンテナが提供する設定に依存しています。
values.yamlマニフェストファイルで設定パラメータの範囲を指定することで、cSRXの導入をカスタマイズできます。主な構成オプションは次のとおりです。
-
interfaceType:JCNRに接続するcSRX上のインターフェイスのタイプです。
vhostのみに設定する必要があります。 -
interfaceConfigs: これは、インターフェイスの IP アドレス、ゲートウェイ アドレス、およびオプションでルートを定義する配列です。インターフェイス IP は、
ipSecTunnelConfigs配列のlocalAddress要素と一致する必要があります。ルートには、復号化されたトラフィックをCloud-Native Routerに誘導するためのプレフィックスと、IPSecゲートウェイの到達可能性ルートを含める必要があります。 -
ipSecTunnelConfigs:これは、ike-phase1、プロポーザル、ポリシー、ゲートウェイ設定などのIPsec設定の詳細を定義する配列です。交通セレクターには、暗号化されることが予想されるトラフィックが含まれている必要があります。
-
jcnr_config:これは、Cloud-Native RouterからcSRXにトラフィックを誘導し、セキュリティサービスチェーンを適用するためにリモートIPsecゲートウェイからcSRXにIPsec トラフィックを誘導するために、Cloud-Native Routerで設定するルートを定義する配列です。
以下に、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サービスチェーンは、Cloud-Native Routerの導入後に導入されます。cSRXインスタンスをインストールするには、このセクションをお読みください。
ジュニパーネットワークスのソフトウェアダウンロード サイトからcSRXインストールバンドルをダウンロードします。ダウンロードするファイルは junos_csrx_<release>.tar.gz と呼ばれます。ファイルをダウンロードしたら、ファイルを展開して junos_csrx_release_number ディレクトリに移動します。
- 導入にはcSRXコンテナイメージが必要です。次のいずれかのオプションを選択できます。
- ジュニパーのリポジトリ(
enterprise-hub.juniper.net)からイメージをダウンロードして導入します。デプロイメント Helm チャートでリポジトリ資格証明を構成する方法については、「 リポジトリ資格証明の構成 」を参照してください。 - cSRXイメージは、
docker loadコマンドを使用して、ローカルの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インスタンスをインストールする前に、Cloud-Native Routerのすべてのコンポーネントが稼働していることを確認してください。
cSRXヘルムチャートをカスタマイズしたことを確認します。junos_csrx_release_number/helmchart ディレクトリに移動します。バンドルを展開してヘルムチャートを表示します。上記の例を参照して、values.yaml を構成します。junos_csrx_release_number/helmchart/junos-csrxディレクトリに移動し、次のコマンドを発行してcSRXインスタンスをインストールします。
helm install csrx .