6.7. 外部トラフィックの IPsec 暗号化の設定
クラスター管理者は、IPsec を使用して外部トラフィックを暗号化するには、PKCS#12 証明書の提供を含め、ネットワークインフラストラクチャーに IPsec を設定する必要があります。この手順では Butane を使用してマシン設定を作成するため、butane ツールがインストールされている必要があります。
マシン設定を適用すると、Machine Config Operator (MCO) により、クラスター内の影響を受けるノードが再起動され、新しいマシン設定がロールアウトされます。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
ローカルコンピューターに
butaneツールされている。 - NMState Operator がクラスターにインストールされている。
-
cluster-admin権限を持つユーザーとしてクラスターにログインしている。 - IPsec エンドポイント用の既存の PKCS#12 証明書と、Privacy Enhanced Mail (PEM) 形式の CA 証明書がある。
-
クラスターで
FullまたはExternalモードの IPsec が有効になっている。 -
OVN-Kubernetes ネットワークプラグインの
ovnKubernetesConfig.gatewayConfig仕様で、routingViaHostパラメーターをtrueに設定する。
手順
NMState Operator ノードネットワーク設定ポリシーを使用して IPsec 設定を作成します。詳細は、nmstatectl を使用して IPsec ベースの VPN 接続を設定する 参照してください。
IPsec エンドポイントであるクラスターノードの IP アドレスを特定するために、次のコマンドを入力します。
oc get nodes
$ oc get nodesCopy 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 ここでは、以下のようになります。
kubernetes.io/hostname- ポリシーを適用するホスト名を指定します。このホストは、IPsec 設定の左側のホストとして機能します。
name- ホスト上に作成するインターフェイスの名前を指定します。
left-
クラスター側で IPsec トンネルを終端するクラスターノードのホスト名を指定します。この名前は、提供した PKCS#12 証明書の SAN
[Subject Alternate Name]と一致する必要があります。 right-
外部ホスト名 (
host.example.comなど) を指定します。この名前は、提供した PKCS#12 証明書の SAN[Subject Alternate Name]と一致する必要があります。 rightsubnet外部ホストの IP アドレス (
10.1.2.3/32など) を指定します。NMState IPsec トンネル設定の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
IPsec インターフェイスを設定するために、次のコマンドを入力します。
oc create -f ipsec-config.yaml
$ oc create -f ipsec-config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
次の証明書ファイルを提供して、各ホストのネットワークセキュリティーサービス (NSS) データベースに追加します。これらのファイルは、次のステップで Butane 設定の一部としてインポートされます。
-
left_server.p12: IPsec エンドポイントの証明書バンドル -
ca.pem: 証明書に署名した認証局
-
- 証明書をクラスターに追加するためのマシン設定を作成します。
マウントされたシークレットファイルからパスワードを読み取ります。
password=$(cat run/secrets/<left_server_password>)
$ password=$(cat run/secrets/<left_server_password>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
left_server_password:: パスワードが含まれているファイルの名前。このファイルはマウントされたシークレット内に存在します。
-
次のコマンドを入力して、Red Hat Enterprise Linux (RHEL) に同梱されている
pk12utilツールを使用し、PKCS#12ファイルを保護しているパスワードを指定します。<password>値を自分のパスワードに置き換えてください。pk12util -W "<password>" -i /etc/pki/certs/left_server.p12 -d /var/lib/ipsec/nss/
$ pk12util -W "<password>" -i /etc/pki/certs/left_server.p12 -d /var/lib/ipsec/nss/Copy to Clipboard Copied! Toggle word wrap Toggle overflow コントロールプレーンとコンピュートノードの Butane 設定ファイルを作成するには、次のコマンドを入力します。
注記設定ファイルで指定する Butane のバージョン は、OpenShift Container Platform のバージョンと同じである必要があり、末尾は常に
0です。たとえば、4.19.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 doneCopy 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 doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要Machine Config Operator (MCO) は各マシン設定プール内のマシンを更新するときに、各ノードを 1 つずつ再起動します。外部 IPsec 接続が利用可能になるまで、すべてのノードが更新されるのを待つ必要があります。
検証
以下のコマンドを実行してマシン設定プールのステータスを確認します。
oc get mcp
$ oc get mcpCopy 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 ipsecCopy 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 6d15hCopy to Clipboard Copied! Toggle word wrap Toggle overflow コントロールプレーンノードに IPsec 拡張機能が適用されたことを確認します。
oc get mcp master -o yaml | grep 80-ipsec-master-extensions -c
$ oc get mcp master -o yaml | grep 80-ipsec-master-extensions -cCopy 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 -cCopy to Clipboard Copied! Toggle word wrap Toggle overflow