6.7. 外部トラフィックの IPsec 暗号化の設定
クラスター管理者は、IPsec を使用して外部トラフィックを暗号化するには、PKCS#12 証明書の提供を含め、ネットワークインフラストラクチャーに IPsec を設定する必要があります。この手順では 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 代替名]に一致する必要があります。 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
以下の証明書ファイルを指定して、各ホストの Network Security Services (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.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 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