BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース GatekeeperによるKubernetesポリシの拡張

GatekeeperによるKubernetesポリシの拡張

原文(投稿日:2019/09/05)へのリンク

Kubernetes Policy Controller Gatekeeperの最新リリースは、OPA Constraint Frameworkと統合することによって、共有可能で強制可能なポリシの適用が可能になる。Open Policy Agent Gatekeeperプロジェクトは、Google、Microsoft、RedHat、Styraによるコラボレーションで、Kubernetes環境におけるポリシの適用とガバナンス強化を支援するように設計されている。Gatekeeper 3.0は、このOPA制約をさらに活用して、ユーザがポリシを宣言し、制約テンプレートを共有して、ポリシ違反のリソースを監査可能にする。

Gatekeeperは、コードではなく、設定によってKubernetesアドミッションコントロールをカスタマイズする方法を提供するために考案された。厳しいリソース制限、グローバルに一意な入力名、すべてのイメージを指定されたリポジトリからのみプルすることなど、すべてのPodに対するコンプライアンス要件に対処することがその目的だ。Gatekeeperでは、設定でポリシを定義し、Open Policy Agentでポリシを適用することにより、APIコードからこのロジックを削除する。

Open Policy Agent(OPA)は、オープンソースの汎用ポリシエンジンを提供する、Cloud Native Computing Foundationのインキュベーションプロジェクトである。ポリシ管理をOPAに集中することで、アプリケーションスタック全体に適用される、統合的かつコンテキスト対応のソリューションを構築する。

Gatekeeperの最新リリースでは、KubernetesポリシコントローラでのOPAの使用方法を変更することで、新たな機能を提供している。アドミッションコントローラはOPA Constraint Frameworkに統合され、Custom Resource(CRD)ベースのポリシとポリシ共有を実現している。Gatekeeper 1.0で実装されたサイドカーのkube-mgmtでOPAを使用する場合に対して、Gatekeeper 3.0では、拡張可能でパラメータ化されたポリシライブラリ、ポリシライブラリのインスタンス化と拡張のためのネイティブKubernetes CRD、監査機能などが導入されている。

OPA Constraint Frameworkでは、システムが満たすべき要件の宣言として、制約の概念を導入している。制約を記述するには、制約テンプレートが必要となる。このテンプレートには、制約を実行するロジックに加えて、制約に渡すパラメータを記述することができる。制約テンプレートがKubernetesクラスタにデプロイされることで、管理者は、制約テンプレートで定義されたような、個々の制約CRDを作成することが可能になるのだ。

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sRequiredLabels
metadata:
  name: ns-must-have-finance
spec:
  match:
    kinds:
      — apiGroups: [""]
        kinds: ["Namespace"]
  parameters:
    labels: ["finance"]

すべてのネームスペースに対してラベル"finance"を要求する制約CRDの例 — Kubernetes Blogより引用

制約は、DataLogを拡張して、JSONなどの構造化ドキュメントモデルをサポートした宣言型プログラミング言語のRegoで記述される。Regoはクエリ言語であり、RegoのクエリはOPAに保存されたデータに対するアサーションである。

監査では、制約に対してKubernetesリソースを定期的に評価することで、既存の構成ミスを検出することができる。Gatekeeperでは、監査結果を、関連する制約のステータスフィールドにリストされた違反として保存する。

Gatekeeperの今後の開発では、リソース作成時のデフォルトタグ付けや、クラスタ外のデータを合否判定に使用可能にするなど、通常以外のシナリオのサポートに重点が置かれるようになる。ポリシの変更が既存のクラスタに与える影響をユーザがよりよく理解できるように、監査機能のドライランや拡張機能も追加される予定である。

Gatekeeperプロジェクトの詳細については、Githubリポジトリを参照してほしい。フィードバックの提供と開発へのコントリビューションには、OPA Slack #kubernetes-policyチャネルに参加するとよいだろう。

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

BT