BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース OperatorsHub.io - Kubernetes Operatorの公開レジストリ

OperatorsHub.io - Kubernetes Operatorの公開レジストリ

原文(投稿日:2019/03/15)へのリンク

Red Hatは先頃、Microsoft、Google Cloud、Amazon Web Servicesと共同でOperatorHub.ioローンチした。OperatorHub.ioは,Kubernetes Operatorsが支援するサービスを見つけるための公開レジストリとしてデザインされている。

Operatorsは元々,Kubernetesユーザに代わってアプリケーションインスタンスの生成,構成,管理を行うKubernetes APIを拡張したアプリケーション特有のコントローラとして,CoreOSが2016年に導入したものだ。Kubernetesのユーザにとっては、ルーチン作業や複雑なタスク、アップデート、バックアップ、アプリケーションのスケールアップなどを自動化するというメリットもある。

Operatorsは,いわゆるKubernetesアプリケーション — すなわち,Kubernetes上にデプロイされたアプリケーションと,Kubernetes APIとKubernetesツールを使用して管理されるアプリケーションの両方をパッケージ化し,デプロイし,管理するための手段である。

Kubernetesアプリケーションの開発をより簡単にするために,Red HatとKubernetesは,Operator Frameworkをオープンソースとして公開した。Operator Frameworkは,次のものを提供するツールキットである。

  • Operator SDK — 開発者は,複雑なKubernetes APIに関する知識を必要とすることなく,自身の専門知識に基づいてOperatorを開発することができる。
  • Operator Lifecycle Manager — Kubernetesクラスタ上で実行されるすべてのOperatorのインストール,更新,およびライフサイクル管理を行う。
  • Operator Metering — 特化したサービスを提供するOperatorの使用状況のレポートを可能にする。

Operator SDKは、Go、Ansible、Helmなど,一連の言語を使用したOperatorの開発をサポートする。Goで開発する場合の基本的なワークフローは次のようなものになる。

  • SDK Command Line Interface(CLI)を使って新たなOperatorプロジェクトを生成する
  • Custom Resource Definitions(CRD)を追加して,新たなリソースAPIを定義する
  • リソースの監視と調整を行うControllerを定義する
  • SDKとControllerランタイムAPIを使って,Controllerの調整ロジックを記述する
  • SDK CLIを使ってOperator展開マニフェストの構築と生成を行う

Operatorの記述についてより詳しく学ぶために,GoAnsible,およびHelm用のガイドが用意されている。さらにoperator-sdk-samplesレポジトリで,Operator SDKを使用して構築されたOperatorについて調べることも可能だ。

Google CloudのグループプロダクトマネージャであるAparna Sinha氏によると,Goole Cloudでは,コミュニティによるOperatorの開発や品質評価に対する投資を行っており,現在ではGoogle Kubernetes Engine(GKE)クラスタの40パーセント以上で,ステートフルなアプリケーションが稼働しているということだ。

Red Hatでコミュニティ開発のディレクタを務めるDiane Mueller氏によると,OperatorをOperatorHub.ioに登録する上で考慮が必要なのは,クラスタライフサイクルに従っていること,Operator FrameworkのOperator Lifecycle Managementを通じてメンテナンス可能であること,およびユーザに許容されるドキュメンテーションである。

現在OperatorHub.ioにリストされているOperatorとしては,Amazon Web Services Operator, Couchbase Autonomous Operator, CrunchyData's PostgreSQL, etcd Operator, Jaeger Operator for Kubernetes, Kubernetes Federation Operator, MongoDB Enterprise Operator, Percona MySQL Operator, PlanetScale's Vitess Operator, Prometheus Operator, Redis Operatorなどがある。

Operatorを登録するには,OperatorHub.io community operatorsリポジトリcommunity-operators/ディレクトリ内に,送信するOperatorの名前のディレクトリを新たに作成した上で,Pull Requestを送信する必要がある。

$ ls community-operators/my-operator/
my-operator.v1.0.0.clusterserviceversion.yaml
my-operator-crd1.crd.yaml
my-operator-crd2.crd.yaml
my-operator.package.yaml

ディレクトリ名とpackage.yaml内の新しいOperatorの名称が一致しなければならない点に注意が必要だ。

OperatorHubの各エントリには,すべてのCustom Resource Definition(CRD),アクセス制御ルール,Operatorのインストールと安全な実行に必要なコンテナイメージへの参照,機能の説明,サポートするKubernetesバージョンが含まれる。

Operatorの提出と更新に関する詳細は,コントリビューションガイドに掲載されている。

この記事に星をつける

おすすめ度
スタイル

BT