12.4.9. API サービスについて
CRD の場合のように、Operator が使用できる APIService の 2 つのタイプ ( 所有 (owned) および 必須 (required)) があります。
12.4.9.1. 所有 APIService (Owned APIService)
CSV が APIService を所有する場合、CSV は APIService をサポートする拡張 api-server
およびこれが提供する group-version-kinds
のデプロイメントを記述します。
APIService はこれが提供する group-version
によって一意に識別され、提供することが予想される複数の種類を示すために複数回一覧表示できます。
フィールド | 説明 | 必須/オプション |
---|---|---|
|
APIService が提供するグループ ( | 必須 |
|
APIService のバージョン ( | 必須 |
| APIService が提供することが予想される種類。 | 必須 |
| 指定された APIService の複数形の名前 | 必須 |
| APIService に対応する CSV で定義されるデプロイメントの名前 (所有 APIService に必要)。CSV が保留中のフェーズにある場合、OLM Operator は CSV の InstallStrategy で一致する名前を持つデプロイメント仕様を検索し、これが見つからない場合には、CSV をインストールの準備完了フェーズに移行しません。 | 必須 |
|
APIService 名の人間が判読できるバージョン (例: | 必須 |
| Operator がこの APIService を使用する方法についての短い説明、または APIService が提供する機能の説明。 | 必須 |
| APIService は 1 つ以上の Kubernetes オブジェクトのタイプを所有します。これらは、トラブルシューティングが必要になる可能性のあるオブジェクトや、データベースを公開するサービスまたは Ingress ルールなどのアプリケーションに接続する方法についてユーザーに知らせるためにリソースセクションに一覧表示されます。 この場合、オーケストレーションするすべての一覧ではなく、重要なオブジェクトのみを一覧表示することが推奨されます。たとえば、ユーザーが変更できない内部状態を保存する ConfigMap はここには表示しません。 | オプション |
| 所有 CRD と基本的に同じです。 | オプション |
12.4.9.1.1. APIService リソースの作成
Operator Lifecycle Manager (OLM) はそれぞれ固有の所有 APIService のサービスおよび APIService リソースを作成するか、またはこれらを置き換えます。
-
サービス Pod セレクターは APIServiceDescription の
DeDeploymentName
に一致する CSV デプロイメントからコピーされます。 - 新規の CA キー/証明書ペアが各インストールについて生成され、base64 でエンコードされた CA バンドルがそれぞれの APIService リソースに組み込まれます。
12.4.9.1.2. APIService 提供証明書
OLM は、所有 APIService がインストールされるたびに、提供するキー/証明書のペアの生成を処理します。提供証明書には、生成されるサービスリソースのホスト名が含まれる CN が含まれ、これは対応する APIService リソースに組み込まれた CA バンドルのプライベートキーによって署名されます。
証明書は、デプロイメント namespace の kubernetes.io/tls
タイプのシークレットとして保存され、 apiservice-cert
という名前のボリュームは、 APIServiceDescription の DeploymentName
フィールドに一致する CSV のデプロイメントのボリュームセクションに自動的に追加されます。
存在していない場合、一致する名前を持つ VolumeMount もそのデプロイメントのすべてのコンテナーに追加されます。これにより、ユーザーは、カスタムパスの要件に対応するために、予想される名前のボリュームマウントを定義できます。生成される volumeMount のパスは /apiserver.local.config/certificates
にデフォルト設定され、既存の volumeMounts が同じパスと置き換えられます。