このページの目次
JCNRを使用したサービスチェーン(cSRX)の導入
リリース23.4以降、Juniper Cloud-Native Router(JCNR)を ジュニパーのコンテナ化SRX(cSRX) プラットフォームと統合して、IPsecなどのセキュリティサービスを提供できます。この機能は、ホストベースのサービスチェイニングを使用して実現されます。クラウドネイティブルーターは、同じKubernetesクラスター内でセキュリティサービスインスタンス(cSRX)と連鎖されます。cSRXインスタンスは、L3モードのポッドサービスとして実行されます。cSRXインスタンスはカスタマイズされ、ジュニパーネットワークスのソフトウェアダウンロード サイトからダウンロードしたhelmチャートを介して導入されます。
cSRXヘルムチャートのカスタマイズ
cSRXサービスチェイニングインスタンスは、ヘルムチャートを介して導入されます。構成パラメーターは、 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 は、
localAddress
ipSecTunnelConfigs
配列内の要素と一致する必要があります。ルートには、復号されたトラフィックを JCNR に誘導するためのプレフィックスと、IPSec ゲートウェイの到達可能性ルートが含まれている必要があります。 -
ipSecTunnelConfigs: IKE-phase1、プロポーザル、ポリシー、ゲートウェイ構成などのIPsec構成の詳細を定義するアレイです。トラフィックセレクターには、暗号化されることが予想されるトラフィックが含まれている必要があります。
-
jcnr_config:これは、JCNRからcSRXへのトラフィックを誘導し、セキュリティサービスチェーンを適用するためにリモートIPsecゲートウェイからcSRXにIPsecトラフィックを誘導するために、JCNRで設定されるルートを定義する配列です。
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
。デプロイ Helm チャートでリポジトリ資格情報を構成する方法については、「 リポジトリ資格情報の構成 」を参照してください。 - コマンドを使用して、cSRXイメージをローカルのDockerまたは独自のDockerリポジトリ
docker load
にアップロードできます。イメージは junos_csrx_release_number/images ディレクトリにあります。docker load -i images/csrx-images.tgz
- ジュニパーのリポジトリからイメージをダウンロードしてデプロイします—
- ファイルにcSRXライセンス
secrets/csrx-secrets.yaml
を入力します。パスワードとライセンスは 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 ディレクトリに移動します。バンドルを展開してヘルムチャートを表示します。values.yaml を設定するには、上記の例を参照してください。junos_csrx_release_number/helmchart/junos-csrx ディレクトリに移動し、次のコマンドを発行して cSRX インスタンスをインストールします。
helm install csrx .