2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Kubernetes v1.34 SIG-Authの変更内容

Last updated at Posted at 2025-09-21

はじめに

このページではKubernetes v1.34におけるSIG-Authに関連する取り組みについて、ChangelogのChanges By Kindの項目から紹介しています。ここに記載されていないものは別のまとめで記載されていると思いますので、ぜひそれらも参照してみてください。

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

:pencil2: 機能の更新・追加など

Alphaで追加されたフィーチャーゲート

  • ResourceHealthStatus
  • PodCertificateRequest

Betaに昇格・追加されたフィーチャーゲート

  • StructuredAuthenticationConfigurationEgressSelector(default true)
  • KubeletServiceAccountTokenForCredentialProviders (default true)
  • ExternalServiceAccountTokenSigner
  • TokenRequestServiceAccountUIDValidation (default true)

GAになったフィーチャーゲート

Changes by Kind

Deprecation

  • N/A

API Change

  • DeviceRequestAllocationResult構造体のAPI v1beta2
    AdminAccessタイプにomitemptyoptタグを追加しました。(#132338)
  • JWT authenticatorsにおいて、AuthenticationConfiguration.jwt配列のissuer.egressSelectorTypeフィールドを介してcontrolplaneまたはcluster egress selectorを指定できるようになりました。未設定の場合、従来のegress selectorを使用しない動作が維持されます。この機能にはStructuredAuthenticationConfigurationEgressSelector beta フィーチャーゲート(デフォルトで有効)が必要です (#132768)
  • KubeletがDynamic Resource Allocation (DRA)を介して割り当てられたデバイスの健全性を監視し、pod.status.containerStatuses.allocatedResourcesStatusフィールドにレポートする機能
    を追加しました。これにはDRAプラグインが新しいv1alpha1 NodeHealth gRPCサービスを実装する必要があります。この機能はResourceHealthStatusフィーチャーゲートで制御されます (#130606)
  • Kubeletのイメージプル認証情報トラッキングにサービスアカウントベースの検証サポートを追加しました。外部認証情報プロバイダーを介してサービスアカウント認証情報を使用してイメージ がプルされた場合、同じサービスアカウント(UID、名前、名前空間)を使用する後続のPodは、そのサービスアカウントの有効期間中、再認証なしでキャッシュされたイメージにアクセスできま
    す。(#132771)
    • :pencil2: メモ
    • 認証情報のキャッシュと検証の効率化
    • ServiceAccountCoordinates(UID、Namespace、Name)を通じて、外部プロバイダーがサービスアカウントのコンテキストを認識できるようになった
    • クレデンシャルの追跡の強化
  • Dynamic Resource Allocation(DRA)のコア機能が一般提供(GA)に昇格しました。この新しく安定した機能は、DRAの「structured parameters」フレーバーを使用します。(#132706)
  • kube-apiserverでPodCertificateRequestPodCertificateのprojected volumeのサポートを有効化しました(PodCertificateRequestフィーチャーゲートの背後)。(#128010)
    • :pencil2: メモ
    • KEP: https://github.com/kubernetes/enhancements/blob/master/keps/sig-auth/4317-pod-certificates/README.md
    • PodCertificateRequestcertificates.k8s.io/v1alpha1 スキーマにおける新しい API タイプで CertificateSigningRequest を簡素化し、ポッド証明書発行のユースケースに特化している
    • CertificateSigningRequest と違い承認のステップが不要
    • ポッド間mTLSに利用できるがポッド間mTLSの標準化を図るものではない
    • SPIFFE準拠についてはスコープ外だが将来的な可能性は残されている
    • v1.34 時点ではsignerが未実装なので、 projected volume設定しても証明書が発行されずにPodの作成待ちになる → Signerになって理解するPod Certificate
      • KEPだと kube-apiserver>=1.32、kubelet>=1.32、kube-controller-manager>=1.32 の表記のままなので注意(?)
        volumes:
        - name: pod-certs
          projected:
            defaultMode: 420
            sources:
            - podCertificate:
                signerName: "kubernetes.io/kube-apiserver-client-pod"
                keyType: "ECDSAP256"
                credentialBundlePath: "credential.pem"
      
  • DRA機能によってバックされた拡張リソースにより、クラスター管理者はDeviceClassextendedResourceNameを指定でき、アプリケーション管理者はPodのリクエストで拡張リソースを引き続き使用してDeviceClassに一致するDRAデバイスをリクエストできるようになりました。NodeResourcesFitプラグインのスコアリングはDRAによってバックされた拡張リソースでは機能しませ
    んでした。(#130653)
  • PodCertificateRequestのプレリリースライフサイクルを修正しました。(#133350)
  • CustomResourceDefinitionスキーマでk8s-short-namek8s-long-nameのOpenAPIフォーマットサポートを導入しました。(#132504)
  • kube-apiserver: --authorization-configファイルで認可Webhookの決定のキャッシュを無効化するサポートを追加しました。新しいフィールドcacheAuthorizedRequestscacheUnauthorizedRequestsfalseに設定することで、認可済みまたは未認可のリクエストのキャッシュを防ぐことができます。詳細はhttps://kubernetes.io/docs/reference/access-authn-authz/authorization/#using-configuration-file-for-authorizationを参照してください。(#129237)
  • kube-apiserver: StructuredAuthenticationConfigurationフィーチャーゲートをGA(一般提供)に昇格しました。(#131916)
  • kube-apiserver: --authentication-configファイルで受け入れられるAuthenticationConfigurationタイプがapiserver.config.k8s.io/v1に昇格しました。(#131752)
  • kube-log-runner: -log-file-sizeパラメータを追加し、指定サイズに達した時点でログ出力を新しいファイルにローテートする機能を追加しました。-log-file-ageにより古い出力ファイルの自動削除を有効化し、-flush-intervalにより定期的なフラッシュをサポートしました。(#127667)
  • API VolumeAttributesClassVolumeAttributesClassListstorage.k8s.io/v1に昇格しました。(#131549)
  • AuthorizeWithSelectorsAuthorizeNodeWithSelectorsフィーチャーゲートを安定版に昇格し、常に有効化されるようになりました。(#132656)
  • k8s.io/cri-apiから非推奨のgogoプロトコル定義を削除し、google.golang.org/protobufに置き換えました。(#128653)
  • Boolean-pointer-helper関数をk8s.io/utils/ptr実装に置き換えました。(#132794)
  • apiserverで非推奨パッケージk8s.io/utils/pointerk8s.io/utils/ptrに置き換えました(1/2)。(#132751)
  • 無効なフィールドのバリデーションエラーメッセージを簡素化し、冗長なフィールド名を削除しました。(#132513)
  • KubeletServiceAccountTokenForCredentialProviders機能がベータになり、デフォルトで有効化されました。(#133017)
  • CertificateSigningRequestの.status.conditionsフィールドのconditionTypeの "oneof" approved/deniedチェックを宣言的バリデーションに移行しました。DeclarativeValidationフィーチャーゲートが有効な場合、既存のバリデーションとの不一致はメトリクスで報告されます。DeclarativeValidationTakeoverフィーチャーゲートが有効な場合、宣言的バリデーションが移行されたフィールドのエラーの主要なソースになります。(#133013)
    • :pencil2: メモ
    • CSRはapprovedまたはdenyのどちらか一方の状態のみを持つべきという制約を、コードベースではなく宣言的な定義で実装。保守性と一貫性の向上
  • validation-genコードジェネレーターがバリデーションの段階的強化(ラチェット機構)をサポートするバリデーションコードを生成するようになりました。(#132236)
  • v1クレデンシャルプロバイダー設定にtokenAttributes.cacheTypeフィールドを追加しました。このフィールドは必須で、サービスアカウントを使用してレジストリクレデンシャルを取得するプロバイダーを設定する際にServiceAccountまたはTokenのいずれかに設定する必要があります。(#132617)
    • :pencil2: メモ
    • token単位でキャッシュするかserviceAccount単位でキャッシュするのか
      • token: 認証プロバイダーがサービスアカウントトークンを、トークンと同じ有効期限を持つレジストリ用認証情報に変換する場合や、レジストリがKubernetesのサービスアカウントトークンを直接サポートしている場合に特に有用
      • ServiceAccount: サービスアカウントごとに認証情報をキャッシュ
    • 参考: https://kubernetes.io/blog/2025/09/03/kubernetes-v1-34-sa-tokens-image-pulls-beta/
  • ゼロ値のmetadata.creationTimestampは省略されるようになり、JSON、YAML、CBOR出力で明示的なnullをシリアライズしなくなりました。(#130989)
  • MultiCIDRServiceAllocatorがロックされデフォルトで有効になり、DisableAllocatorDualWriteもデフォルトで有効になりました。(#131318)

Features

  • Structured Authentication Configでエスケープされた名前を持つCEL式のサポートを追加しました。特殊文字を含む名前にアクセスする際は[...]の使用を推奨。CELのオプショナル演算子?は、hasが適用できない場合に使用可能 — 例:claims[?"kubernetes.io"]user.extra[?"domain.io/foo"]。(#131574)
  • kubectlの新しい出力フォーマットkyamlのサポートを追加しました。KYAMLはYAMLの厳密なサブセットで、任意のYAMLプロセッサで処理可能です。KYAMLのフォーマットはJSONとYAMLの中間的
    な形式で、デフォルトのYAMLスタイルよりも明示的なため、エラーが発生しにくいです。(#132942)
  • DRAAdminAccessがデフォルトで有効になり、他のユーザーが使用中のデバイスに対して管理タスク(ヘルス監視やステータス確認など)用にアクセス権を付与するため、特権モードでResourceClaimsResourceClaimTemplatesを作成できるようになりました。(#133085)
  • Authentication Configuration ファイルの正常ロード後にapiserver_authentication_config_controller_last_config_infoメトリクスを追加
  • Authorization Configuration ファイルの正常ロード後にapiserver_authorization_config_controller_last_config_infoメトリクスを追加
  • Encryption Configuration ファイルの正常ロード後にapiserver_encryption_config_controller_last_config_infoメトリクスを追加しました。(#132299)
  • kube-apiserver: ExternalServiceAccountTokenSigner機能をベータに昇格し、サービスアカウントトークンの外部署名と公開検証キーの取得を有効化しました。これはベータ版のExternalServiceAccountTokenSignerフィーチャーゲートを有効にし、--service-account-signing-endpointフラグを指定することで実現されます。フラグ値は、ファイルシステム上のUnixドメインソケットのパス、または抽象名前空間内のUnixドメインソケットを示す@プレフィックス付きの値のいずれかです。(#131300)
  • Kubeletがクレデンシャルプロバイダー設定のハッシュ値をkubelet_credential_provider_config_infoメトリクスを介して報告するようになりました。ハッシュ値はhashラベルに公開されます。(#133016)
  • Kubelet: --image-credential-provider-configフラグを拡張し、単一ファイルに加えてディレクトリパスも受け入れるようになりました。ディレクトリが指定された場合、そのディレクトリ
    内のすべての.json、.yaml、.ymlファイルが辞書順にロードされマージされます。(#131658)
    • :pencil2: メモ
    • 組み込みの設定の他に独自のレジストリの設定を使いたいような場合に、単一ファイルだと追記が大変、みたいなモチベーション
  • CertificateSigningRequestのバリデーションを宣言的バリデーションを使用するように移行しました。DeclarativeValidationフィーチャーゲートが有効な場合、既存のバリデーションとの不一致はメトリクスで報告されます。DeclarativeValidationTakeoverが有効な場合、宣言的バリデーションが移行されたフィールドのエラーの主要なソースになります。(#132361)
  • ボリューム拡張失敗からの回復機能をGA(一般提供)に移行しました。(#132662)
  • CertificateSigningRequest/statusおよび/approvalサブリソースのバリデーションを宣言的バリデーションに移行しました。DeclarativeValidationフィーチャーゲートが有効な場合、既存のバリデーションとの不一致はメトリクスで報告されます。DeclarativeValidationTakeoverフィーチャーゲートが有効な場合、宣言的バリデーションが移行されたフィールドのエラーの主要なソースになります。(#133068)
  • 組み込みのsystem:monitoringロールを更新し、kubeletメトリクスエンドポイントへのアクセス権限を追加しました。(#132178)
  • resourceclaim_controller_resource_claims gauge metric with labels admin_access (true or false), allocated (true or false) to track the current number of ResourceClaims. (#132800@ritazh) [SIG Apps, Auth, Instrumentation and Node] [sig/node,sig/auth,sig/apps,sig/instrumentation]
  • admin_access(true または false)とallocated(true または false)ラベル付きのresourceclaim_controller_resource_claimsゲージメトリクスを追加し、現在のResourceClaims数を追跡します。(#132800)

Failing Test

  • Kube-apiserver: --service-account-signing-endpointフラグが抽象ソケット名のフォーマットのみを検証するようになりました。(#131509)

Bug or Regression

  • 同じ名前でサービスアカウントが再作成された場合にkubeletトークンキャッシュが古いトークンを返す問題を修正しました。キャッシュはUID対応になりました。さらに、新しいTokenRequestServiceAccountUIDValidationフィーチャーゲート(ベータ、デフォルト有効)により、設定時にTokenRequestのUIDがサービスアカウントのUIDと一致することを保証します。(#132803)
    • :pencil2: メモ
    • 従来のキャッシュは名前空間とサービスアカウント名のみをキーとしていたため、新たに作成されたサービスアカウントに対して有効期限切れのトークンが返される原因となっていたとのこと
  • Kube-apiserver: 外部サービスアカウントトークン署名が有効な場合のOIDCディスカバリードキュメントの公開を修正しました。(#131493)
  • Kubelet: スタティックPodが任意のResourceClaimを参照することを許可していた抜け穴を閉じました。これらのPodはサニティチェックにより実行に失敗していましたが、そのような参照は明示的に 禁止されるようになりました。(#131844)
  • baselinerestrictedのPod Security Admissionレベルで、probeとlifecycleハンドラーのhostフィールドの設定をブロックするようになりました。(#125271)

Other (Cleanup or Flake)

  • kubectl attachに警告を追加し、コマンドと出力がそのPodのlogサブリソースを介して利用可能であることをユーザーに通知・リマインドするようになりました。(#127183)
  • cel-go 依存関係をv0.25.0にバンプしました。変更セットはhttps://github.com/google/cel-go/compare/v0.23.2...v0.25.0で利用可能です。(#131444)
  • Kube-apiserver: 非推奨のapiserver_encryption_config_controller_automatic_reload_success_totalapiserver_encryption_config_controller_automatic_reload_failure_totalメトリクスを削除し、apiserver_encryption_config_controller_automatic_reloads_totalを支持するようになりました。(#132238)
  • apiserver_authentication_config_controller_automatic_reloads_totalapiserver_authentication_config_controller_automatic_reload_last_timestamp_secondsメトリクスをBETAに昇格しました。(#131798, #131768)
  • k8s.io/externaljwtから非推奨のgogoプロトコル定義を削除し、google.golang.org/protobufに置き換えました。(#132772)
  • k8s.io/kms/apisから非推奨のgogoプロトコル定義を削除し、google.golang.org/protobufに置き換えました。(#132833)
  • ./test/e2e用に非推奨パッケージk8s.io/utils/pointerk8s.io/utils/ptrに置き換えました。(#132764)
  • pkg/apis用に非推奨パッケージk8s.io/utils/pointerk8s.io/utils/ptrに置き換えました(2/2)。(#132779)
  • pod-security-admissionテスト用に非推奨パッケージk8s.io/utils/pointerk8s.io/utils/ptrに置き換えました。(#132741)
  • apiserver用に非推奨パッケージk8s.io/utils/pointerk8s.io/utils/ptrに置き換えました(2/2)。(#132752)
  • csr用に非推奨パッケージk8s.io/utils/pointerk8s.io/utils/ptrに置き換えました。(#132699)
  • pkg/securityとplugin/pkg用に非推奨パッケージk8s.io/utils/pointerk8s.io/utils/ptrに置き換えました。(#132777)
  • pod-security-admission admissiontests用に非推奨パッケージk8s.io/utils/pointerk8s.io/utils/ptrに置き換えました。(#132742)
  • pod-security-admission policy用に非推奨パッケージk8s.io/utils/pointerk8s.io/utils/ptrに置き換えました。(#132743)
  • タイマーポインターヘルパー関数をk8s.io/utils/ptr実装に置き換えました。(#133030)
  • etcdクライアントライブラリをv3.6.4に更新しました。(#133226)
2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?