This documentation is for a release that is no longer maintained.
You can select a different version or view all RHACS documentation.第9章 ビルド時のネットワークポリシーツール
ビルド時のネットワークポリシーツールを使用すると、roxctl CLI を使用した開発および運用ワークフローでの Kubernetes ネットワークポリシーの作成と検証を自動化できます。これらのツールは、プロジェクトのワークロードおよびネットワークポリシーマニフェストなど、指定されたファイルディレクトリーで動作し、RHACS 認証を必要としません。
| コマンド | 説明 |
|---|---|
|
| 指定されたディレクトリー内のプロジェクトの YAML マニフェストを分析することにより、Kubernetes ネットワークポリシーを生成します。詳細は、ビルド時のネットワークポリシージェネレーターの使用 を参照してください。 |
|
|
ワークロードと Kubernetes ネットワークポリシーマニフェストを調べて、プロジェクトディレクトリー内のワークロード間で許可されている接続をリスト表示します。出力は、さまざまなテキスト形式またはグラフィカルな |
|
|
2 つのプロジェクトバージョン間で許可される接続にバリエーションのリストを作成します。これは、ワークロードと各バージョンのディレクトリー内の Kubernetes ネットワークポリシーマニフェストによって決まります。この機能は、ソースコード (構文) に対して |
9.1. ビルド時のネットワークポリシージェネレーターの使用 リンクのコピーリンクがクリップボードにコピーされました!
ビルド時のネットワークポリシー生成は、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品サポートのサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではない場合があります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
ビルド時のネットワークポリシージェネレーターは、アプリケーション YAML マニフェストに基づいて Kubernetes ネットワークポリシーを自動的に生成できます。これを使用して、クラスターにアプリケーションをデプロイする前に、継続的インテグレーション/継続的デプロイメント (CI/CD) パイプラインの一部としてネットワークポリシーを開発できます。
Red Hat は、NP-Guard プロジェクト の開発者と協力してこの機能を開発しました。まず、ビルド時のネットワークポリシージェネレーターは、ローカルフォルダー内の Kubernetes マニフェストを分析します。これには、サービスマニフェスト、config map、および Pod、Deployment、ReplicaSet、Job、DaemonSet、StatefulSet などのワークロードマニフェストが含まれます。次に、必要な接続を検出し、Pod の分離を実現するための Kubernetes ネットワークポリシーを作成します。これらのポリシーでは、必要なイングレスおよびエグレストラフィックをそれ以上も以下も許可しません。
9.1.1. ビルド時のネットワークポリシーの生成 リンクのコピーリンクがクリップボードにコピーされました!
ビルド時のネットワークポリシージェネレーターは、roxctl CLI に含まれています。ビルド時のネットワークポリシー生成機能の場合、roxctl CLI は RHACS Central と通信する必要がないため、任意の開発環境で使用できます。
前提条件
-
ビルド時のネットワークポリシージェネレーターは、コマンドの実行時に指定したディレクトリーを再帰的にスキャンします。したがって、コマンドを実行する前に、サービスマニフェスト、config map、ワークロードマニフェスト (
Pod、Deployment、ReplicaSet、Job、DaemonSet、StatefulSetなど) が、指定されたディレクトリーに YAML ファイルとしてすでに存在している必要があります。 -
kubectl apply -fコマンドを使用して、これらの YAML ファイルをそのまま適用できることを確認します。ビルド時のネットワークポリシージェネレーターは、Helm スタイルのテンプレートを使用するファイルでは機能しません。 サービスネットワークアドレスがハードコーディングされていないことを確認します。サービスに接続する必要があるすべてのワークロードは、サービスネットワークアドレスを変数として指定する必要があります。この変数は、ワークロードのリソース環境変数を使用するか、config map で指定できます。
サービスネットワークアドレスは、次の公式の正規表現パターンに一致する必要があります。
(http(s)?://)?<svc>(.<ns>(.svc.cluster.local)?)?(:<portNum>)?
(http(s)?://)?<svc>(.<ns>(.svc.cluster.local)?)?(:<portNum>)?1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- このパターンでは、
- <svc> はサービス名
- <ns> はサービスを定義した namespace
- <portNum> は公開されたサービスのポート番号
以下は、パターンに一致するいくつかの例です。
-
wordpress-mysql:3306 -
redis-follower.redis.svc.cluster.local:6379 -
redis-leader.redis -
http://rating-service.
手順
help コマンドを実行して、ビルド時のネットワークポリシー生成機能が使用可能であることを確認します。
roxctl netpol generate -h
$ roxctl netpol generate -hCopy to Clipboard Copied! Toggle word wrap Toggle overflow netpol generateコマンドを使用してポリシーを生成します。roxctl netpol generate <folder_path> [flags]
$ roxctl netpol generate <folder_path> [flags]1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- フォルダーへのパスを指定します。フォルダーには、分析用の YAML リソースを含むサブフォルダーを含めることができます。このコマンドは、サブフォルダーツリー全体をスキャンします。オプションで、パラメーターを指定してコマンドの動作を変更することもできます。
オプションのパラメーターの詳細は、roxctl netpol generate コマンドオプション を参照してください。
次のステップ
- ポリシーを生成した後、関連するネットワークアドレスが YAML ファイルで期待どおりに指定されていない場合に備えて、ポリシーの完全性と正確性を検査する必要があります。
-
最も重要なことは、必要な接続が分離ポリシーによってブロックされていないことを確認することです。この検査には、
roxctl netpol 接続マップツールを使用できます。
自動化を使用してワークロードデプロイメントの一部としてネットワークポリシーをクラスターに適用すると、時間を短縮し、正確さを確保できます。プルリクエストを使用して生成されたポリシーを送信すると、GitOps アプローチに使用でき、ポリシーをパイプラインの一部としてデプロイする前にチームはポリシーを確認する機会を得ることができます。
9.1.2. roxctl netpol generate コマンドオプション リンクのコピーリンクがクリップボードにコピーされました!
roxctl netpol generate コマンドは、次のオプションをサポートしています。
| オプション | 説明 |
|---|---|
|
|
|
|
| 生成されたポリシーをターゲットフォルダーに保存します。ポリシーごとに 1 つのファイルです。 |
|
| 生成されたポリシーを保存して単一の YAML ファイルにマージします。 |
|
|
最初に発生したエラーで失敗します。デフォルト値は |
|
| 出力パスがすでに存在する場合は削除します。 |
|
|
警告をエラーとして扱います。デフォルト値は |