このページでは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オブジェクトを削除するようになりました。
- この機能は
APIServerIdentity
Feature 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
RootCAConfigMap
feature 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.crt
ConfigMap をすべてのネームスペースに公開します。この 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]