8.3. プロジェクトバージョン間での許可される接続の違いの確認
このコマンドは、2 つのプロジェクトバージョン間で許可される接続の違いを理解するのに役立ちます。各バージョンのディレクトリーにあるワークロードと Kubernetes ネットワークポリシーマニフェストを分析し、相違点をテキスト形式で表現します。
接続差異レポートは、text
、md
、dot
、csv
などのさまざまな出力形式で表示できます。
8.3.1. roxctl netpol connectivity diff コマンドを使用した接続の差異レポートの生成
roxctl netpol connected diff
コマンドを使用して、ネットワークポリシーを含む 2 つの Kubernetes マニフェストの接続の違いを比較して、レポートを作成します。
前提条件
-
dir1
とdir2
という 2 つのフォルダーがあり、それぞれにネットワークポリシーを含む Kubernetes マニフェストが含まれている。
手順
指定されたディレクトリー内の Kubernetes マニフェスト間の接続の違いを確認するには、次のコマンドを実行します。
roxctl netpol connectivity diff --dir1=<folder_path_1> --dir2=<folder_path_2> [flags]
$ roxctl netpol connectivity diff --dir1=<folder_path_1> --dir2=<folder_path_2> [flags]
1 Copy to Clipboard Copied! - 1
- フォルダーへのパスを指定します。分析用の YAML リソースとネットワークポリシーなど、サブフォルダーを含めることができます。このコマンドは、両方のディレクトリーのサブフォルダーツリー全体をスキャンします。
たとえば、
<folder_path_1>
はnetpol-analysis-example-minimal/
、<folder_path_2>
はnetpol-diff-example-minimal/
に置き換えます。オプションで、パラメーターを指定してコマンドの動作を変更することもできます。
このコマンドは、kubectl apply -f
を使用して許容できるすべての YAML ファイルを考慮し、これらの YAML ファイルが roxctl netpol connectivity diff
コマンドに対する有効な入力になります。
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
で追加、削除または変更されています。
該当する場合、workloads-diff-info
は、追加または削除された接続の追加または削除されたワークロードに関する情報を追加で提供します。
たとえば、ワークロード B
が削除されたためにワークロード A
からワークロード B
への接続が削除された場合、workloads-diff-info
はワークロード B
が削除されたことを示します。ただし、ネットワークポリシーの変更のみが原因でそのような接続が削除され、ワークロード A
も B
も削除されなかった場合、workloads-diff-info
は空になります。
8.3.2. 構文上の差異出力と意味上の差異出力の区別
次の例では、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: {}
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.2.1. 構文的な違いの出力
手順
次のコマンドを実行して、指定した 2 つのディレクトリーにある
netpols.yaml
ファイルの内容を比較します。diff netpol-diff-example-minimal/netpols.yaml netpol-analysis-example-minimal/netpols.yaml
$ diff netpol-diff-example-minimal/netpols.yaml netpol-analysis-example-minimal/netpols.yaml
Copy to Clipboard Copied! 出力例
12c12 < - ports: --- > ports:
12c12 < - ports: --- > ports:
Copy to Clipboard Copied!
8.3.2.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
$ roxctl netpol connectivity diff --dir1=roxctl/netpol/connectivity/diff/testdata/netpol-analysis-example-minimal/ --dir2=roxctl/netpol/connectivity/diff/testdata/netpol-diff-example-minimal
Copy to Clipboard Copied! 出力例
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
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
Copy to Clipboard Copied!