Amazon EKSへのJuniper Cloud-Native Routerのインストールと検証
Juniper Cloud-Native Routerは、JCNR-Controller(cRPD)を使用してコントロールプレーン機能を提供し、JCNR-CNIを使用してコンテナネットワークインターフェイスを提供します。Juniper Cloud-Native Routerは、DPDK対応のvRouterを使用してハイパフォーマンスなデータプレーン機能を提供し、Syslog-NGを使用して通知機能を提供します。このセクションでは、Cloud-Native Routerのこれらのコンポーネントをインストールする方法について説明します。
ジュニパーサポートサイトパッケージを使用したJuniper Cloud-Native Routerのインストール
このセクションでは、Helm チャートを使用してクラウドネイティブ ルーター コンポーネントをインストールするために必要な手順について説明します。
- 「EKS 展開のシステム要件」を確認して、セットアップに必要なすべての構成があることを確認します。
- tarball Juniper_Cloud_Native_Router_<release-number>.tgz を任意のディレクトリにダウンロードします。ファイルをサーバーに転送するときは、圧縮された tar ファイルが正しく展開されるように、バイナリーモードでファイル転送を実行する必要があります。
- ファイル Juniper_Cloud_Native_Router_<release-number>.tgz を展開します。
tar xzvf Juniper_Cloud_Native_Router_<release-number>.tgz
- ディレクトリを Juniper_Cloud_Native_Router_<release-number> に変更します。
cd Juniper_Cloud_Native_Router_<release-number>
メモ:インストールの残りのすべてのステップでは、現在の作業ディレクトリーが Juniper_Cloud_Native_Router_<release-number>であることを前提としています。
- 現在のディレクトリの内容を表示します。
ls contrail-tools helmcharts images README.md secrets
- ホストサーバーのrootパスワードとJuniper Cloud-Native Routerライセンスファイルをsecrets/jcnr-secrets.yamlファイルに入力します。パスワードとライセンスは base64 エンコード形式で入力する必要があります。
jcnr-secrets.yaml ファイルのサンプルの内容は、以下で確認できます。
--- apiVersion: v1 kind: Namespace metadata: name: jcnr --- apiVersion: v1 kind: Secret metadata: name: jcnr-secrets namespace: jcnr data: root-password: <add your password in base64 format> crpd-license: | <add your license in base64 format>
パスワードをエンコードするには、プレーンテキストのパスワードでファイルを1行で作成します。次に、次のコマンドを発行します。base64 -w 0 rootPasswordFile
base64 -w 0 licenseFile
メモ:アカウント チームからライセンス ファイルを取得し、上記の手順に従って jcnr-secrets.yaml ファイルにインストールする必要があります。 jcnr-secrets.yaml ファイルに適切な base64 でエンコードされたライセンスキーとルートパスワードがないと、cRPD ポッドは実行状態になりませんが、クラッシュループバックオフ状態のままになります。
secrets/jcnr-secrets.yaml を Kubernetes システムに適用します。
kubectl apply -f secrets/jcnr-secrets.yaml namespace/jcnr created secret/jcnr-secrets created
メモ:JCNR リリース 23.2 以降、JCNR ライセンス・フォーマットが変更されました。23.2以降のリリースを導入またはアップグレードする前に、JALポータルで新しいライセンスキーをリクエストしてください。
- JCNR クラスタで仮想ルータ冗長プロトコル(VRRP)を使用している場合は、JCNR ConfigMap を作成します。サンプル
jcnr-aws-config.yaml
マニフェストは、インストールバンドルのディレクトリでcRPD_examples
提供されています。をjcnr-aws-config.yaml
Kubernetesシステムに適用します。kubectl apply -f jcnr-aws-config.yaml configmap/jcnr-aws-config created
- helmchart/values.yaml ファイルを使用して、デプロイに合わせて helm チャートをカスタマイズします。
EKS デプロイメント用のヘルム・チャート構成およびサンプル・ヘルム・チャートの構成の説明については、 『EKS デプロイメント用の JCNR Helm チャートのカスタマイズ 』を参照してください。
- オプションで、JCNR 構成をカスタマイズします。
cRPDカスタマイズの作成と適用については、 JCNR設定のカスタマイズ を参照してください。
- 次のコマンドを使用して、Multus CNIをインストールします。
kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/master/config/multus/v3.7.2-eksbuild.1/aws-k8s-multus.yaml
- Amazon Elastic Block Storage (EBS) Container Storage Interface (CSI) ドライバーをインストールします。
- で定義された
values.yaml
に基づいてnodeAffinity
、JCNR をインストールする必要があるノードにラベルを付けます。例えば:kubectl label nodes ip-10.0.100.17.us-east-2.compute.internal key1=jcnr --overwrite
- helm チャートを使用してJuniper Cloud-Native Routerを導入します。
ディレクトリに移動し
helmchart
、次のコマンドを実行します。helm install jcnr .
NAME: jcnr LAST DEPLOYED: Fri Sep 22 06:04:33 2023 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None
- Juniper Cloud-Native Routerの導入を確認します。
helm ls
サンプル出力:
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION jcnr default 1 2023-09-22 06:04:33.144611017 -0400 EDT deployed jcnr-23.3.0 23.3.0
AWS Marketplaceサブスクリプションを使用してJuniper Cloud-Native Routerをインストールする
このセクションでは、Helm チャートを使用してクラウドネイティブ ルーター コンポーネントをインストールするために必要な手順について説明します。
- 「EKS 展開のシステム要件」を確認して、セットアップに必要なすべての構成があることを確認します。
- コマンドを使用して AWS 認証情報を設定します。
aws configure
- Amazon ECR リポジトリに対して認証します。
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 709825985650.dkr.ecr.us-east-1.amazonaws.com
aws ecr get-login-password --region us-east-1 | helm registry login --username AWS --password-stdin 709825985650.dkr.ecr.us-east-1.amazonaws.com
- ECR リポジトリから helm パッケージをダウンロードします。
helm pull oci://709825985650.dkr.ecr.us-east-1.amazonaws.com/juniper-networks/jcnr --version 23.3.0
- jcnr-23.3.0.tgz ファイルを展開します。
tar xzvf jcnr-23.3.0.tgz
- ディレクトリを
jcnr
に変更します。cd jcnr
メモ:インストールの残りのすべてのステップでは、現行の作業ディレクトリーが jcnr であることを前提としています。
- 現在のディレクトリの内容を表示します。
ls Chart.yaml charts cRPD_examples values.yaml
jcnr_secrets.yaml
ホストサーバーのrootパスワードとJuniper Cloud-Native Routerライセンスを定義するファイルを作成します。パスワードとライセンスは base64 エンコード形式で入力する必要があります。jcnr-secrets.yaml ファイルのサンプルの内容は、以下で確認できます。--- apiVersion: v1 kind: Namespace metadata: name: jcnr --- apiVersion: v1 kind: Secret metadata: name: jcnr-secrets namespace: jcnr data: root-password: <add your password in base64 format> crpd-license: | <add your license in base64 format>
マニフェストは、名前空間、
パスワードをエンコードするには、プレーンテキストのパスワードでファイルを1行で作成します。次に、次のコマンドを発行します。jcnr
jcnr-secrets
rootパスワードとcRPDライセンスを持つシークレットを作成します。base64 -w 0 rootPasswordFile
base64 -w 0 licenseFile
メモ:アカウント チームからライセンス ファイルを取得し、上記の手順に従って jcnr-secrets.yaml ファイルにインストールする必要があります。 jcnr-secrets.yaml ファイルに適切な base64 でエンコードされたライセンスキーとルートパスワードがないと、cRPD ポッドは実行状態になりませんが、クラッシュループバックオフ状態のままになります。メモ:JCNR リリース 23.2 以降、JCNR ライセンス・フォーマットが変更されました。23.2以降のリリースを導入またはアップグレードする前に、JALポータルで新しいライセンスキーをリクエストしてください。- を
jcnr-secrets.yaml
Kubernetesシステムに適用します。kubectl apply -f secrets/jcnr-secrets.yaml namespace/jcnr created secret/jcnr-secrets created
- JCNR クラスタで仮想ルータ冗長プロトコル(VRRP)を使用している場合は、JCNR ConfigMap を作成します。を
jcnr-aws-config.yaml
Kubernetesシステムに適用します。kubectl apply -f jcnr-aws-config.yaml configmap/jcnr-aws-config created
- values.yaml ファイルを使用して、デプロイの helm チャートをカスタマイズします。
EKS デプロイメント用のヘルム・チャート構成およびサンプル・ヘルム・チャートの構成の説明については、 『EKS デプロイメント用の JCNR Helm チャートのカスタマイズ 』を参照してください。
- オプションで、JCNR 構成をカスタマイズします。
cRPDカスタマイズの作成と適用については、 JCNR設定のカスタマイズ を参照してください。
- Amazon EBS CSI ドライバーをインストールします。
- で定義された
values.yaml
に基づいてnodeAffinity
、JCNR をインストールする必要があるノードにラベルを付けます。例えば:kubectl label nodes ip-10.0.100.17.us-east-2.compute.internal key1=jcnr --overwrite
- helm チャートを使用してJuniper Cloud-Native Routerを導入します。
次のコマンドを実行します。
helm install jcnr .
NAME: jcnr LAST DEPLOYED: Fri Sep 22 06:04:33 2023 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None
- Juniper Cloud-Native Routerの導入を確認します。
helm ls
サンプル出力:
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION jcnr default 1 2023-09-22 06:04:33.144611017 -0400 EDT deployed jcnr-23.3.0 23.3.0
Amazon EKS での JCNR のインストールを確認する
- コマンドを発行
kubectl get pods -A
して、JCNR ポッドの状態を確認します。コマンドの出力kubectl
には、すべての名前空間の Kubernetes クラスター内のすべてのポッドが表示されます。デプロイが成功するということは、すべてのポッドが実行状態にあることを意味します。この例では、Juniper Cloud-Native Router Podsを太字でマークしています。例えば:kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE contrail-deploy contrail-k8s-deployer-5b6c9656d5-nw9t9 1/1 Running 0 13d contrail contrail-vrouter-nodes-wmr26 3/3 Running 0 13d jcnr kube-crpd-worker-sts-3 1/1 Running 0 13d jcnr syslog-ng-tct27 1/1 Running 0 13d kube-system aws-node-k8hxl 1/1 Running 1 (15d ago) 15d kube-system ebs-csi-node-c8rbh 3/3 Running 3 (15d ago) 15d kube-system kube-multus-ds-8nzhs 1/1 Running 1 (13d ago) 13d kube-system kube-proxy-h669c 1/1 Running 1 (15d ago) 15d
- コマンドを発行して、JCNR デーモンセットを検証します
kubectl get ds -A
。kubectl get ds -A
コマンドを使用して、デーモンセットのリストを取得します。JCNR デーモンセットは太字で強調表示されています。kubectl get ds -A
NAMESPACE NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE contrail contrail-vrouter-masters 0 0 0 0 0 <none> 13d contrail contrail-vrouter-nodes 1 1 1 1 1 <none> 13d jcnr syslog-ng 1 1 1 1 1 <none> 13d kube-system aws-node 8 8 8 8 8 <none> 15d kube-system ebs-csi-node 8 8 8 8 8 kubernetes.io/os=linux 15d kube-system ebs-csi-node-windows 0 0 0 0 0 kubernetes.io/os=windows 15d kube-system kube-multus-ds 8 8 8 8 8 <none> 13d kube-system kube-proxy 8 8 8 8 8 <none> 15d
- コマンドを発行して、JCNR ステートフルセットを検証します
kubectl get statefulsets -A
。コマンド出力はステートフルセットを提供します。kubectl get statefulsets -A
NAMESPACE NAME READY AGE jcnr kube-crpd-worker-sts 1/1 27m
- cRPDがライセンスされ、適切な設定が施されているかどうかを確認します。
- cRPD CLIにアクセスする手順については、「cRPD CLIへのアクセス」セクションを参照してください。
- cRPD CLIにアクセスしたら、CLIモードで コマンドを発行
show system license
してシステムライセンスを表示します。例えば:root@jcnr-01:/# cli root@jcnr-01> show system license License usage: Licenses Licenses Licenses Expiry Feature name used installed needed containerized-rpd-standard 1 1 0 2024-09-20 16:59:00 PDT Licenses installed: License identifier: 85e5229f-0c64-0000-c10e4-a98c09ab34a1 License SKU: S-CRPD-10-A1-PF-5 License version: 1 Order Type: commercial Software Serial Number: 1000098711000-iHpgf Customer ID: Juniper Networks Inc. License count: 15000 Features: containerized-rpd-standard - Containerized routing protocol daemon with standard features date-based, 2022-08-21 17:00:00 PDT - 2027-09-20 16:59:00 PDT
show configuration | display set
CLIモードでコマンドを発行し、cRPDのデフォルト設定とカスタム設定を表示します。出力は、カスタム構成と JCNR デプロイメント・モードに基づきます。root@jcnr-01# cli root@jcnr-01> show configuration | display set
- コマンドを入力して
exit
ポッドシェルを終了します。
- vRouter インターフェイスの設定を検証します。
- vRouter CLI にアクセスする方法については、「vRouter CLI へのアクセス」セクションを参照してください。
- vRouter CLI にアクセスしたら、 コマンドを発行
vif --list
して vRouter インターフェイスを表示します。出力は、JCNR デプロイメント・モードおよび構成によって異なります。1 つのファブリック インターフェイスを設定した L3 モードの導入例を以下に示します。$ vif --list Vrouter Interface Table Flags: P=Policy, X=Cross Connect, S=Service Chain, Mr=Receive Mirror Mt=Transmit Mirror, Tc=Transmit Checksum Offload, L3=Layer 3, L2=Layer 2 D=DHCP, Vp=Vhost Physical, Pr=Promiscuous, Vnt=Native Vlan Tagged Mnp=No MAC Proxy, Dpdk=DPDK PMD Interface, Rfl=Receive Filtering Offload, Mon=Interface is Monitored Uuf=Unknown Unicast Flood, Vof=VLAN insert/strip offload, Df=Drop New Flows, L=MAC Learning Enabled Proxy=MAC Requests Proxied Always, Er=Etree Root, Mn=Mirror without Vlan Tag, HbsL=HBS Left Intf HbsR=HBS Right Intf, Ig=Igmp Trap Enabled, Ml=MAC-IP Learning Enabled, Me=Multicast Enabled vif0/0 Socket: unix MTU: 1514 Type:Agent HWaddr:00:00:5e:00:01:00 Vrf:65535 Flags:L2 QOS:-1 Ref:3 RX queue errors to lcore 0 0 0 0 0 0 0 0 0 0 0 0 RX packets:0 bytes:0 errors:0 TX packets:0 bytes:0 errors:0 Drops:0 vif0/1 PCI: 0000:00:07.0 (Speed 1000, Duplex 1) NH: 6 MTU: 9000 Type:Physical HWaddr:0e:d0:2a:58:46:4f IPaddr:0.0.0.0 DDP: OFF SwLB: ON Vrf:0 Mcast Vrf:0 Flags:L3L2 QOS:0 Ref:8 RX device packets:20476 bytes:859992 errors:0 RX port packets:20476 errors:0 RX queue errors to lcore 0 0 0 0 0 0 0 0 0 0 0 0 Fabric Interface: 0000:00:07.0 Status: UP Driver: net_ena RX packets:20476 bytes:859992 errors:0 TX packets:2 bytes:180 errors:0 Drops:0 TX port packets:2 errors:0 TX device packets:8 bytes:740 errors:0 vif0/2 PCI: 0000:00:08.0 (Speed 1000, Duplex 1) NH: 7 MTU: 9000 Type:Physical HWaddr:0e:6a:9e:04:da:6f IPaddr:0.0.0.0 DDP: OFF SwLB: ON Vrf:0 Mcast Vrf:0 Flags:L3L2 QOS:0 Ref:8 RX device packets:20476 bytes:859992 errors:0 RX port packets:20476 errors:0 RX queue errors to lcore 0 0 0 0 0 0 0 0 0 0 0 0 Fabric Interface: 0000:00:08.0 Status: UP Driver: net_ena RX packets:20476 bytes:859992 errors:0 TX packets:2 bytes:180 errors:0 Drops:0 TX port packets:2 errors:0 TX device packets:8 bytes:740 errors:0 vif0/3 PMD: eth2 NH: 10 MTU: 9000 Type:Host HWaddr:0e:d0:2a:58:46:4f IPaddr:0.0.0.0 DDP: OFF SwLB: ON Vrf:0 Mcast Vrf:65535 Flags:L3L2DProxyEr QOS:-1 Ref:11 TxXVif:1 RX device packets:2 bytes:180 errors:0 RX queue packets:2 errors:0 RX queue errors to lcore 0 0 0 0 0 0 0 0 0 0 0 0 RX packets:2 bytes:180 errors:0 TX packets:20476 bytes:859992 errors:0 Drops:0 TX queue packets:20476 errors:0 TX device packets:20476 bytes:859992 errors:0 vif0/4 PMD: eth3 NH: 15 MTU: 9000 Type:Host HWaddr:0e:6a:9e:04:da:6f IPaddr:0.0.0.0 DDP: OFF SwLB: ON Vrf:0 Mcast Vrf:65535 Flags:L3L2DProxyEr QOS:-1 Ref:11 TxXVif:2 RX device packets:2 bytes:180 errors:0 RX queue packets:2 errors:0 RX queue errors to lcore 0 0 0 0 0 0 0 0 0 0 0 0 RX packets:2 bytes:180 errors:0 TX packets:20476 bytes:859992 errors:0 Drops:0 TX queue packets:20476 errors:0 TX device packets:20476 bytes:859992 errors:0
- を入力して
exit
ポッドシェルを終了します。