Cluster Apps の管理
Cluster Apps は、カタログにある既製のアプリを Kubernetes Autopilot クラスターにインストールし、クラスター内で動作しているアプリを表示します。インストール、詳細の確認、アップグレード、アンインストールは、クラスターの詳細ページから行えます。
アプリはクラスター内で動作し、クラスターの容量を使用します。アプリはお客様のものです。このページから管理することも、helm、kubectl、Lens などの任意の Kubernetes ツールで管理することもできます。
Cluster Apps と Marketplace
どちらも既製のアプリを提供しますが、仕組みが異なります。
| Marketplace | Cluster Apps | |
|---|---|---|
| アプリが動作する場所 | プラットフォーム上(管理はプラットフォームが担当) | お客様自身の Autopilot クラスター内 |
| アプリを管理する人 | プラットフォーム | お客様 |
| 課金 | アプリ料金と使用リソース | 個別の課金なし(クラスターのサイズ分のみ) |
| 場所 | Marketplace メニュー | クラスター詳細ページの Apps セクション |
プラットフォームにアプリを運用してほしい場合は Marketplace を選びます。お客様が管理するクラスターで、自身のワークロードのそばにアプリを置きたい場合は Cluster Apps を選びます。
Apps セクションを開く
- Kubernetes >> Autopilot を開き、クラスター名をクリックします。
- クラスターメニューで Apps を開きます。
- Installed: クラスターで動作しているアプリの一覧です。
- Catalog: インストールできるアプリの一覧です。
クラスターは Running である必要があります。
カタログ
| アプリ | カテゴリ | 内容 |
|---|---|---|
| CloudNativePG | Database | PostgreSQL クラスターを実行・管理する Operator。フェイルオーバー、バックアップ、ローリングアップデートに対応します。 |
| Kyverno | Security | 宣言的なポリシーに基づいて Kubernetes リソースを検証、変更、生成するポリシーエンジン。 |
| NGINX Ingress Controller | Networking | F5 NGINX による Ingress Controller。HTTP と HTTPS のトラフィックをクラスター内の Service にルーティングします。 |
| Percona Operator for MongoDB | Database | Percona Server for MongoDB のレプリカセットとシャードクラスターを運用する Operator。バックアップとポイントインタイムリカバリーに対応します。 |
| Percona Operator for MySQL | Database | Percona XtraDB Cluster(同期レプリケーションによる高可用性 MySQL)を運用する Operator。バックアップとポイントインタイムリカバリーに対応します。 |
| Strimzi | Messaging | Kubernetes リソースを通じて Apache Kafka のクラスター、トピック、ユーザーを運用する Operator。 |
| Valkey | Database | インメモリのキーバリューストア。Redis のオープンソースフォーク。 |
各カタログエントリは、検証済みの chart バージョンと、小規模なクラスター向けのデフォルト値を使用します。カタログは今後拡充されます。
アプリをインストールする
- Apps >> Catalog を開き、アプリの Install をクリックします。
- Release name と Namespace を確認します。どちらもカタログのデフォルト値が入力されています。namespace が存在しない場合は作成されます。
- 必要に応じて Values (YAML) を編集します。エディターにはカタログのデフォルト値が入っています。入力した値がデフォルト値を上書きし、エディターを空にすると chart 自体のデフォルト値が使われます。
- Check capacity をクリックします。プラットフォームが入力した値でアプリをレンダリングし、何もインストールせずにクラスターに対してチェックします。
- 結果が The app fits in this cluster であれば、Install をクリックします。現在の入力でチェックに合格するまで Install は無効です。入力を変更した場合は、もう一度チェックしてください。
アプリの詳細パネルが開きます。Pod の起動に合わせて、ワークロードは Starting から Ready に変わります。
1 つのクラスターで同時に実行できるインストールまたはアップグレードは 1 つだけです。別の操作が実行中の場合は、少し待ってから再試行してください。
容量チェックの結果
チェックに合格しなかった場合は The app cannot be installed as it is と表示され、理由が示されます。
| 理由 | 対処 |
|---|---|
| Not enough capacity | リソースごとに、アプリが必要とする量、利用可能な量、不足分が表で示され、収まる最小のクラスターサイズ(Smallest cluster size that fits)も表示されます。Resize cluster でクラスターを拡大するか、アプリの値(レプリカ数、request、limit)を下げてください。 |
| Request above its limit | コンテナーの request が limit を超えています。limit を request 以上に設定してください。 |
| Resource values required | コンテナーに CPU、メモリー、ストレージの値がなく、クラスターのデフォルトもありません。values で設定してください。 |
| Pod Security | アプリが、Autopilot クラスターの Pod に許可されていない権限(特権モードやホストパスなど)を必要としています。このアプリは Autopilot クラスターでは実行できません。 |
| Kubernetes version | アプリがクラスターの Kubernetes バージョンに対応していません。対応バージョンがあれば、クラスターをアップグレードしてください。 |
| The chart cannot be rendered | values がこのアプリに対して無効です。メッセージにエラーが表示されます。 |
| Not enough room to uninstall | アプリは収まりますが、アンインストール時にアプリが実行する処理(アドミッション Webhook の削除など)のための余裕がクラスターに残りません。アンインストールが途中で止まり、一部が残ってしまいます。推奨サイズにクラスターをリサイズするか、アプリの値を下げてください。 |
合格したチェックでも、警告が表示されることがあります。
| 警告 | 意味 |
|---|---|
| Little room for updates | アプリは収まりますが、ローリングアップデートで起動する追加の Pod のための余裕がほとんどありません。後のアップデートが、クラスターを拡大するまで途中で止まる可能性があります。 |
| Little room for autoscaling | 残りの容量では、アプリのオートスケーラーが最大 Pod 数に達することができません。 |
| No quota | クラスターに容量の上限が設定されていないため、容量はチェックされていません。 |
CloudNativePG や Strimzi などの Operator は、データベースや Kafka クラスターを作成したときに、後から Pod を追加で起動します。これらの Pod はチェックの対象外であり、結果にもその旨が表示されます。そのための余裕を残しておいてください。
インストール済みのアプリを表示する
Apps >> Installed には、クラスター内のすべてのアプリのリリースが、namespace、chart とバージョン、ソース、ステータス、ワークロード、最終更新とともに表示されます。namespace で絞り込んだり、名前で検索したりできます。
Source 列はアプリの由来を示します。
- Catalog: カタログからインストールされたアプリ。
- Other:
helmや Lens など、別のツールでインストールされたアプリ。そのまま表示されます。
アプリ名をクリックすると詳細パネルが開きます。chart とアプリのバージョン、ステータス、リビジョン、ワークロード、インストール後にアプリが出力したメモが表示されます。Open workloads in Explorer から、アプリの Pod やその他のオブジェクトを開けます。
ワークロードの状態
| 状態 | 意味 |
|---|---|
| Ready | アプリのすべてのワークロードの Pod が準備完了です。 |
| Starting | Pod を起動中です。 |
| Needs attention | 一部の Pod を起動できません。パネルに理由と影響を受ける Pod の数が表示されます。 |
Pod を起動できない理由は次のとおりです。
| 理由 | 対処 |
|---|---|
| Waiting for cluster capacity | クラスターの容量が不足しています。パネルに不足したリソースが表示されます。クラスターを拡大するか、アプリを縮小してください。余裕ができると Pod は自動的に起動し、再インストールは不要です。 |
| Waiting for platform capacity | プラットフォームに現在 Pod を配置する余裕がありません。プラットフォーム管理者に連絡してください。 |
| Resource values required | コンテナーの CPU、メモリー、ストレージの値を設定してください。 |
| Blocked by Pod Security | Pod が Autopilot クラスターで許可されていない権限を必要としています。 |
| Storage pending | Pod のボリュームがまだ準備できていません。 |
| Image cannot be pulled | イメージ名とレジストリーへのアクセスを確認してください。 |
| Crashing repeatedly | コンテナーが終了を繰り返しています。Explorer でログを確認してください。 |
| Configuration error | コンテナーが必要とする ConfigMap、Secret、または設定が存在しないか無効です。 |
| Pods not created | ワークロードが Pod を作成できませんでした(例: クラスター内のポリシーによる拒否)。 |
アプリをアップグレードする
カタログからインストールしたアプリについて、カタログに新しいバージョンがある場合、一覧の現在のバージョンの横に新しいバージョンとアップグレードボタンが表示されます。
- 一覧のアップグレードボタン、またはアプリの詳細パネルの Upgrade をクリックします。
- 必要に応じて values を編集します。エディターにはアプリの現在の values が表示されます。保存した内容で置き換えられるため、削除したキーは削除されます。
- Check capacity をクリックします。チェックでは、変更によってアプリの現在の使用量に追加される分のみが考慮されます。
- Upgrade をクリックします。
新しいバージョンがなくても、アプリの values を変更するために Upgrade を使用できます。
ここでアップグレードできるのは、カタログからインストールしたアプリのみです。アップグレードに失敗した場合、アプリは以前のリビジョンに戻されます。
アプリをアンインストールする
- 一覧の削除ボタン、またはアプリの詳細パネルの Uninstall をクリックします。
- 確認します。
アプリとアプリが作成したオブジェクトが削除されます。アプリによっては、アプリが作成したボリュームも削除される場合があります。namespace は残ります。不要であれば Cluster >> Namespaces から削除してください。CloudNativePG、Strimzi、Percona の各 Operator は、データが誤って削除されないよう、カスタムリソース定義(CRD)と、それを使って作成したリソースも残します。
インストール後にクラスターの容量が埋まり、アプリのアンインストール処理を開始できない場合、アンインストールは The app cannot be uninstalled cleanly right now として、不足しているリソースと収まる最小のクラスターサイズとともに拒否されます。何も削除されません。クラスターをリサイズするか空きを作ってから、もう一度アンインストールしてください。
Kubernetes のシステム namespace(kube-system、kube-public、kube-node-lease)にあるアプリは、ここからアンインストールできません。
課金
Cluster Apps は個別に課金されません。クラスターは Kubernetes クラスターの管理 で説明しているとおり、サイズに応じて課金されます。アプリはそのサイズの一部を使用します。さらに必要な場合は、クラスターを拡大してください。
制限事項
- Cluster Apps は Autopilot クラスターで利用できます。kubeconfig で Explorer に追加したクラスターには対応していません。
- アプリにパブリックなホスト名は割り当てられません。クラスター内から Service 経由でアクセスするか、カタログの NGINX Ingress Controller などを使って自分で公開してください。パブリックなエンドポイントには予約済み IP が必要です。コントローラーの values の
controller.service.loadBalancerIPに設定してください(Kubernetes クラスターの管理 を参照)。