Sail Operator のご紹介: Istio を管理する新しい方法
istio-ecosystem organization のプロジェクトの一部である Istio を管理するための Sail Operator のご紹介です。
Istio 1.23 での In-Cluster IstioOperator の非推奨化と、Istio 1.24 での削除の発表に伴い、Red Hat のチームがistio-ecosystem organization の一部として開発してきた、Istio を管理するための新しい Operatorについて周知したいと思います。
Sail Operator は、Istio コントロールプレーンのライフサイクルを管理し、クラスター管理者による大規模な本番環境での Istio のデプロイ、構成、アップグレードをより簡単かつ効率的にします。新しい構成スキーマを作成したり、車輪の再発明をする代わりに、Sail Operator API は Istio の Helm チャート API を基に構築されています。Istio の Helm チャートで公開されているすべてのインストールおよび構成オプションは、Sail Operator CRD の `values` フィールドから利用できます。つまり、追加で学習することなく、使い慣れた構成を使用して Istio を簡単に管理およびカスタマイズできます。
Sail Operator には主に 3 つのリソース概念があります
- Istio: Istio コントロールプレーンの管理に使用されます。
- Istio Revision: 特定のバージョンとリビジョン名を持つ Istio のインスタンスである、そのコントロールプレーンのリビジョンを表します。
- Istio CNI: Istio の CNI プラグインのリソースとライフサイクルを管理するために使用されます。Istio CNI プラグインをインストールするには、
IstioCNI
リソースを作成します。
現在、Sail Operator の主な機能は更新戦略です。この Operator は、Istio コントロールプレーンのアップグレードを管理するインターフェースを提供します。現在、2 つの更新戦略をサポートしています。
- In Place:
InPlace
戦略では、既存の Istio コントロールプレーンが新しいバージョンに置き換えられ、ワークロードサイドカーはすぐに新しいコントロールプレーンに接続します。これにより、ワークロードをあるコントロールプレーンインスタンスから別のインスタンスに移動する必要がなくなります。 - Revision Based:
RevisionBased
戦略では、Istio.spec.version
フィールドが変更されるたびに新しい Istio コントロールプレーンインスタンスが作成されます。古いコントロールプレーンは、すべてのワークロードが新しいコントロールプレーンインスタンスに移動されるまでそのまま残ります。オプションで、updateWorkloads
フラグを設定すると、新しいコントロールプレーンの準備ができたときにワークロードを自動的に移動できます。
Istio コントロールプレーンのアップグレードにはリスクが伴い、大規模なデプロイでは多大な手作業が必要になる可能性があるため、現在これに注力しています。将来的には、Sail Operator がマルチテナンシーと分離、マルチクラスターフェデレーション、およびサードパーティプロジェクトとの統合をより適切にサポートする方法を検討しています。
Sail Operator プロジェクトはまだアルファ版であり、開発が活発に行われています。istio-ecosystem プロジェクトであるため、Istio プロジェクトの一部としてサポートされていないことに注意してください。コミュニティからのフィードバックと貢献を積極的に求めています。プロジェクトに参加したい場合は、リポジトリのドキュメントと貢献ガイドラインを参照してください。ユーザーの方は、ユーザードキュメントの指示に従って、新しい Operator を試すこともできます。
詳細については、お問い合わせください