6.7. 外部トラフィックの IPsec 暗号化の設定
クラスター管理者は、IPsec を使用して外部トラフィックを暗号化するには、PKCS#12 証明書の提供を含め、ネットワークインフラストラクチャーに IPsec を設定する必要があります。この手順では Butane を使用してマシン設定を作成するため、butane
コマンドがインストールされている必要があります。
マシン設定を適用した後、Machine Config Operator はクラスター内の影響を受けるノードを再起動し、新しいマシン設定をロールアウトします。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
ローカルコンピューターに
butane
ユーティリティーがインストールされている。 - NMState Operator がクラスターにインストールされている。
-
cluster-admin
権限を持つユーザーとしてクラスターにログインしている。 - IPsec エンドポイント用の既存の PKCS#12 証明書と PEM 形式の CA 証明書があります。
-
クラスターで
Full
またはExternal
モードの IPsec が有効になっている。 -
OVN-Kubernetes ネットワークプラグインが、ローカルゲートウェイモード (
ovnKubernetesConfig.gatewayConfig.routingViaHost=true
) で設定されている。
手順
NMState Operator ノードネットワーク設定ポリシーを使用して IPsec 設定を作成します。詳細は、IPsec VPN 実装としての Libreswan を参照してください。
IPsec エンドポイントであるクラスターノードの IP アドレスを特定するために、次のコマンドを入力します。
oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例のように、NMState Operator のノードネットワーク設定ポリシーを含む
ipsec-config.yaml
という名前のファイルを作成します。NodeNetworkConfigurationPolicy
オブジェクトの概要は、The Kubernetes NMState project を参照してください。NMState IPsec トランスポート設定の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1 1
- ポリシーを適用するホスト名を指定します。このホストは、IPsec 設定の左側のホストとして機能します。
- 2
- ホスト上に作成するインターフェイスの名前を指定します。
- 3
- クラスター側の IPsec トンネルを終端するクラスターノードのホスト名を指定します。この名前は、提供した PKCS#12 証明書の SAN
[Subject Alternate Name]
と一致する必要があります。 - 4
- 外部ホスト名 (
host.example.com
など) を指定します。この名前は、提供した PKCS#12 証明書の SAN[Subject Alternate Name]
と一致する必要があります。 - 5
- 外部ホストの IP アドレス (
10.1.2.3/32
など) を指定します。
NMState IPsec トンネル設定の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- ポリシーを適用するホスト名を指定します。このホストは、IPsec 設定の左側のホストとして機能します。
- 2
- ホスト上に作成するインターフェイスの名前を指定します。
- 3
- クラスター側の IPsec トンネルを終端するクラスターノードのホスト名を指定します。この名前は、提供した PKCS#12 証明書の SAN
[Subject Alternate Name]
と一致する必要があります。 - 4
- 外部ホスト名 (
host.example.com
など) を指定します。この名前は、提供した PKCS#12 証明書の SAN[Subject Alternate Name]
と一致する必要があります。 - 5
- 外部ホストの IP アドレス (
10.1.2.3/32
など) を指定します。
IPsec インターフェイスを設定するために、次のコマンドを入力します。
oc create -f ipsec-config.yaml
$ oc create -f ipsec-config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次の証明書ファイルを提供して、各ホストのネットワークセキュリティーサービス (NSS) データベースに追加します。これらのファイルは、後の手順で Butane 設定の一部としてインポートされます。
-
left_server.p12
: IPsec エンドポイントの証明書バンドル -
ca.pem
: 証明書に署名した認証局
-
証明書をクラスターに追加するためのマシン設定を作成します。
コントロールプレーンとワーカーノードの Butane 設定ファイルを作成するには、次のコマンドを入力します。
注記設定ファイルで指定する Butane のバージョン は、OpenShift Container Platform のバージョンと同じである必要があり、末尾は常に
0
です。たとえば、4.17.0
です。Butane の詳細は、「Butane を使用したマシン設定の作成」を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前の手順で作成した Butane ファイルをマシン設定に変換するには、以下のコマンドを入力します。
for role in master worker; do butane -d . 99-ipsec-${role}-endpoint-config.bu -o ./99-ipsec-$role-endpoint-config.yaml done
$ for role in master worker; do butane -d . 99-ipsec-${role}-endpoint-config.bu -o ./99-ipsec-$role-endpoint-config.yaml done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
マシン設定をクラスターに適用するには、次のコマンドを入力します。
for role in master worker; do oc apply -f 99-ipsec-${role}-endpoint-config.yaml done
$ for role in master worker; do oc apply -f 99-ipsec-${role}-endpoint-config.yaml done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要Machine Config Operator (MCO) は各マシン設定プール内のマシンを更新するときに、各ノードを 1 つずつ再起動します。外部 IPsec 接続が使用可能になるまでは、すべてのノードが更新されるまで待つ必要があります。
以下のコマンドを実行してマシン設定プールのステータスを確認します。
oc get mcp
$ oc get mcp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 正常に更新されたノードには、
UPDATED=true
、UPDATING=false
、DEGRADED=false
のステータスがあります。注記デフォルトで、MCO はプールごとに一度に 1 つのマシンを更新するため、移行にかかる合計時間がクラスターのサイズと共に増加します。
IPsec マシン設定が正常にロールアウトされたことを確認するために、次のコマンドを入力します。
IPsec マシン設定の作成を確認します。
oc get mc | grep ipsec
$ oc get mc | grep ipsec
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
80-ipsec-master-extensions 3.2.0 6d15h 80-ipsec-worker-extensions 3.2.0 6d15h
80-ipsec-master-extensions 3.2.0 6d15h 80-ipsec-worker-extensions 3.2.0 6d15h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コントロールプレーンノードへの IPsec 拡張機能の適用を確認します。出力例は
2
を示しています。oc get mcp master -o yaml | grep 80-ipsec-master-extensions -c
$ oc get mcp master -o yaml | grep 80-ipsec-master-extensions -c
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンピュートノードへの IPsec 拡張機能の適用を確認します。出力例は
2
を示しています。oc get mcp worker -o yaml | grep 80-ipsec-worker-extensions -c
$ oc get mcp worker -o yaml | grep 80-ipsec-worker-extensions -c
Copy to Clipboard Copied! Toggle word wrap Toggle overflow