ここでは、全コンポーネントをまとめて更新する手順について説明します。
以下の事項が前提です。
「12.2 事前準備」を実行していること。
CI Managementのバックアップが取得されていること(CI Managementの切り戻しに必要です)。
Log Managementのバックアップが取得されていること(Log Managementの切り戻しに必要です)。
Metrics Managementのバックアップが取得されていること(Metrics Managementの切り戻しに必要です)。
注意
本手順実施前に下記ページを参照し、それぞれの手順前に記載されている注意事項を確認してください。
Kubernetes masterサーバーで、以下の手順を行うことで全コンポーネントをまとめて更新できます。
事前準備
更新前に以下のコマンドを実行し、更新に必要なファイルを生成します。
$ cd /var/FJSGHD/playbook $ ansible-playbook -i /var/FJSGHD/inventories/hosts play_create_playbook_for_update_tool.yml
全コンポーネントの一括更新
以下のコマンドを実行し、全コンポーネントをまとめて更新します。 コマンド実行時にオプションを指定することができます。 オプションの詳細については、下記参考をご覧ください。
$ ansible-playbook -i /var/FJSGHD/inventories/hosts play_update.yml
コマンドを実行すると、以下のメッセージが表示されます。誤って実行した場合や前提・業務無停止の条件を満たしていない場合は、「n」を入力し、Enterキーを押下することで更新を中断できます。更新を継続する場合は「y」を入力し、Enterキーを押下します。
[Please confirm] ============================================================== [WARNING] Take a backup before update. Backup is required for backout. Do you want to update? (y/n) ============================================================== :
参考
【オプション説明】
以下に示すコマンドオプションを利用することができます。
-eオプション
$ ansible-playbook -i /var/FJSGHD/inventories/hosts play_update.yml -e <指定値>
指定値 | オプション説明 |
---|---|
no_interactive=True | 更新確認のための y/n 入力をスキップします。 |
interactive_update=False | 更新中、ロードバランサーからKubernetes nodeサーバーへの振り分け停止/再開を行う操作の確認のためのEnterキーの入力待ちをスキップできます。 |
helm_upgrade_timeout=<タイムアウト時間> | 各OSSはhelmでインストールされており、helm upgradeで更新されます。本パラメータは、helm upgradeが完了するまでの待ち時間を設定します。「設計ガイド」の各章に記載の資源見積もりを標準的な規模とし、デフォルト値を630mとしています。設定値のフォーマットは「概説書」-「Application Management」-「helm」の公式マニュアルを参照してください。タイムアウト時間変更については、事前に開発環境でご確認の上、本番環境では十分に余裕のある値を設定してください。 |
注意
Kubernetesの更新処理では、Kubernetes nodeサーバーを1台ずつ更新します。 nodeサーバーが2台以上存在する場合、nodeサーバーをメンテナンスする前後に以下のメッセージが出力され更新処理が一時停止されます。 業務無停止で更新するためには、nodeサーバーへのリクエスト振り分けの制御が必要です。前述の注意事項を確認した上で、 ロードバランサーからnodeサーバーへの振り分け停止および再開を実施し、Enterキーを押下してください。
メンテナンス前には以下のメッセージが表示されます。
【メッセージ】
[update/container_mng/k8s_cluster : confirm] ====================================================== [WARNING] Updating the version of the kubernetes node [<IPアドレス>] to <バージョン>. Please stop routing requests to the kubernetes node [<IPアドレス>] from the load balancer. If you have stopped routing requests, please press the enter key. ======================================================
【説明】
<IPアドレス>のKubernetes nodeサーバーを<バージョン>にアップデートします。 ロードバランサーから<IPアドレス>のKubernetes nodeサーバーへの振り分けを停止してください。 振り分け停止後、Enterキーを押下し、処理を再開してください。
メンテナンス後には以下のメッセージが表示されます。
【メッセージ】
[update/container_mng/k8s_cluster : confirm] ====================================================== [WARNING] The kubernetes node [<IPアドレス>] has been updated to <バージョン>. Please resume routing requests to the kubernetes node [<IPアドレス>] from the load balancer. If you have resumed routing requests, please press the enter key. ======================================================
【説明】
<IPアドレス>のKubernetes nodeサーバーを<バージョン>にアップデートしました。 ロードバランサーから<IPアドレス>のKubernetes nodeサーバーへの振り分けを再開してください。 振り分け再開後、Enterキーを押下し、処理を再開してください。
【正常終了時】
正常終了時は下記のようにunreachable=0, failed=0となり、XX、YYは任意の整数が記載されています。
PLAY RECAP ********************************************************************* 127.0.0.1 : ok=XX changed=YY unreachable=0 failed=0
【異常終了時】
異常終了時は下記のようにunreachable, failedのAAおよびBBは1以上の任意の整数が記載されています。
PLAY RECAP ********************************************************************* 127.0.0.1 : ok=XX changed=YY unreachable=AA failed=BB
参考
Container Managementの更新は、Podの退避処理(Drain k8s_nodeタスク)に失敗した場合、 退避が正常に行えるように修正後、下記コマンドを再実行することで現在のバージョンから更新を再開することができます。
$ ansible-playbook -i /var/FJSGHD/inventories/hosts play_create_playbook_for_update_tool.yml $ ansible-playbook -i /var/FJSGHD/inventories/hosts play_update_container_mng.yml
注意
本手順実施後に下記ページを参照し、それぞれの手順後に記載されている注意事項を確認してください。