fbpx

Kubernetes バージョン 1.25 概要 #aqua #セキュリティ #k8s

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

New call-to-action

本ブログは「Aqua Security」社の技術ブログで2022年8月25日に公開された「 Kubernetes Version 1.25: An Overview 」の日本語翻訳です。

Kubernetes バージョン 1.25 概要


Kubernetes v1.25 がリリースされ、13個 の Stable、10個 の Beta、15個 の Alpha、そして2個 の Deprecated(非推奨)を含む 40 の新しい機能拡張が行われました。このリリースにおける注目すべき機能の紹介、Pod Security Admission(PSA)によるセキュリティの適用、クラスターが containerd を使用しているかの検証、機能の概要について説明します。これらの改善は、ストレージ、Auth、ネットワーク、セキュリティなど、いくつかのセクション(SIG)にまたがっています。


40 の新しい機能拡張 - 開始日 2022年5月23日 ~ リリース日 2022年8月23日

PSPが撤去された今こそ、PSAを活用しよう

PSA は、ユーザビリティを向上させるために設計されており、セキュリティの詳細機能を知らなくても利用できます。PSA は、Pod を Pod Security Standard(PSS)に照らして評価し、Pod の機能を許可または拒否するアドミッションコントローラーです。

PSSでは、特権モードによる非常に寛容なものから、Pod内の最小特権の原則を適用しようとする制限付きモードまで、特権、ベースライン、制限の3つのレベルを定義しています。

これらの制御の組み合わせ(画像参照)により、セキュリティポリシーが決定されます。たとえば、spec.ephemeralContainers[*].securityContext.runAsUser に RunAsAny という値を指定すると、Privileged ポリシーのコントロールの1つとなります。Pod Security Standard(PSS)の詳細については、こちらをご覧ください。


PSAでは、セキュリティプロファイルは、ラベルを通じてネームスペースレベルで適用

PSA はネームスペースラベルを利用して強制力を発揮し、インストール時に強制、監査、警告などのモードを設定できます。PSA と PSP を使った yaml サンプルはこちらです。

Security Policy Level PSA PSP
Privileged Privileged namespace Privileged
Baseline Baseline namespace Baseline
Restricted Restricted namespace Restricted

PSA の詳細については、Microsoft の Lachlan Evenson の講演「The Hitchhiker's Guide to Pod Security」や、 k8s blog の「PodSecurityPolicy:The Historical Context」、PSA のリポジトリをご覧ください。

Dockershimは1.24から削除

Dockershim は v1.24 から削除されました。あなたのクラスターでは containerd を使用していますか?EKS は次のリリースでサポートが終了し、AKS と GKE は v1.19 から containerd をデフォルトで使用していることに注意してください。以下は、クラウドプロバイダーに基づく現在のデフォルトの Kubernetes のバージョンです。

  Default
version
 
EKS

1.23.7

Amazon EKS は、EKS 1.24 から Dockershim のサポートを終了する予定です。dockershim deprecation についての詳細はこちら。

AKS

1.24

Kubernetes v1.19 以降では、コンテナランタイムのデフォルトが containerd になっています。AKS と dockershim についての詳細はこちら。

GKE

1.24

GKE v1.19 以降では、Linux ノードのデフォルトのノードイメージは Container-Optimized OS with containerd(cos_containerd)です。

Kubernetes バージョン1.25 新機能の概要

エフェメラルコンテナ - kubectl debug をサポートし、実行中の Pod でエフェメラルコンテナを起動します。例えば、ディストロレスイメージを使用すると、シェルやデバッグユーティリティが含まれないため、トラブルシューティングが困難になります。エフェメラルコンテナは、デバッグ用のディストロレスイメージのユースケースとして最適です。詳しくは k8s の公式ドキュメントをご覧ください。

kubectl debug -it my-distroless --image=busybox:1.28 --target=ephemeral-demo

Cgroup v2 のサポート - Cgroups v2 には、プロセス階層内にシンプルさを追加したり、ルートレスコンテナにリソース制限を課すなど、多くの利点があります。

なぜ Cgroup v2 が重要なのかについては、「5 Years of Cgroup v2:The Future of Linux Resource Control」や「Five Things to Prepare for Cgroup v2 with Kubernetes」で詳しく説明しています。詳しくは、提案 KEP-2254 を参照してください。

Local Ephemeral Storage Capacity Isolation - これは、リクエスト/リミットの設定を含む、Pod およびコンテナレベルでのローカルエフェメラルストレージの分離をサポートするものです。詳しくは、k8s の公式ドキュメントおよび提案 KEP-361 を参照してください。

Network Policy におけるポート範囲(ただし endPort) - NetworkPolicy において、単一のポートではなく、ポートの範囲をターゲットにできます。詳しくは、k8s 公式ドキュメントと提案 KEP-2079 を参照してください。

CSI 移行 - Container Storage Interface(CSI)は GA されたため、移行先ではインツリーボリュームプラグインを削除し、アウトオブツリーの CSI ドライバに移行されました。scaleio、flocker、quobyte、storageos ドライバは削除され、GlusterFS と Portworx は v1.25 で追加されました。各ストレージドライバのステータスの詳細については、k8s の公式ドキュメントを参照してください。

CRD 検証言語のベータ移行 - Google プロジェクトによる言語であるCELは、カスタムリソースの検証に使用できます。詳しくは k8s のドキュメントを参照してください。

KMS v2の改善 - KMS v2alpha1 API は、パフォーマンス、ローテート、観測性の改善を追加するために導入されました。詳しくは、提案 KEP-3299 を参照してください。

Seccomp のデフォルト - すべてのワークロードのデフォルトの seccomp プロファイルとして RuntimeDefault を使用できるようになりました。詳しくは、公式の k8s ドキュメントと提案 KEP-3240 を参照してください。

IP Tables チェーン所有権のクリーンアップ - kubelet と kube-proxy の間の IP Tables チェーン所有権の混乱を整理します。詳しくは、提案 KEP-3178 を参照してください。

その他の注目すべきアップデートは以下の通りです。

Kubernetes v1.25 の公式アナウンスとブログ記事はこちらから、リリースノートはこちらから参照してください。

New call-to-action

New call-to-action

新規CTA