4.5.3. GitOps ZTP および SiteConfig リソースを使用したマルチノードクラスターの IPsec 暗号化の設定
GitOps ZTP と Red Hat Advanced Cluster Management (RHACM) を使用してインストールするマネージドマルチノードクラスターで、IPsec 暗号化を有効にできます。マネージドクラスターと、マネージドクラスター外の IPsec エンドポイント間のトラフィックを暗号化できます。OVN-Kubernetes クラスターネットワーク上のノード間のすべてのネットワークトラフィックが、Transport モードの IPsec で暗号化されます。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてハブクラスターにログインしている。 - マネージドクラスターに必要なインストールおよびポリシーカスタムリソース (CR) を生成するために、RHACM とハブクラスターを設定している。
- カスタムサイトの設定データを管理する Git リポジトリーを作成している。リポジトリーはハブクラスターからアクセス可能で、Argo CD アプリケーションのソースリポジトリーとして定義されている必要があります。
-
butaneユーティリティーバージョン 0.20.0 以降がインストールされている。 - IPsec エンドポイント用の PKCS#12 証明書と PEM 形式の CA 証明書がある。
- NMState Operator がインストールされている。
手順
-
ztp-site-generateコンテナーソースの最新バージョンを抽出し、カスタムサイト設定データを管理するリポジトリーとマージします。 クラスター内の IPsec を設定するために必要な値を使用して、
optional-extra-manifest/ipsec/ipsec-config-policy.yamlファイルを設定します。IPsec 設定を作成するための
ConfigurationPolicyオブジェクトapiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: policy-config spec: namespaceSelector: include: ["default"] exclude: [] matchExpressions: [] matchLabels: {} remediationAction: inform severity: low evaluationInterval: compliant: noncompliant: object-templates-raw: | {{- range (lookup "v1" "Node" "" "").items }} - complianceType: musthave objectDefinition: kind: NodeNetworkConfigurationPolicy apiVersion: nmstate.io/v1 metadata: name: {{ .metadata.name }}-ipsec-policy spec: nodeSelector: kubernetes.io/hostname: {{ .metadata.name }} desiredState: interfaces: - name: hosta_conn type: ipsec libreswan: left: '%defaultroute' leftid: '%fromcert' leftmodecfgclient: false leftcert: left_server1 leftrsasigkey: '%cert' right: <external_host>2 rightid: '%fromcert' rightrsasigkey: '%cert' rightsubnet: <external_address>3 ikev2: insist4 type: tunnel次の証明書を
optional-extra-manifest/ipsecフォルダーに追加します。-
left_server.p12: IPsec エンドポイントの証明書バンドル ca.pem: 証明書に署名した認証局証明書ファイルは、各ホストのネットワークセキュリティーサービス (NSS) データベースで必要です。これらのファイルは、後の手順で Butane 設定の一部としてインポートされます。
-
-
カスタムサイト設定データを保持する Git リポジトリーの
optional-extra-manifest/ipsecフォルダーでシェルプロンプトを開きます。 optional-extra-manifest/ipsec/import-certs.shスクリプトを実行して、外部証明書をインポートするために必要な Butane およびMachineConfigCR を生成します。PKCS#12 証明書がパスワードで保護されている場合は、
-W引数を設定します。出力例
out └── argocd └── example └── optional-extra-manifest └── ipsec ├── 99-ipsec-master-import-certs.bu1 ├── 99-ipsec-master-import-certs.yaml2 ├── 99-ipsec-worker-import-certs.bu3 ├── 99-ipsec-worker-import-certs.yaml4 ├── import-certs.sh ├── ca.pem5 ├── left_server.p126 ├── enable-ipsec.yaml ├── ipsec-config-policy.yaml └── README.mdカスタムのサイト設定データを管理するリポジトリーに
custom-manifest/フォルダーを作成し、enable-ipsec.yamlおよび99-ipsec-*YAML ファイルをディレクトリーに追加します。siteconfigディレクトリーの例siteconfig ├── site1-mno-du.yaml ├── extra-manifest/ └── custom-manifest ├── enable-ipsec.yaml ├── 99-ipsec-master-import-certs.yaml └── 99-ipsec-worker-import-certs.yamlSiteConfigCR で、次の例のように、extraManifests.searchPathsフィールドにcustom-manifest/ディレクトリーを追加します。clusters: - clusterName: "site1-mno-du" networkType: "OVNKubernetes" extraManifests: searchPaths: - extra-manifest/ - custom-manifest/-
GitOps の
source-crsディレクトリーにipsec-config-policy.yaml設定ポリシーファイルを格納し、PolicyGeneratorCR の 1 つでそのファイルを参照します。 SiteConfigCR の変更と更新されたファイルを Git リポジトリーにコミットし、変更をプッシュしてマネージドクラスターをプロビジョニングし、IPsec 暗号化を設定します。Argo CD パイプラインが変更を検出し、マネージドクラスターのデプロイを開始します。
クラスターのプロビジョニング中に、GitOps ZTP パイプラインが、
custom-manifest/ディレクトリー内の CR を、extra-manifest/ディレクトリーに保存されているデフォルトの追加マニフェストのセットに追加します。
検証
IPsec 暗号化の検証は、「IPsec 暗号化の検証」を参照してください。