24.8. Kuryr ネットワークプラグインから OVN-Kubernetes ネットワークプラグインへの移行
Red Hat OpenStack Platform (RHOSP) 上で実行されるクラスターの管理者は、Kuryr SDN ネットワークプラグインから OVN-Kubernetes ネットワークプラグインに移行できます。
OVN-Kubernetes の詳細は、OVN-Kubernetes ネットワークプラグインについて を参照してください。
24.8.1. OVN-Kubernetes ネットワークプロバイダーへの移行 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) 上で実行されるクラスターを OVN-Kubernetes ネットワークプロバイダーに手動で移行できます。
OVN-Kubernetes への移行は一方向のプロセスです。移行中、クラスターは短時間アクセスできなくなります。
24.8.1.1. OVN-Kubernetes ネットワークプロバイダーへの移行についての考慮点 リンクのコピーリンクがクリップボードにコピーされました!
Kubernetes namespace は、Kuryr によって別の RHOSP ネットワーキングサービス (Neutron) サブネットに保持されます。個々の Pod に割り当てられているサブネットと IP アドレスは、移行中には保持されません。
24.8.1.2. 移行プロセスの仕組み リンクのコピーリンクがクリップボードにコピーされました!
次の表は、ユーザーが実行する手順とクラスターおよび Operator が実行するアクションを関連付けて、移行プロセスをまとめたものです。
| ユーザーが開始する手順 | 移行アクティビティー |
|---|---|
|
|
|
|
|
|
| クラスターの各ノードを再起動します。 |
|
| Kuryr が管理する残りのリソースをクリーンアップします。 |
|
24.8.2. OVN-Kubernetes ネットワークプラグインへの移行 リンクのコピーリンクがクリップボードにコピーされました!
クラスター管理者は、クラスターのネットワークプラグインを OVN-Kubernetes に変更できます。
移行時に、クラスター内のすべてのノードを再起動する必要があります。クラスターが利用できないため、ワークロードが中断される可能性があります。サービスの中断が許容される場合にのみ移行を実行してください。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。 - etcd データベースの最新のバックアップが利用可能です。
- 各ノードを手動で再起動できます。
- 移行を計画しているクラスターは、エラーがなく、既知の良好な状態にあります。
- Python インタープリターがインストールされている。
-
openstacksdkPython パッケージがインストールされている。 -
openstackCLI ツールがインストールされています。 - 基盤となる RHOSP クラウドにアクセスできます。
手順
次のコマンドを実行して、クラスターネットワークの設定をバックアップします。
oc get Network.config.openshift.io cluster -o yaml > cluster-kuryr.yaml
$ oc get Network.config.openshift.io cluster -o yaml > cluster-kuryr.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow CLUSTERID変数を設定するには、次のコマンドを実行します。CLUSTERID=$(oc get infrastructure.config.openshift.io cluster -o=jsonpath='{.status.infrastructureName}')$ CLUSTERID=$(oc get infrastructure.config.openshift.io cluster -o=jsonpath='{.status.infrastructureName}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのノードの移行を準備するには、次のコマンドを実行して、Cluster Network Operator 設定オブジェクトの
migrationフィールドを設定します。oc patch Network.operator.openshift.io cluster --type=merge \ --patch '{"spec": {"migration": {"networkType": "OVNKubernetes"}}}'$ oc patch Network.operator.openshift.io cluster --type=merge \ --patch '{"spec": {"migration": {"networkType": "OVNKubernetes"}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記この手順では、OVN-Kubernetes はすぐにデプロイしません。
migrationフィールドを指定すると、新規マシン設定がクラスター内のすべてのノードに適用されるように Machine Config Operator (MCO) がトリガーされます。これにより、OVN-Kubernetes デプロイメント用にクラスターが準備されます。オプション: ネットワークインフラストラクチャー要件に合わせて、OVN-Kubernetes の次の設定をカスタマイズします。
- 最大伝送単位 (MTU)
- Geneve (Generic Network Virtualization Encapsulation) オーバーレイネットワークポート
- OVN-Kubernetes IPv4 内部サブネット
- OVN-Kubernetes IPv6 内部サブネット
これらの設定をカスタマイズするには、次のコマンドを入力してカスタマイズします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
mtu-
Geneve オーバーレイネットワークの MTU を指定します。この値は通常は自動的に設定されますが、クラスターにあるノードすべてが同じ MTU を使用しない場合、これを最小のノード MTU 値よりも
100小さく設定する必要があります。 port-
Geneve オーバーレイネットワークの UDP ポートを指定します。値が指定されない場合、デフォルトは
6081になります。このポートは、Kuryr が使用する VXLAN ポートと同じにすることはできません。VXLAN ポートのデフォルト値は4789です。 ipv4_subnet-
OVN-Kubernetes による内部使用のための IPv4 アドレス範囲を指定します。IP アドレス範囲が、OpenShift Container Platform インストールで使用される他のサブネットと重複しないようにする必要があります。IP アドレス範囲は、クラスターに追加できるノードの最大数より大きくする必要があります。デフォルト値は
100.64.0.0/16です。 ipv6_subnet-
OVN-Kubernetes による内部使用のための IPv6 アドレス範囲を指定します。IP アドレス範囲が、OpenShift Container Platform インストールで使用される他のサブネットと重複しないようにする必要があります。IP アドレス範囲は、クラスターに追加できるノードの最大数より大きくする必要があります。デフォルト値は
fd98::/48です。
デフォルト値を変更する必要がない場合は、パッチのキーを省略します。
mtuフィールドを更新するパッチコマンドの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行してマシン設定プールのステータスを確認します。
oc get mcp
$ oc get mcpCopy to Clipboard Copied! Toggle word wrap Toggle overflow MCO は各マシン設定プール内のマシンを更新する際に、各ノードを 1 つずつ再起動します。続行する前に、すべてのノードが更新されるまで待つ必要があります。
正常に更新されたノードには、
UPDATED=true、UPDATING=false、DEGRADED=falseのステータスがあります。注記デフォルトでは、MCO は一度にプールごとに 1 台のマシンを更新します。大規模なクラスターは、小規模なクラスターよりも移行に時間がかかります。
ホスト上の新規マシン設定のステータスを確認します。
マシン設定の状態と適用されたマシン設定の名前をリスト表示するには、以下のコマンドを入力します。
oc describe node | egrep "hostname|machineconfig"
$ oc describe node | egrep "hostname|machineconfig"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
kubernetes.io/hostname=master-0 machineconfiguration.openshift.io/currentConfig: rendered-master-c53e221d9d24e1c8bb6ee89dd3d8ad7b machineconfiguration.openshift.io/desiredConfig: rendered-master-c53e221d9d24e1c8bb6ee89dd3d8ad7b machineconfiguration.openshift.io/reason: machineconfiguration.openshift.io/state: Done
kubernetes.io/hostname=master-0 machineconfiguration.openshift.io/currentConfig: rendered-master-c53e221d9d24e1c8bb6ee89dd3d8ad7b1 machineconfiguration.openshift.io/desiredConfig: rendered-master-c53e221d9d24e1c8bb6ee89dd3d8ad7b2 machineconfiguration.openshift.io/reason: machineconfiguration.openshift.io/state: DoneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 前のステップの出力を確認します。次のステートメントが真である必要があります。
-
machineconfiguration.openshift.io/stateフィールドの値はDoneです。 -
machineconfiguration.openshift.io/currentConfigフィールドの値は、machineconfiguration.openshift.io/desiredConfigフィールドの値と等しくなります。
-
マシン設定が正しいことを確認するには、以下のコマンドを入力します。
oc get machineconfig <config_name> -o yaml | grep ExecStart
$ oc get machineconfig <config_name> -o yaml | grep ExecStartCopy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
- <config_name>
machineconfiguration.openshift.io/currentConfigフィールドからマシン設定の名前を指定します。マシン設定には、systemd 設定に以下の更新を含める必要があります。
出力例
ExecStart=/usr/local/bin/configure-ovs.sh OVNKubernetes
ExecStart=/usr/local/bin/configure-ovs.sh OVNKubernetesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ノードが
NotReady状態でスタックしている場合は、マシン設定デーモン Pod のログを調査し、エラーがあれば解決します。Pod をリスト表示するには、以下のコマンドを入力します。
oc get pod -n openshift-machine-config-operator
$ oc get pod -n openshift-machine-config-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定デーモン Pod の名前は以下の形式になります。
machine-config-daemon-<seq><seq>値は、ランダムな 5 文字の英数字シーケンスになります。以下のコマンドを入力して、直前の出力に表示される最初のマシン設定デーモン Pod の Pod ログを表示します。
oc logs <pod> -n openshift-machine-config-operator
$ oc logs <pod> -n openshift-machine-config-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
- <pod>
- マシン設定デーモン Pod の名前を指定します。
- 直前のコマンドの出力で示されるログ内のエラーを解決します。
移行を開始するには、次のいずれかのコマンドを使用して OVN-Kubernetes ネットワークプラグインを設定します。
クラスターネットワークの IP アドレスブロックを変更せずにネットワークプロバイダーを指定するには、以下のコマンドを入力します。
oc patch Network.config.openshift.io cluster --type=merge \ --patch '{"spec": {"networkType": "OVNKubernetes"}}'$ oc patch Network.config.openshift.io cluster --type=merge \ --patch '{"spec": {"networkType": "OVNKubernetes"}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 別のクラスターネットワーク IP アドレスブロックを指定するには、以下のコマンドを入力します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
- <cidr>
- CIDR ブロックを指定します。
- <prefix>
クラスター内の各ノードに割り当てられる CIDR ブロックのスライスを指定します。
重要移行時に、サービスネットワークのアドレスブロックを変更することはできません。
OVN-Kubernetes ネットワークプロバイダーはこのブロックを内部で使用するため、
100.64.0.0/16CIDR ブロックと重複する CIDR ブロックは使用できません。
移行を完了するには、クラスター内の各ノードを再起動します。たとえば、以下のような bash スクリプトを使用できます。このスクリプトは、
sshを使用して各ホストに接続でき、sudoがパスワードを要求しないように設定されていることを前提としています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記SSH アクセスが利用できない場合は、
openstackコマンドを使用できます。for name in $(openstack server list --name "${CLUSTERID}*" -f value -c Name); do openstack server reboot "${name}"; done$ for name in $(openstack server list --name "${CLUSTERID}*" -f value -c Name); do openstack server reboot "${name}"; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow あるいは、インフラストラクチャープロバイダーの管理ポータルを通じて各ノードを再起動できる場合もあります。それ以外の場合は、適切な機関に問い合わせて、SSH または管理ポータルと OpenStack クライアントを介して仮想マシンにアクセスしてください。
検証
移行が成功したことを確認し、移行リソースを削除します。
ネットワークプラグインが OVN-Kubernetes であることを確認するには、次のコマンドを入力します。
oc get network.config/cluster -o jsonpath='{.status.networkType}{"\n"}'$ oc get network.config/cluster -o jsonpath='{.status.networkType}{"\n"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow status.networkTypeの値はOVNKubernetesである必要があります。クラスターノードが
Ready状態にあることを確認するには、以下のコマンドを実行します。oc get nodes
$ oc get nodesCopy to Clipboard Copied! Toggle word wrap Toggle overflow Pod がエラー状態ではないことを確認するには、以下のコマンドを入力します。
oc get pods --all-namespaces -o wide --sort-by='{.spec.nodeName}'$ oc get pods --all-namespaces -o wide --sort-by='{.spec.nodeName}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow ノードの Pod がエラー状態にある場合は、そのノードを再起動します。
すべてのクラスター Operator が異常な状態にないことを確認するには、以下のコマンドを入力します。
oc get co
$ oc get coCopy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのクラスター Operator のステータスは、
AVAILABLE="True"、PROGRESSING="False"、DEGRADED="False"になります。クラスター Operator が利用できないか、そのパフォーマンスが低下する場合には、クラスター Operator のログで詳細を確認します。重要これまでの検証手順のいずれかでエラーが示された場合は、続行しないでください。クリーンアップ中に削除されたファイナライザーが原因で、
Terminating状態の Pod が発生する場合があります。これらはエラーを示すものではありません。
移行が完了し、クラスターが良好な状態にある場合は、次のコマンドを入力して、CNO 設定オブジェクトから移行設定を削除します。
oc patch Network.operator.openshift.io cluster --type=merge \ --patch '{"spec": {"migration": null}}'$ oc patch Network.operator.openshift.io cluster --type=merge \ --patch '{"spec": {"migration": null}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
24.8.3. 移行後のリソースのクリーンアップ リンクのコピーリンクがクリップボードにコピーされました!
Kuryr ネットワークプラグインから OVN-Kubernetes ネットワークプラグインに移行した後、Kuryr が以前に作成したリソースをクリーンアップする必要があります。
クリーンアッププロセスは、Python 仮想環境に依存して、使用するパッケージバージョンが Octavia オブジェクトのタグをサポートしていることを確認します。お使いの環境で次が使用されている場合には、仮想環境は必要ありません。
-
openstacksdkPython パッケージバージョン 0.54.0 -
python-openstackclientPython パッケージバージョン 5.5.0 -
python-octaviaclientPython パッケージバージョン 2.3.0
これらの特定のバージョンを使用する場合は、トランクにアクセスできなくなるため、必ずバージョン 9.0.0 より前の python-neutronclient をプルしてください。
前提条件
-
OpenShift Container Platform CLI (
oc) をインストールしている。 - Python インタープリターをインストールしている。
-
openstacksdkPython パッケージがインストールされている。 -
openstackCLI がインストールされている。 - 基盤となる RHOSP クラウドにアクセスできます。
-
クラスター管理者ロールを持つユーザーとしてクラスターにアクセスできます。
手順
クリーンアップ Python 仮想環境を作成します。
環境用の一時ディレクトリーを作成します。以下に例を示します。
python3 -m venv /tmp/venv
$ python3 -m venv /tmp/venvCopy to Clipboard Copied! Toggle word wrap Toggle overflow /tmp/venvディレクトリーにある仮想環境は、すべてのクリーンアップ例で使用されます。仮想環境に入ります。以下に例を示します。
source /tmp/venv/bin/activate
$ source /tmp/venv/bin/activateCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、仮想環境で
pipコマンドをアップグレードします。(venv) $ pip install --upgrade pip
(venv) $ pip install --upgrade pipCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、必要な Python パッケージをインストールします。
(venv) $ pip install openstacksdk==0.54.0 python-openstackclient==5.5.0 python-octaviaclient==2.3.0 'python-neutronclient<9.0.0'
(venv) $ pip install openstacksdk==0.54.0 python-openstackclient==5.5.0 python-octaviaclient==2.3.0 'python-neutronclient<9.0.0'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ターミナルで、次のコマンドを実行して、クラスター識別子と Kuryr 識別子に変数を設定します。
cluster ID を設定します。
(venv) $ CLUSTERID=$(oc get infrastructure.config.openshift.io cluster -o=jsonpath='{.status.infrastructureName}')(venv) $ CLUSTERID=$(oc get infrastructure.config.openshift.io cluster -o=jsonpath='{.status.infrastructureName}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow cluster タグを設定します。
(venv) $ CLUSTERTAG="openshiftClusterID=${CLUSTERID}"(venv) $ CLUSTERTAG="openshiftClusterID=${CLUSTERID}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow router ID を設定します。
(venv) $ ROUTERID=$(oc get kuryrnetwork -A --no-headers -o custom-columns=":status.routerId"|uniq)
(venv) $ ROUTERID=$(oc get kuryrnetwork -A --no-headers -o custom-columns=":status.routerId"|uniq)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のコマンドを実行して、指定されたリソースからファイナライザーを削除する Bash 関数を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この関数は 2 つのパラメーターを受け取ります。最初のパラメーターはリソースの名前で、2 番目のパラメーターは削除するファイナライザーです。指定されたリソースがクラスターから削除され、その定義は、指定されたファイナライザーを除いて、コピーされたデータに置き換えられます。
Kuryr ファイナライザーをサービスから削除するには、次のコマンドを入力します。
(venv) $ REMFIN services kuryr.openstack.org/service-finalizer
(venv) $ REMFIN services kuryr.openstack.org/service-finalizerCopy to Clipboard Copied! Toggle word wrap Toggle overflow Kuryr
service-subnet-gateway-ipサービスを削除するには、次のコマンドを入力します。(venv) $ if oc get -n openshift-kuryr service service-subnet-gateway-ip &>/dev/null; then oc -n openshift-kuryr delete service service-subnet-gateway-ip fi(venv) $ if oc get -n openshift-kuryr service service-subnet-gateway-ip &>/dev/null; then oc -n openshift-kuryr delete service service-subnet-gateway-ip fiCopy to Clipboard Copied! Toggle word wrap Toggle overflow タグ付けされたすべての RHOSP ロードバランサーを Octavia から削除するには、次のコマンドを入力します。
(venv) $ for lb in $(openstack loadbalancer list --tags "${CLUSTERTAG}" -f value -c id); do openstack loadbalancer delete --cascade "${lb}" done(venv) $ for lb in $(openstack loadbalancer list --tags "${CLUSTERTAG}" -f value -c id); do openstack loadbalancer delete --cascade "${lb}" doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow すべての
KuryrLoadBalancerCR から Kuryr ファイナライザーを削除するには、次のコマンドを入力します。(venv) $ REMFIN kuryrloadbalancers.openstack.org kuryr.openstack.org/kuryrloadbalancer-finalizers
(venv) $ REMFIN kuryrloadbalancers.openstack.org kuryr.openstack.org/kuryrloadbalancer-finalizersCopy to Clipboard Copied! Toggle word wrap Toggle overflow openshift-kuryrnamespace を削除するには、次のコマンドを入力します。(venv) $ oc delete namespace openshift-kuryr
(venv) $ oc delete namespace openshift-kuryrCopy to Clipboard Copied! Toggle word wrap Toggle overflow Kuryr サービスのサブネットをルーターから削除するには、次のコマンドを入力します。
(venv) $ openstack router remove subnet "${ROUTERID}" "${CLUSTERID}-kuryr-service-subnet"(venv) $ openstack router remove subnet "${ROUTERID}" "${CLUSTERID}-kuryr-service-subnet"Copy to Clipboard Copied! Toggle word wrap Toggle overflow Kuryr サービスネットワークを削除するには、次のコマンドを入力します。
(venv) $ openstack network delete "${CLUSTERID}-kuryr-service-network"(venv) $ openstack network delete "${CLUSTERID}-kuryr-service-network"Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべての Pod から Kuryr ファイナライザーを削除するには、次のコマンドを入力します。
(venv) $ REMFIN pods kuryr.openstack.org/pod-finalizer
(venv) $ REMFIN pods kuryr.openstack.org/pod-finalizerCopy to Clipboard Copied! Toggle word wrap Toggle overflow すべての
KuryrPortCR から Kuryr ファイナライザーを削除するには、次のコマンドを入力します。(venv) $ REMFIN kuryrports.openstack.org kuryr.openstack.org/kuryrport-finalizer
(venv) $ REMFIN kuryrports.openstack.org kuryr.openstack.org/kuryrport-finalizerCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは
KuryrPortCR を削除します。Kuryr ファイナライザーをネットワークポリシーから削除するには、次のコマンドを入力します。
(venv) $ REMFIN networkpolicy kuryr.openstack.org/networkpolicy-finalizer
(venv) $ REMFIN networkpolicy kuryr.openstack.org/networkpolicy-finalizerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 残りのネットワークポリシーから Kuryr ファイナライザーを削除するには、次のコマンドを入力します。
(venv) $ REMFIN kuryrnetworkpolicies.openstack.org kuryr.openstack.org/networkpolicy-finalizer
(venv) $ REMFIN kuryrnetworkpolicies.openstack.org kuryr.openstack.org/networkpolicy-finalizerCopy to Clipboard Copied! Toggle word wrap Toggle overflow Kuryr が作成したサブポートをトランクから削除するには、次のコマンドを入力します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow KuryrNetworkCR からすべてのネットワークとサブネットを取得し、ポート、ルーターインターフェイス、およびネットワーク自体を削除するには、次のコマンドを入力します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Kuryr セキュリティーグループを削除するには、次のコマンドを入力します。
(venv) $ openstack security group delete "${CLUSTERID}-kuryr-pods-security-group"(venv) $ openstack security group delete "${CLUSTERID}-kuryr-pods-security-group"Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのタグ付きサブネットプールを削除するには、次のコマンドを入力します。
(venv) $ for subnetpool in $(openstack subnet pool list --tags "${CLUSTERTAG}" -f value -c ID); do openstack subnet pool delete "${subnetpool}" done(venv) $ for subnetpool in $(openstack subnet pool list --tags "${CLUSTERTAG}" -f value -c ID); do openstack subnet pool delete "${subnetpool}" doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow KuryrNetworkCR に基づくすべてのネットワークが削除されたことを確認するには、次のコマンドを入力します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドによって既存のネットワークが返された場合は、続行する前にそれらを調査して削除してください。
ネットワークポリシーに関連するセキュリティーグループを削除するには、次のコマンドを入力します。
(venv) $ for sgid in $(openstack security group list -f value -c ID -c Description | grep 'Kuryr-Kubernetes Network Policy' | cut -f 1 -d ' '); do openstack security group delete "${sgid}" done(venv) $ for sgid in $(openstack security group list -f value -c ID -c Description | grep 'Kuryr-Kubernetes Network Policy' | cut -f 1 -d ' '); do openstack security group delete "${sgid}" doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow KuryrNetworkCR からファイナライザーを削除するには、次のコマンドを入力します。(venv) $ REMFIN kuryrnetworks.openstack.org kuryrnetwork.finalizers.kuryr.openstack.org
(venv) $ REMFIN kuryrnetworks.openstack.org kuryrnetwork.finalizers.kuryr.openstack.orgCopy to Clipboard Copied! Toggle word wrap Toggle overflow Kuryr ルーターを削除するには、次のコマンドを入力します。
(venv) $ if python3 -c "import sys; import openstack; n = openstack.connect().network; r = n.get_router('$ROUTERID'); sys.exit(0) if r.description != 'Created By OpenShift Installer' else sys.exit(1)"; then openstack router delete "${ROUTERID}" fi(venv) $ if python3 -c "import sys; import openstack; n = openstack.connect().network; r = n.get_router('$ROUTERID'); sys.exit(0) if r.description != 'Created By OpenShift Installer' else sys.exit(1)"; then openstack router delete "${ROUTERID}" fiCopy to Clipboard Copied! Toggle word wrap Toggle overflow