Hatの福岡オフィスでソリューションアーキテクトをしている田中司恩です。15日目のエントリになります。早いもので12月も残すところ半月。アドベントカレンダーも後半戦に突入ですね。書く方も大変ですが、みなさんいろんな視点で良い記事を書かれているので読んでいてとても勉強になります。4(OCP4)の特徴的な機能の1つ、OTA(Over-The-Air)アップデート、通称OTAを紹介します。はじめに[図1]OTAアップデートOTAはOCP4のクラスターを複雑な操作をすることなく更新できる機能です。本番運用中のインフラ環境を定期的にアップデートしていくのは大変な作業が伴います。セキュリティパッチやOSの更新、Kubernetesのアップデート、などなど...OTAはボタンをポチッと押すだけでそれらのアップデートが実行できるので、インフラ運用の負荷軽減に役立ちます。OTAはデフォルトでオンになっている機能ですので、新しいバージョンのリリースを検知したらすぐに更新が実行できます*1。4.1で実行されるKubernetes(K8s)はv1.13でした。4.2になりK8sはv1.14へバージョンが上がっています。OTAでアップグレードすると、OCPだけでなくK8sも同時にアップグレードできます。このお手軽さはOCP4ならではの機能です。OTAはIPI、UPIどちらでクラスターを作成した場合でも可能です。(注意事項)自動でクラスターのアップデートが完了するのは、全てのノードがRHCOSで実行されている場合です*2RHELノードは、RHCOSノードのアップデート実行後に手動でopenshift-ansibleのPlaybookを実行する必要がありますクラスターのバージョンを以前に戻す、ロールバックはサポートされていませんOTAに関するドキュメントは下記になります。4.2アップグレードチャネルアップデート先のバージョンを選択するために、アップグレードチャネルという概念が導入されています。4.2それぞれのバージョンに対応するアップグレードチャネルは下記の通りです*3。4.2candidate-4.2:リリース候補fast-4.2:安定チャネルの前にリリースされるstable-4.2:安定チャネル基本的にはstable-を利用し、いち早くテストしたい場合などにはfast-を利用します。OTA実行の際にはこのチャネルを切り替えて、任意のアップデートバージョンを選択できます。GUIまたはCLIで実行できます。この記事ではGUIでの方法について紹介します。下記はOCP4.2(v4.2.9)のクラスターの例です。今回はv4.2.9→4.2.10のバージョンアップをやってみます。Nowが表示されます。[図2]現在のクラスターバージョンChannelの下のstable-やfast-などのリンクをクリックしてアップグレードチャネルを切り替えます*4。今回はstable-4.2を選択します。Nowを押し、アップデート先のバージョンを選択画面に遷移します。Nowを押してもすぐにOTAが開始されるわけではないのでご安心を。Versionから4.2.10を選択します。押すとアップデートが開始します。確認すると、現在進行中のOperatorのアップデートの様子が確認できます*5。アップデートの実行中はローリングアップデートが実行されます。稼動中のPodの数やノードの数が多いと完了までに時間がかかります。StatusがFailingになることがありますが、正常に進行していれば問題ないので作業完了まで気長に待ちましょう。Statusは下記のような表示になり、無事に作業完了したことを確認できます。Historyを確認すると、開始から完了までにかかった時間を確認できます。4.2のアップデート次に、K8sのバージョンアップを伴うOTAをやってみます。基本的な操作は先ほどと同じです。今回は4.1.27から4.2.10へのアップデートしてみます*6。現在のOCP4.1のクラスターのバージョンを確認します。[図7]現在のクラスターバージョン次にアップグレードチャネルを現在のstable-4.1からstable-4.2に変更します。Availableを押してバージョン選択画面へ遷移し、アップデート先のバージョン(今回は4.2.10)を選択し、Updateを押します。[図9]OTAの実行アップデートが完了し、クラスターのバージョンが4.2.10になっていることが確認できます。[図10]アップデートの完了K8sのバージョン確認K8sのバージョンを確認するとアップデート前(4.1.27)はv1.13.4+2e68ccaでした。v1.13.4+2e68ccaアップデート後(4.2.10)はv1.14.6+17b1cc6になっています。v1.14.6+17b1cc6OCPのアップデートと共にK8sのバージョンが上がっていることが確認できました*7。アップグレードパスについてここからはおまけです。OCP4のアップグレードパスは複雑です。アップグレード元と先の対応関係は各バージョンのリリースノートに記載されています。すべてのバージョンの対応関係を手作業で調べるの大変ですので、簡単に対応図を作成できる下記のナレッジの方法をご紹介します。pathsOCP4のアップグレード情報を取得するAPIが公開されていて、下記のように利用します。Zはz390x出力される情報を利用し、Graphvizを用いて図式化します。サンプルスクリプトが下記に公開されています。"${JQ_SCRIPT}"上記のスクリプトを利用してSVGファイルを作成します。Graphvizの実行コマンドdotとjqを使用するため、必要なパッケージをインストールしてください。stable-4.2(x86-64)のアップグレードパスを出力する例です。stable-4.2.svg下記のような図が出力されます。SVGファイルはWebブラウザなどで閲覧できます。(2019/12/15時点の図)[図11]stable-4.2(x86-64)のアップグレードパスまとめOTAを利用したOCPクラスターのアップデートについてご紹介しました。実際にとても簡単にOCPクラスターの更新を行うことができます。その上OCPのバージョンアップやセキュリティアップデートだけでなく、K8sのアップデートも複雑なことをすることなくできてしまいます。なにかと難しくなりがちなインフラの運用管理も、OCP4とOTAをうまく活用することでエンタープライズな環境へのK8sの導入を進めやすくなるのではないでしょうか。CoreOS*3:nightly-4.1もありますが、ドキュメントに記載が無いので省略します。Hatでコンサルタントをしている織です。各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。