6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Kubernetes 1.21: SIG-Auth の変更内容

Last updated at Posted at 2021-04-23

はじめに

このページではKubernetes v1.21におけるSIG-Authに関連する取り組みについて、ChangelogのChanges By Kindの内容から紹介しています。ここに記載されていないものは別のまとめで記載されていると思いますので、 Kubernetes 1.21: 変更点まとめ(後日公開) も合わせて参照してみてください。

今回はBoundServiceAccountVolumeのbeta昇格が個人的なトピックです。詳しく知りたい方は以下の記事を参照してみてください。

PodSecurityPolicyも気になるところですが、もうしばらく様子を見たいと思っています。

:pencil: がついた文章は、CHANGELOGの公式内容ではなく筆者の補足です。

Changes by Kind

Deprecation

  • PodSecurityPolicy APIは1.21で非推奨となり、1.25からは提供されなくなります。(#97171, @deads2k)

  • export クエリパラメータが完全に削除されました。(APIリソースによる一貫性のないサポート、v1.14で非推奨)。 このクエリパラメータを設定したリクエストは、400ステータスレスポンスを受け取るようになりました。(#98312, @deads2k)

:pencil:
kubectlではv1.19で--exportフラグ削除済み。REST APIのクエリパラメータとしてはまだ残っていたみたいです。

  • audit.k8s.io/v1beta1audit.k8s.io/v1alpha1のaudit policyとaudit eventsが非推奨になり、v1.13から利用可能なaudit.k8s.io/v1を採択します。--audit-policy-file でalphaやbetaのポリシー設定を指定している、--audit-log-version / --audit-webhook-versionでalphaやbetaのaudit eventを明示的にリクエストしているkube-apiserverは、v1.24より前にaudit.k8s.io/v1を使用し、audit.k8s.io/v1 のeventを受け付けるように更新する必要があります(MUST)。 (#98858, @carlory) [SIG Auth]

:pencil:
--audit-policy-fileのPolicyリソースや--audit-log-version--audit-webhook-versionでalphaやbetaを指定している場合にはv1.24までにaudit.k8s.io/v1を使うように更新しましょう。

API Change

    1. PodAffinityTermは、labelに基づいて的確なNamespaceを選択できるようにするnamespaceSelectorフィールドを含みます。
    2. 新しいCrossNamespacePodAffinity quota scope APIは、namespaceSelectorまたはnamespacesフィールドを介してNamespace跨ぎの参照をするPodAffinityTermを許可するNamespaceを制限できます。(#98582, @ahg-g) [SIG API Machinery, Apps, Auth and Testing]
  • CSIServiceAccountTokenがBetaに昇格し、デフォルトで有効になりました。(#99298, @zshihang)

:pencil:
これまでCSI driver/providerが(Podの)ServiceAccount Tokenを取得する方法としては、filesystemから読み込む方法、またはdriver/provider毎にTokenRequestを使ってtokenを取得する必要がありました(VolumeContextにPod情報やServiceAccount Nameは含まれていた)。
filesystemから読み込む方法はpermissionの問題やhostPath(/var/lib/kubelt/pods?)が必要な点、automountServiceAccountToken=falseが設定されると使えないなどの問題がありました(この方法を採用していたdriverが存在していたのかは不明)。
driver/providerがTokenRequestを使ってtokenを発行する方法は、driver/providerに権限を与える必要があることや、それぞれで同じ処理の実装が必要という問題がありました。
問題を解決するために、CSIServiceAccountTokenでは、kubeletがTokenRequestを使って発行したtokenがdriverへのNodePublishVolume()リクエストのVolumeContextで渡されます。
https://github.com/kubernetes/kubernetes/blob/v1.21.0/pkg/volume/csi/csi_mounter.go#L231

  • FieldManagerは、オブジェクトが永続化される前にリセットされるフィールドを所有しなくなりました (e.g. "status wiping") (#99661, @kevindelgado) [SIG API Machinery, Auth and Testing]

  • Generic ephemeral volumesがベータになりました。 (#99643, @pohly) [SIG API Machinery, Apps, Auth, CLI, Node, Storage and Testing]

  • PodDisruptionBudget APIオブジェクトがstatusにconditionsを含めることができるようになりました。(#98127, @mortent) [SIG API Machinery, Apps, Auth, CLI, Cloud Provider, Cluster Lifecycle and Instrumentation]

  • GenericEphemeralVolume feature gateが有効な場合、PodSecurityPolicyは許可されたvolume typeとして"Generic"のみを保存します。(#98918, @pohly) [SIG Auth and Security]

  • bazelによるKubernetesのビルドのサポートを削除しました。(#99561, @BenTheElder) [SIG API Machinery, Apps, Architecture, Auth, Autoscaling, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Network, Node, Release, Scalability, Scheduling, Storage, Testing and Windows]

  • Storageのキャパシティトラッキング(CSIStorageCapacity feature)がbetaに昇格しデフォルトで有効になりました。storage.k8s.io/v1alpha1/VolumeAttachmentstorage.k8s.io/v1alpha1/CSIStorageCapacityオブジェクトは非推奨です。(#99641, @pohly) [SIG API Machinery, Apps, Auth, Scheduling, Storage and Testing]

  • BoundServiceAccountVolume featureがbetaに昇格し、デフォルトで有効になりました。

    • これにより、/var/run/secrets/kubernetes.io/serviceaccount/tokenでコンテナに提供されるtokenが有効期限付き、自動更新、Podが削除されると無効になるように変更されました。クライアントは、有効なトークンを引き続き使用できるように、定期的に(1分に1回を推奨)diskからtokenをリロードする必要があります。 k8s.io/client-gov11.0.0+およびv0.15.0+はtokenを自動的にリロードします。デフォルトでは、挿入されたtokenは有効期間が延長されるため、新しく更新されたtokenが提供された後も有効なままです。serviceaccount_stale_tokens_total metricを使って、延長された有効期間に依存し、更新されたtokenがコンテナに提供された後も(古い)tokenを使用し続けるワークロードを監視できます。そのmetiricにて、既存のワークロードが延長された有効期間に依存していないことを示している場合、--service-account-extend-token-expiration=falseでkube-apiserverを起動することにより、挿入されたtokenの有効期間を1時間に短縮できます。(#95667, @zshihang) [SIG API Machinery, Auth, Cluster Lifecycle and Testing]

:pencil:
BoundServiceAccountTokenVolumeがデフォルトで有効になりましたが、現在は有効期間を1年間に延長する措置が入っています。その場合、token自体は本来の有効期間をもとにローテーションされますが、古い方のtokenも(有効期間が延長されているため)しばらくはそのまま(有効期限を持たないレガシーなtokenと同じように)使い続けることが可能です。serviceaccount_stale_tokens_totalでは、そのような本来の有効期間(1時間)を超えてtokenを使っているようなワークロードの存在を監視できます。

  • EndpointSlice ControllersがGAになりました。EndpointSliceControllerはdeprecatedTopologyフィールドを生成せず、zoneとnodeNameフィールドを通じてのみトポロジー情報を提供します。(#99870, @swetharepakula)

  • PodDisruptionBudget APIがschema変更無しでpolicy/v1に昇格しました。唯一の機能的な変更点は、空のselector({})がpolicy/v1 PodDisruptionBudgetに書き込まれた際、namespaceの全podを選択します。policy/v1beta1 APIの動作に変更はありません。(#99290, @mortent) [SIG API Machinery, Apps, Auth, Autoscaling, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Scheduling and Testing]

  • Topology Aware Hintsがalphaで公開され、TopologyAwareHints feature gateで有効にできます。(#99522, @robscott) [SIG API Machinery, Apps, Auth, Instrumentation, Network and Testing]

Feature

  • client-goのmetricにrest_client_exec_plugin_call_totalが追加され、client-goのcredential pluginのコール数の合計をトラッキングできるようになりました。 (#98892, @ankeesler) [SIG API Machinery, Auth, Cluster Lifecycle and Instrumentation]

  • HSTSヘッダを適切にセットするために、kube-apiserverに--strict-transport-security-directivesを渡す機能を追加します。このフィールドを設定する前にブラウザへの影響を理解してください。(#96502, @249043822) [SIG Auth]

:pencil:
HTTPSで提供されているkube-apiserverの応答に、HSTSヘッダがセットされていないというエラーが一部のセキュリティスキャナで報告されてようであり、それを回避するための設定とのこと。詳しくないですが、Webブラウザと通信しないような場合でも設定する効果はあるのでしょうか。

  • KubernetesがGolang 1.16でビルドされるようになりました。(#98572, @justaugustus) [SIG API Machinery, Auth, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Node, Release and Testing]

  • RunAsGroup featureがこのリリースでGAに昇格しました。 (#94641, f@krmayankk) [SIG Auth and Node]

  • ServiceAccountIssuerDiscovery featureがGAに昇格し、無条件で有効になりました。ServiceAccountIssuerDiscovery feature-gateは 1.22で削除されます。(#98553, @mtaufen) [SIG API Machinery, Auth and Testing]

:pencil:
参考: https://qiita.com/hiyosi/items/43ddb0ff9b83070d95a8

  • TTLAfterFinished feature flagがbetaになり、デフォルトで有効になりました。(#98678, @ahg-g)

:pencil: 終了したJobやPod,CustomResourceのTTLを設定することでクリーンアップを簡単にできるメカニズム。
KEP: https://github.com/kubernetes/enhancements/tree/master/keps/sig-apps/592-ttl-after-finish

  • RootCAConfigMap feature gateがGAに進んだことで、無条件で有効になります。このフラグはv1.22のリリースで削除されます。(#98033, @zshihang)

Documentation

  • N/A

Failing Test

  • N/A

Bug or Regression

  • Client-go exec credential pluginsは、stdin上でinteractive terminalが検出された場合にのみstdinを渡すようになりました。これにより、以前はstdinがinteractive terminalであるかどうかをチェックしていたバグが修正されました。 (#99654, @ankeesler)

  • CSIMigrationがonになっている場合にAzure file migration e2e testの失敗を修正しました。(#97877, @andyzhangx)[SIG Auth, Cloud Provider and Storage]

  • alwaysPullImages admission controllerで新しいイメージがないupdate podを無視します。(#96668, @pacoxu) [SIG Apps, Auth and Node]

  • kubeletのログに含まれるFailed to list *v1.SecretまたはFailed to list *v1.ConfigMapという偽のメッセージを修正しました。(#99538, @liggitt) [SIG Auth and Node]

  • kubectlでexec authプラグインを使用していて、同じexec authコンフィグから多数のclient instancesをbuildすることに対する警告が出なくなりました。 (#97857, @liggitt) [SIG API Machinery and Auth]

Other (Cleanup or Flake)

  • k8s.io/kubernetes/pkg/kubelet/apisにあったkubeletのannotationとlabelのAPIがk8s.io/kubelet/pkg/apis/の下に移動しました。(#98931, @michaelbeaumont)

  • Kube-apiserver: OIDC authenticatorが、tokenの検証に必要なメタデータの取得を試みる際に、10秒間待つことがなくなりました。(#97693, @enj) [SIG API Machinery and Auth]

  • v1.17からGAであるCSINodeInfo feature gateが無条件に有効になり、--feature-gates引数で指定できなくなりました。(#96561, @ialidzhikov) [SIG Apps, Auth, Scheduling, Storage and Testing]

  • デフォルトのdelegating authorization optionsで、healthz, readyz, livezへ未認証でアクセスが可能になりました。authz delegtorに接続する system:masters ユーザはauthzのチェックを行いません。(#98325, @deads2k) [SIG API Machinery, Auth, Cloud Provider and Scheduling]

Uncategorized

  • N/A
6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?