Kubernetesチームは2019年6月19日、2019年の2回目のリリースとなる1.15リリースをローンチした。リリース発表によると、最新バージョンの目標は継続的な改善と拡張性である。カスタムリソース定義のプルーニングなどの新機能もあるが、従来のリリースと比較すると、機能強化よりも安定性に重点が置かれているのが特徴だ。
安定性と拡張性に向けた機能強化は、大半がカスタムリソース定義(CRD)に関するものだ。カスタムリソースは、ユーザがKubernetesクラスタにカスタムオブジェクトを追加することの可能な、Kubernetes APIの拡張機能である。CRDの改善の目標は、カスタムリソースとコアKubernetesリソースのインターフェイスの違いを最小限に抑え、最終的にカスタムリソースをGA(general availability)にアップグレードすることだ。
この目標に向けて、データの一貫性と動作を改善する目的で、構造スキーマ(structual schema)が導入された。構造化スキーマはOpenAPI v3 JSONスキーマ仕様に準拠し、ルートになる空でない型、それぞれ宣言されたオブジェクトノードのフィールド、配列ノードの各アイテムを必要とする。論理的な制約と検証は、構造スキーマ仕様に準拠する範囲で可能である。Kubernetes 1.15以降、CRDの新しい機能にはすべて構造スキーマが必要になる。
type: object
description: "foo bar object"
properties:
foo:
type: string
pattern: "abc"
bar:
type: integer
metadata:
type: object
properties:
name:
type: string
pattern: "^a"
anyOf:
- properties:
bar:
minimum: 42
required: ["bar"]
構造スキーマの例 (Kubernetesドキュメントより)
構造スキーマは、CRDの新たな2つの拡張機能 — データプルーニング(data pruning)とフィールドデフォルト(field default)をサポートする。フィールドのデフォルト値は、カスタムリソースの定義時に、OpenAPI検証スキーマ経由で指定する。CRDフィールドにデフォルトを設定することで、新たなフィールドを導入する場合に、APIの互換性が向上する。CRDのプルーニングでは、OpenAPIスキーマ検証に整合しないデータを削除することによって、データの品質とセキュリティ上の問題を改善することができる。Kubernetesのドキュメントには、構造スキーマの操作に関する詳細情報が追加されている。
安定化の作業では、kubeadmの改善も目標であった。Kubeadmは、最小限の実行可能なクラスタをブートストラップするためのツールで、Kubernetesクラスタを構築する上での"ファーストパス"を提供するものだ。今回のリリースでは、kubeadmによる動的な高可用性クラスタの自動生成機能が、ベータ版に昇格している。高可用性クラスタのセットアップには外部ロードバランサが必要となる。これはkubeadmのスコープ外であるため、HAProxyやEnvoyなど、いくつかの標準的なロードバランサによるリファレンス実装がコミュニティから提供される予定だ。1.15では証明書管理も簡素化されていて、アップグレード中の証明書のローテーションはkubeadmが自動的に処理する。これらの改善を達成してベータ段階に移行するため、kubeadm構成ファイルの大規模なテストと修正が行われている。
ボリュームクローニング(volume cloning)がアルファ版として導入された。ボリュームのクローンを作成することで、新しいボリュームをプロビジョニングする時に、別の永続ボリュームを"DataSource"として指定することができる。Kubernetes APIにボリュームクローニングが追加されたことで、既存ボリュームの状態を簡単にコピーできるようになった。例えばデータベースから、データベースの新しいインスタンスにデータをコピーすることができる。
その他の機能としては、KubernetesコアでのGoモジュールのサポート、ノード上でのサードパーティモニタリングプラグインのサポート、スケジュールプラグイン用の新たなスケジューリングフレームワークなどがある。最新リリースとKubernetes 1.15へのアップグレードの詳細については、リリースノートを確認してほしい。