第5章 ネットワーク Operator
5.1. Kubernetes NMState Operator
Kubernetes NMState Operator は、NMState の OpenShift Container Platform クラスターのノード間でステートドリブンのネットワーク設定を実行するための Kubernetes API を提供します。Kubernetes NMState Operator は、ユーザーに対して、クラスターノードの各種のネットワークインターフェイスタイプ、DNS、およびルーティングを設定する機能を提供します。さらに、クラスターノードのデーモンは、各ノードの API サーバーへのネットワークインターフェイスの状態の定期的な報告を行います。
Red Hat は、ベアメタル、IBM Power®、IBM Z®、IBM® LinuxONE、VMware vSphere、および OpenStack インストール上の実稼働環境で Kubernetes NMState Operator をサポートします。
OpenShift Container Platform で NMState を使用する前に、Kubernetes NMState Operator をインストールする必要があります。
Kubernetes NMState Operator は、セカンダリー NIC のネットワーク設定を更新します。Operator は、プライマリー NIC のネットワーク設定を更新したり、ほとんどのオンプレミスネットワーク上の br-ex
ブリッジを更新したりすることはできません。
ベアメタルプラットフォームでは、Kubernetes NMState Operator を使用して br-ex
ブリッジネットワーク設定を更新することは、マシン設定マニフェストファイルで br-ex
ブリッジをインターフェイスとして設定した場合にのみサポートされます。br-ex
ブリッジをインストール後のタスクとして更新するには、クラスターの NodeNetworkConfigurationPolicy
カスタムリソース (CR) の NMState 設定で、br-ex
ブリッジをインターフェイスとして設定する必要があります。詳細は、インストール後の設定 の カスタマイズされた br-ex ブリッジを含むマニフェストオブジェクトの作成 を参照してください。
OpenShift Container Platform は nmstate
を使用して、ノードネットワークの状態を報告し、これを設定します。これにより、たとえばすべてのノードに Linux ブリッジを作成するなど、単一の設定マニフェストをクラスターに適用して、ネットワークポリシー設定を変更できるようになります。
ノードのネットワークは、以下のオブジェクトによって監視され更新されます。
NodeNetworkState
- そのノード上のネットワークの状態を報告します。
NodeNetworkConfigurationPolicy
-
ノードで要求されるネットワーク設定を説明します。
NodeNetworkConfigurationPolicy
CR をクラスターに適用して、インターフェイスの追加および削除など、ノードネットワーク設定を更新します。 NodeNetworkConfigurationEnactment
- 各ノードに制定されたネットワークポリシーを報告します。
5.1.1. Kubernetes NMState Operator のインストール
ウェブコンソールまたは CLI を使用して、Kubernetes NMState Operator をインストールできます。
5.1.1.1. Web コンソールを使用した Kubernetes NMState Operator のインストール
Web コンソールを使用して Kubernetes NMState Operator をインストールできます。インストールが完了すると、Operator はすべてのクラスターノードに NMState State Controller をデーモンセットとしてデプロイできます。
前提条件
-
cluster-admin
権限を持つユーザーとしてログインしている。
手順
-
Operators
OperatorHub を選択します。 -
All Items の下の検索フィールドに、
nmstate
と入力し、Enter をクリックして Kubernetes NMState Operator を検索します。 - Kubernetes NMState Operator の検索結果をクリックします。
- Install をクリックして、Install Operator ウィンドウを開きます。
- Install をクリックして Operator をインストールします。
- Operator のインストールが完了したら、View Operator をクリックします。
-
Provided APIs で Create Instance をクリックし、
kubernetes-nmstate
のインスタンスを作成するダイアログボックスを開きます。 ダイアログボックスの Name フィールドで、インスタンスの名前が
nmstate
であることを確認します。注記名前の制限は既知の問題です。インスタンスはクラスター全体のシングルトンです。
- デフォルト設定を受け入れ、Create をクリックしてインスタンスを作成します。
概要
完了後に、Operator はすべてのクラスターノードに NMState State Controller をデーモンセットとしてデプロイしています。
5.1.1.2. CLI を使用した Kubernetes NMState Operator のインストール
OpenShift CLI (oc)
を使用して、Kubernetes NMState Operator をインストールできます。インストールが完了すると、Operator はすべてのクラスターノードに NMState State Controller をデーモンセットとしてデプロイできます。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてログインしている。
手順
nmstate
Operator namespace を作成します。$ cat << EOF | oc apply -f - apiVersion: v1 kind: Namespace metadata: name: openshift-nmstate spec: finalizers: - kubernetes EOF
OperatorGroup
を作成します。$ cat << EOF | oc apply -f - apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: openshift-nmstate namespace: openshift-nmstate spec: targetNamespaces: - openshift-nmstate EOF
nmstate
Operator にサブスクライブします。$ cat << EOF| oc apply -f - apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: kubernetes-nmstate-operator namespace: openshift-nmstate spec: channel: stable installPlanApproval: Automatic name: kubernetes-nmstate-operator source: redhat-operators sourceNamespace: openshift-marketplace EOF
nmstate
Operator デプロイメントのClusterServiceVersion
(CSV) ステータスがSucceeded
であることを確認します。$ oc get clusterserviceversion -n openshift-nmstate \ -o custom-columns=Name:.metadata.name,Phase:.status.phase
出力例
Name Phase kubernetes-nmstate-operator.4.16.0-202210210157 Succeeded
nmstate
Operator のインスタンスを作成します。$ cat << EOF | oc apply -f - apiVersion: nmstate.io/v1 kind: NMState metadata: name: nmstate EOF
NMState Operator のすべての Pod が
Running
状態にあることを確認します。$ oc get pod -n openshift-nmstate
出力例
Name Ready Status Restarts Age pod/nmstate-handler-wn55p 1/1 Running 0 77s pod/nmstate-operator-f6bb869b6-v5m92 1/1 Running 0 4m51s ...
5.1.2. Kubernetes NMState Operator のアンインストール
Operator Lifecycle Manager (OLM) を使用して Kubernetes NMState Operator をアンインストールできますが、設計上、OLM は関連付けられているカスタムリソース定義 (CRD)、カスタムリソース (CR)、API サービスを削除しません。
OLM が使用する Subcription
リソースから Kubernetes NMState Operator をアンインストールする前に、削除する Kubernetes NMState Operator リソースを特定します。そうすることで、実行中のクラスターに影響を与えることなくリソースを削除できます。
Kubernetes NMState Operator を再インストールする必要がある場合は、「CLI を使用した Kubernetes NMState Operator のインストール」または「Web コンソールを使用した Kubernetes NMState Operator のインストール」を参照してください。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
jq
CLI ツールがインストールされている。 -
cluster-admin
権限を持つユーザーとしてログインしている。
手順
次のコマンドを実行して、
Subcription
リソースに対する Kubernetes NMState Operator のサブスクリプションを解除します。$ oc delete --namespace openshift-nmstate subscription kubernetes-nmstate-operator
Kubernetes NMState Operator に関連付けられている
ClusterServiceVersion
(CSV) リソースを見つけます。$ oc get --namespace openshift-nmstate clusterserviceversion
CSV リソースをリストする出力例
NAME DISPLAY VERSION REPLACES PHASE kubernetes-nmstate-operator.v4.18.0 Kubernetes NMState Operator 4.18.0 Succeeded
CSV リソースを削除します。ファイルを削除すると、OLM は Operator 用に作成した
RBAC
などの特定リソースを削除します。$ oc delete --namespace openshift-nmstate clusterserviceversion kubernetes-nmstate-operator.v4.18.0
次のコマンドを実行して、
nmstate
CR と関連するDeployment
リソースを削除します。$ oc -n openshift-nmstate delete nmstate nmstate
$ oc delete --all deployments --namespace=openshift-nmstate
nmstate
CR を削除した後、console.operator.openshift.io/cluster
CR からnmstate-console-plugin
コンソールプラグイン名を削除します。次のコマンドを実行して、有効なプラグインのリスト内に存在する
nmstate-console-plugin
エントリーの位置を保存します。次のコマンドは、jq
CLI ツールを使用して、エントリーのインデックスをINDEX
という名前の環境変数に保存します。INDEX=$(oc get console.operator.openshift.io cluster -o json | jq -r '.spec.plugins | to_entries[] | select(.value == "nmstate-console-plugin") | .key')
次のパッチコマンドを実行して、
console.operator.openshift.io/cluster
CR からnmstate-console-plugin
エントリーを削除します。$ oc patch console.operator.openshift.io cluster --type=json -p "[{\"op\": \"remove\", \"path\": \"/spec/plugins/$INDEX\"}]" 1
- 1
INDEX
は補助変数です。この変数には別の名前を指定できます。
次のコマンドを実行して、
nmstates.nmstate.io
などのカスタムリソース定義 (CRD) をすべて削除します。$ oc delete crd nmstates.nmstate.io
$ oc delete crd nodenetworkconfigurationenactments.nmstate.io
$ oc delete crd nodenetworkstates.nmstate.io
$ oc delete crd nodenetworkconfigurationpolicies.nmstate.io
namespace を削除します。
$ oc delete namespace kubernetes-nmstate