このページではKubernetes v1.20におけるSIG-Authに関連する取り組みについて、ChangelogのChanges By Kindの内容から紹介しています。ここに記載されていないものは別のまとめで記載されていると思いますので、 Kubernetes 1.20: 変更点まとめ(後日公開) も合わせて参照してみてください。
Changes by Kind
Deprecation
N/A
API Changes
-
TokenRequestとTokenRequestProjection機能がGAに昇格しました。この機能はSecretオブジェクトでは見えず、Podの生存期間に紐付くServiceAccount Tokenを生成できます。ます。設定や使い方の詳細は https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#service-account-token-volume-projection を参照してください。TokenRequestとTokenRequestProjectionのFeatureGateはv1.21で削除されます。- kubeadmのkube-apiserver Podマニフェストにデフォルトで
--service-account-key-file、--service-account-signing-key-file,--service-account-issuerが含まれるようになりました。 - (#93258, @zshihang) [SIG API Machinery, Auth, Cluster Lifecycle, Storage and Testing]
📝 TokenRequest APIを使った Podに紐付くServiceAccount トークンを生成する機能がGAになりました。
TokenRequestを有効にするには--service-account-key-file,--service=account-signing-key-file,--service-account-issuerを設定する必要があります。
TokenRequestProjectionは、そのPodに紐付くServiceAccount トークンをTokenRequest APIを使って発行し、Projected VolumeによってPodに与える機能になります。Service Account トークンには有効期限やTokenのaudienceなどをclaimとして持たせることが可能です。 - kubeadmのkube-apiserver Podマニフェストにデフォルトで
-
Feature Gate
BoundServiceAccountTokenVolumeが有効な場合、クラスタ管理者はserviceaccount_stale_tokens_totalメトリックを使って、拡張トークンに依存しているワークロードを監視することができます。そのようなワークロードがない場合は、kube-apiserver を--service-account-extend-token-expiration=falseフラグで起動して拡張トークンをオフにします。(#96273, @zshihang) [SIG API Machinery and Auth]📝
BoundServiceAccountTokenVolumeを有効にした場合に--service-account-extend-token-expirationフラグがデフォルトでtrueに設定されるようになりました。
--service-account-extend-token-expirationフラグは、移行期間などにおいてトークンの有効期限を一時的に延長するためのフラグです。service-account-max-token-expirationの値を無視して1年間の期間が設定されるようです。
BoundServiceAccountTokenVolumeを有効することで有効期限を持ったトークンが配布されるようになりますが、トークンをローテーションしていないワークロードやレガシートークンを使っているワークロードが存在しているかどうかを監視できるメトリクスが提供されているようです。
参考: https://qiita.com/hiyosi/items/35c22507b2a85892c707 -
kube-apiserverは期限切れのkube-apiserver Leaseオブジェクトを削除するようになりました。
- この機能は
APIServerIdentityFeature Gateに属しています。 -
identity-lease-garbage-collection-check-period-secondsフラグはkube-apiserverに追加されました。 - (#95895, @roycaihw) [SIG API Machinery, Apps, Auth and Testing]
📝 https://kubernetes.io/docs/tasks/administer-cluster/highly-available-master/#api-server-identity
- この機能は
-
kube-controller-manager: volume pluginは
--volume-host-allow-local-loopback=falseを設定してlocalとloopbackアドレスからのアクセスを制限、または--volume-host-cidr-denylistを設定することで特定の CIDR レンジからのアクセスを制限することができます。(例,--volume-host-cidr-denylist=127.0.0.1/28,feed::/16) (#91785, @mattcary) [SIG API Machinery, Apps, Auth, CLI, Network, Node, Storage and Testing] -
RFC 1123に従っていないことを示すために、DNS-1123 エラーメッセージを修正しました(#94182, @mattfenwick) [SIG API Machinery, Apps, Auth, Network and Node]
-
RuntimeClassの機能がGAに昇格しました。node.k8s.io API groupsがv1beta1からv1に昇格しました。(#95718, @SergeyKanzhelev) [SIG Apps, Auth, Node, Scheduling and Testing]
-
Server Side ApplyがLabelSelectorフィールドをアトミックとして扱うようになります。セレクタ全体が単一のライターによって管理され、一緒に更新されることを意味します。これらのフィールドには、直感的な方法でマージできない相互に関連した分離できないフィールドが含まれているためです。(#93901, @jpbetz) [SIG API Machinery, Auth, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Network, Node, Storage and Testing]
-
Feature Gate
ServiceAccountIssuerDiscoveryはベータになり、デフォルトで有効になりました (#91921, @mtaufen) [SIG Auth] -
CSIDriverSpecに2つのフィールドを追加するFeature GateCSIServiceAccountTokenを導入します。(#93130, @zshihang) [SIG API Machinery, Apps, Auth, CLI, Network, Node, Storage and Testing]📝 TokenRequest APIを使ったPodに紐付くトークンをVolumeContextとしてCSI driverに渡す機能のようです。
-
Feature Gateを設定することで、cronjob controller v2を利用できます。将来のリリースでデフォルトのコントローラになります。(#93370, @alaypatel07) [SIG API Machinery, Apps, Auth and Testing]
Feature
-
writeリクエストを処理する前にAPIサーバにstorageversionを更新させるFeature Gate
StorageVersionAPIが追加されます。この機能はstorage migratorがbuilt-inのリソースに対するストレージマイグレーションを管理できます。internal.apiserver.k8s.io/v1alpha1 APIとFeature GateAPIServerIdentityの有効化が必要です。(#93873, @roycaihw) [SIG API Machinery, Auth and Testing] -
Node Authorizerの負荷を見積もることができる
node_authorizer_actions_duration_secondsメトリックが追加されました。(#92466, @mborsz) [SIG API Machinery, Auth and Instrumentation] -
verb、resource、およびsubresourceのラベルを持つ、APIサーバーのself-requestをカウントするためのカウンタメトリック
apiserver_request_selfを追加しました。(#94288, @LogicalShark) [SIG API Machinery, Auth, Instrumentation and Scheduling] -
client-go credential pluginは、現在のクラスタ情報を
KUBERNETES_EXEC_INFO環境変数を介して渡すことができるようになりました。(#95489, @ankeesler) [SIG API Machinery and Auth] -
kube-apiserver:
--audit-log-compressでローテートしたauditログファイルを圧縮できるようしました。(#94066, @lojies) [SIG API Machinery and Auth] -
The beta
RootCAConfigMapfeature gate is enabled by default and causes kube-controller-manager to publish a "kube-root-ca.crt" ConfigMap to every namespace. This ConfigMap contains a CA bundle used for verifying connections to the kube-apiserver. (#96197, @zshihang) [SIG API Machinery, Apps, Auth and Testing] -
Feature Gate
RootCAConfigMapがベータになりデフォルトで有効になり、kube-controller-manager はkube-root-ca.crtConfigMap をすべてのネームスペースに公開します。この ConfigMap には、kube-apiserver への接続を検証するための CA バンドルが含まれています。📝 K8s APIサーバのサーバ証明書を検証するためのCA証明書バンドルがConfigMapとしてすべてのNamespaceに公開されるようになりました。
以下のようにしてPodにマウントすることができます。BoundServiceAccountVolumeでは自動的にマウントされるようです。
volumes:
- name: kube-api-access-jz2lz
projected:
defaultMode: 420
sources:
- configMap:
items:
- key: ca.crt
path: ca.crt
name: kube-root-ca.crt
Documentation
- N/A
Failing Test
- N/A
Bug or Regression
-
runtime/defaultのseccomp profileを許可しないPodSecurityPolicyが存在する場合に、docker/defaultのseccomp annotationを持つPodが1.19で作成されないというリグレッションを修正しました。(#95985, @saschagrunert) [SIG Auth]
Other (Cleanup or Flake)
- /metrics、/livez/、/readyz/、および/healthz/ エンドポイントのブートストラップ ClusterRole、ClusterRoleBindingおよびグループを追加します。(#93311, @logicalhan) [SIG API Machinery, Auth, Cloud Provider and Instrumentation]