8.3. プロジェクトバージョン間での許可される接続の違いの確認
このコマンドは、2 つのプロジェクトバージョン間で許可される接続の違いを理解するのに役立ちます。各バージョンのディレクトリーにあるワークロードと Kubernetes ネットワークポリシーマニフェストを分析し、相違点をテキスト形式で表現します。
接続差異レポートは、text、md、dot、csv などのさまざまな出力形式で表示できます。
8.3.1. roxctl netpol connectivity diff コマンドを使用した接続の差異レポートの生成 リンクのコピーリンクがクリップボードにコピーされました!
接続差異レポートを作成する場合、roxctl netpol connectivity diff コマンドを実行する際にネットワークポリシーなどの Kubernetes マニフェストがそれぞれに含まれている、2 つのフォルダー dir1 と dir2 が必要です。
手順
次のコマンドを実行して、指定したディレクトリー内の Kubernetes マニフェスト間の接続の違いを確認します。
$ roxctl netpol connectivity diff --dir1=<folder_path_1> --dir2=<folder_path_2> [flags]1 - 1
- フォルダーへのパスを指定します。分析用の YAML リソースとネットワークポリシーなど、サブフォルダーを含めることができます。このコマンドは、両方のディレクトリーのサブフォルダーツリー全体をスキャンします。たとえば、
<folder_path_1>はnetpol-analysis-example-minimal/、<folder_path_2>はnetpol-diff-example-minimal/に置き換えます。オプションで、パラメーターを指定してコマンドの動作を変更することもできます。
オプションのパラメーターの詳細は、roxctl netpol connectivity diff コマンドオプション を参照してください。
注記このコマンドは、
kubectl apply -fを使用して許容できるすべての YAML ファイルを考慮し、これらがroxctl netpol connectivity diffコマンドの有効な入力になります。例8.2 出力例
Expand diff-type 比較元 比較先 dir 1 dir 2 workloads-diff-info changed
default/frontend[Deployment]
default/backend[Deployment]
TCP 9090
TCP 9090,UDP 53
added
0.0.0.0-255.255.255.255
default/backend[Deployment]
接続なし
TCP 9090
意味的な差異レポートは、dir1 で許可されている接続と比較して、dir2 で変更、追加、または削除された接続の概要を示します。出力を確認すると、各行に使用可能な接続が表示されています。それぞれの接続は、dir1 と比較すると、dir2 で追加、削除または変更されています。
以下は、roxctl netpol connectivity diff コマンドによってさまざまな形式で生成される出力例です。
該当する場合、workloads-diff-info は、追加または削除された接続の追加または削除されたワークロードに関する情報を追加で提供します。
たとえば、ワークロード B が削除されたためにワークロード A からワークロード B への接続が削除された場合、workloads-diff-info はワークロード B が削除されたことを示します。ただし、ネットワークポリシーの変更のみが原因でそのような接続が削除され、ワークロード A も B も削除されなかった場合、workloads-diff-info は空になります。
8.3.2. roxctl netpol connectivity diff コマンドオプション リンクのコピーリンクがクリップボードにコピーされました!
roxctl netpol connectivity diff コマンドは、次のオプションをサポートしています。
| オプション | 説明 |
|---|---|
|
| 入力リソースの最初のディレクトリーパス。これは必須のオプションです。 |
|
| 最初のディレクトリーパスと比較される入力リソースの 2 番目のディレクトリーパス。これは必須のオプションです。 |
|
|
最初に発生したエラーで失敗します。デフォルト値は |
|
|
|
|
| 接続の差分出力を特定のファイルに保存します。 |
|
|
出力形式を設定します。サポートされている形式は、 |
|
|
出力パスがすでに存在する場合は削除します。デフォルト値は |
|
|
接続の違いの出力をデフォルトのファイルに保存します。デフォルト値は |
|
|
警告をエラーとして扱います。デフォルト値は |
8.3.3. 構文上の差異出力と意味上の差異出力の区別 リンクのコピーリンクがクリップボードにコピーされました!
次の例では、dir1 は netpol-analysis-example-minimal/、dir2 は netpol-diff-example-minimal/ に置き換えます。ネットワークポリシー backend-netpol で加えられた小さな変更が、ディレクトリー間の差異となっています。
dir1 のポリシーの例:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
creationTimestamp: null
name: backend-netpol
spec:
ingress:
- from:
- podSelector:
matchLabels:
app: frontend
ports:
- port: 9090
protocol: TCP
podSelector:
matchLabels:
app: backendservice
policyTypes:
- Ingress
- Egress
status: {}
dir2 の変更は、ports 属性の前に - が追加されており、これにより差分出力が生成されます。
8.3.3.1. 構文的な違いの出力 リンクのコピーリンクがクリップボードにコピーされました!
手順
次のコマンドを実行して、指定した 2 つのディレクトリーにある
netpols.yamlファイルの内容を比較します。$ diff netpol-diff-example-minimal/netpols.yaml netpol-analysis-example-minimal/netpols.yaml出力例
12c12 < - ports: --- > ports:
8.3.3.2. 意味上の差異の出力 リンクのコピーリンクがクリップボードにコピーされました!
手順
次のコマンドを実行して、指定した 2 つのディレクトリー内の Kubernetes マニフェストとネットワークポリシー間の接続の違いを分析します。
$ roxctl netpol connectivity diff --dir1=roxctl/netpol/connectivity/diff/testdata/netpol-analysis-example-minimal/ --dir2=roxctl/netpol/connectivity/diff/testdata/netpol-diff-example-minimal出力例
Connectivity diff: diff-type: changed, source: default/frontend[Deployment], destination: default/backend[Deployment], dir1: TCP 9090, dir2: TCP 9090,UDP 53 diff-type: added, source: 0.0.0.0-255.255.255.255, destination: default/backend[Deployment], dir1: No Connections, dir2: TCP 9090