マイナビニュースマイナビ

NoOps時代到来! システム運用の自動化~Kubernetes Operator~

【連載】

Kubernetes入門

【第23回】NoOps時代到来! システム運用の自動化~Kubernetes Operator~

[2021/07/12 08:00]正野 勇嗣 ブックマーク ブックマーク

手作業によるシステム運用を自動化するトレンド

近年、クラウドやコンテナなどの技術が進展したことでインフラをコード化して扱うことも可能となり、IaC(Infrastructure as Code)と呼ばれています。

これを活用し、システム運用を自動化する動きが活発になってきました。システムの監視や運用保守作業を行う「システム運用者(Operator)」は、環境構築手順書などを基にさまざまな作業を実施する職種として知られていますが、今IT転職市場では、これをさらに発展させた仕事として、システム運用作業をコード化する「SRE(Site Reliability Engineer)」が人気職種の一つとなっています。

Kubernetesにおけるシステム運用(標準機能)

Kubernetesは、システム運用として実現したい内容をマニフェストで宣言的に記述し、以下のようなシステム運用作業はKubernetesの標準機能により自動実行されます。

  • 障害時の復旧作業:ReplicaSetで指定されたPod数を維持するセルフヒーリング
  • アプリケーションの入替作業:Deploymentで指定されたソフトウェアのバージョンにシステム無停止で差し替えるローリングアップデート
  • 負荷量に応じた増設作業:HorizontalPodAutoscalerで定義された監視条件に基づくスケールアウト

上記を下支えしている自動実行の仕組みである「Reconciliation Loop」は、「Observve」→「Analyze」→「Act」の3ステップを回すことにより、システムの状態に応じた運用処理を自動実行します。詳細については本連載の第10回をご参照ください。

イメージ

Kubernetes Operatorとは

前述のような、Kubernetes標準機能だけでは、本番運用に求められるシステム要件を全て満たせるとは限りません。

「Kubernetes Operator」は、Kubernetesの高い拡張性を活かし、システム固有の運用作業を自動化するものです。実はこれまでの連載で紹介した「Argo CD」や「Tekton」などもKubernetes Operatorの一つです。

Kubernetes OperatorはカスタムコントローラーとCRD(Custom Resource Definition)の組み合わせで実現されます。ちなみに、CRDはKubernetesのv1.16でGA(v1.0)となりました。

        
  コントローラ リソース リソース定義
Kubernetes標準 Kubernetes標準のコントローラー:Deployment Controllerなど 標準リソース:Pod/ReplicaSet/Deploymentなど 標準リソースの定義
Kubernetes Operator カスタム コントローラー CR(Custom Resource):個別のプロジェクト用にカスタマイズされたリソース CRD(Custom Resource Definition):CRを定義するリソース

Kubernetes界隈のコミュニティでは、Kubernetes Operatorを活用した先進的な事例が多く見られます。

OperatorHub.io

Kubernetes Operatorを使ってみたい方は、「OperatorHub.io」と呼ばれるKubernetes Operatorのパブリックレジストリを活用すると良いでしょう。2021年7月4日時点で192件のKubernetes Operatorが登録されており、5つの成熟度(Capability Level)別で見ると以下の登録件数(括弧内の数字)となっています。成熟度の高いものを試してみると良いでしょう。

  • Basic Install(89)
  • Seamless Upgrade(44)
  • Full Lifecycle(31)
  • Deep Insights(19)
  • Auto Pilot(9)

Kubernetes Operatorの開発

Kubernetes Operatorは具体的にどうやって開発すれば良いのでしょうか? Webアプリケーション開発用にGin(Go言語)やSpring(Java)などのフレームワークがあるのと同様に、Kubernetes Operator開発用には「Operator Framework」や「Kubebuilder」といったフレームワークがあります。

Operator Frameworkの構成要素は以下の3点です。

  • Operator SDK:Operator開発のツールキットで、ベース(scaffold)となるKubernetes Operatorのコードを自動生成できます。
  • Operator Lifecycle Manager:開発したKubernetes OperatorのK8sクラスタへのデプロイや管理を行います。
  • Operator Metering:アプリケーションの使用状況を測定します。

2020年7月10日に、Operator SDKのv0.19.0がリリースされ、Kubebuilderのインタフェースに揃えられました。利用方法が大きく異なるので、リリース日より古い記事を参照すると動作しないケースがあるため注意しましょう(例:operator-sdkコマンドのnewオプションが無くなり、代わりにinitオプションを利用するように変更)。

なお、もしOperator Frameworkなどのフレームワークを使わず、自由度の高い機能実装がしたい場合は、やや学習コストは高いですが、「Client-go」と「code-generator」の活用を検討してみても良いでしょう。

* * *

パプリッククラウドの各種マネージドサービス、DevOpsやSREやIaCなど、昨今のシステム運用の自動化はIT業界の一つのトレンドとなっています。Kubernetes Operatorを活用することで、システム運用の自動化は更に加速していくことでしょう。さすがに、システム運用者が一切不要になるところまではまだ来ていませんが、基盤人材やシステム運用人材の在り方が少しずつ変わっていくことは間違いないのではないでしょうか。

著者紹介


正野 勇嗣 (SHONO Yuji ) - NTTデータ 部長

2011年まで開発自動化技術のR&Dに従事。その後、開発プロジェクト支援やトラブルシューティング等に主戦場を移す。「ソースコード自動生成」に加えて、JenkinsやMaven等の「ビルド自動化」、JsTestDriverやSelenium等の「テスト自動化」を扱うようになり、多様化する開発自動化技術動向に興味。

最近は第四の自動化であるInfrastructure as Code等の「基盤自動化」の魅力に惹かれている。開発自動化技術に関する雑誌・記事執筆も行う。3児のパパ。

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

一覧はこちら

連載目次

もっと知りたい!こちらもオススメ

アプリを動かしたいときに、すぐにデプロイできる「IBM Cloud Code Engine」

アプリを動かしたいときに、すぐにデプロイできる「IBM Cloud Code Engine」

日本IBMはこのほど、コンテナ実行環境「IBM Cloud Code Engine」に関するメディア向けの技術説明会を開催した。

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で TECH+ の人気記事をお届けします
注目の特集/連載
[解説動画] Googleアナリティクス分析&活用講座 - Webサイト改善の正しい考え方
Slackで始める新しいオフィス様式
Google Workspaceをビジネスで活用する
ニューノーマル時代のオウンドメディア戦略
ミッションステートメント
次世代YouTubeクリエイターの成長戦略
IoTでできることを見つけるための発想トレーニング
教えてカナコさん! これならわかるAI入門
AWSではじめる機械学習 ~サービスを知り、実装を学ぶ~
Kubernetes入門
SAFeでつくる「DXに強い組織」~企業の課題を解決する13のアプローチ~
マイクロサービス時代に活きるフレームワーク Spring WebFlux入門
AWSで作るマイクロサービス
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
セキュリティアワード特設ページ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

会員登録(無料)

ページの先頭に戻る