Kubernetes 1.29: SIG-Apps の変更内容

## はじめに

このページではKubernetes v1.29 における SIG-Apps に関連する変更内容をまとめています。

- https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.29.md

SIG-AppsはKubernetesのワークロードの扱いなどの変更を主に扱っているため、他のSIGと関係する変更が多くなっております。

- 直近での過去の変更内容は以下になります。
  - [Kubernetes 1.28: SIG-Apps の変更内容](https://qiita.com/yosshi_/items/bfc36dd2b021ebbac375)
  - [Kubernetes 1.27: SIG-Apps の変更内容](https://qiita.com/yosshi_/items/607b4a69642d92057ef6)
  - [Kubernetes 1.26: SIG-Apps の変更内容](https://qiita.com/yosshi_/items/35bce758b17e644a2f50)


<details><summary>SIG / SIG-Apps とは？</summary><div>

- SIGとは？
    - Special Interest Groups の略称
    - 各 SIG には Subproject が与えられていて、 Subproject に対して独立して開発できるようになっています。
    - Kubernetes は巨大なプロジェクトなので、各SIG 毎に担当(Subproject)が割り当てられていて、各SIG は独立して開発をしています。
    - SIG 間を跨って話し合いをする必要が生じた場合は Working Groups が一時的に作られ、その枠組みの中で話し合うことになります。

   
- SIG-Appsとは？
    - Apps Special Interest Group の略称
    - Kubernetes に対して、application を deploy したりすることに関することが対象。具体的には Pod, ReplicaSet, Deployments, DaemonSet, StatefulSet, Jobs, CronJob が対象。
![Kubernetes基礎_-_Google_Slides.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309176/78f42f49-da9f-c268-9034-e8d73556334a.png)
    - 詳細について知りたい方は[こちら](https://github.com/kubernetes/community/tree/master/sig-apps)をご参照ください。


</div></details>

SIG-Apps 以外の SIG に関する変更は以下にまとめてありますので、合わせてご参照下さい。

- [Kubernetes 1.29: 変更点まとめ(What's new!)とアップグレード時の注意事項](https://qiita.com/uesyn/items/7768c2adb426e6ad2864)


## 注目の変更
Feature Gatesの中で今回Stageに変更のあった[Sig-Appsに関連する機能](https://github.com/kubernetes/enhancements/tree/master/keps/sig-apps)は以下になります。

- Job
  - `JobReadyPods`：`GA` https://github.com/kubernetes/enhancements/issues/2879
  - `JobBackoffLimitPerIndex`：`Beta` https://github.com/kubernetes/enhancements/issues/3850
  - `JobPodReplacementPolicy`：`Beta` https://github.com/kubernetes/enhancements/issues/3939
- StatefulSet
  - `MaxUnavailableStatefulSet`：`Beta` https://github.com/kubernetes/enhancements/issues/961

今回は既存の機能が昇格されただけで新機能の追加はありませんでした。

## v1.29 Release Notes

v1.29 Release Notes の中で SIG-Apps に関するものについて以下に和訳したものを記載します。

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

### :wastebasket: Deprecation(非推奨)

- `v1.22` から新しく `CronJob` を作成する際に `.spec.schedule` で `TZ` か `CRON_TZ` を指定できましたが、指定できなくなります。 `v1.25+` から利用可能な `.spec.timeZone` を代わりに使用するようにしてください。 詳細はこちらを参照ください https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#unsupported-timezone-specification  ([#116252](https://github.com/kubernetes/kubernetes/pull/116252), [@soltysh](https://github.com/soltysh)) [sig/apps]
  - :pencil: `.spec.schedule`でタイムゾーンが指定できるようになった経緯は以前[こちら](https://qiita.com/yosshi_/items/5ef6805eb358631fbbbc#cronjob%E3%81%A7%E3%81%AE%E3%82%BF%E3%82%A4%E3%83%A0%E3%82%BE%E3%83%BC%E3%83%B3%E3%81%AE%E6%8C%87%E5%AE%9A%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)で書いたので興味がある人は参照ください。意図せずできるようになっていたので元々非推奨だったのですが、今回から validation が追加されたという話になります。

- networking `alpha` API `ClusterCIDR` が削除されました。 ([#121229](https://github.com/kubernetes/kubernetes/pull/121229), [@aojea](https://github.com/aojea)) [sig/network,sig/apps,sig/cli,sig/testing,sig/cloud-provider]
  - :pencil: 既存のコントローラーに追加するのではなく、別途 CRD と新しい node-ipam controller を作成する方法で進めていくようになったので、既存の `alpha` API を削除されたようです。詳細が気になる方は[こちら](https://groups.google.com/g/kubernetes-sig-network/c/nts1xEZ--gQ/m/2aTOUNFFAAAJ)を参照ください。

### :earth_asia: API Changes（変更）

- `PreStop` lifecycle で新たに `sleep` のアクションが追加されました。 これによりコンテナが termination する前の指定した期間でコンテナを pause することができるようになりました。 ([#119026](https://github.com/kubernetes/kubernetes/pull/119026), [@AxeZhan](https://github.com/AxeZhan)) [sig/node,sig/api-machinery,sig/apps,sig/testing]
  - :pencil: これで PreStop のためにコンテナに `sleep` コマンドを追加しなくてもよくなるのでいいですね。

- `ServiceCIDR` が新たに追加され、動的に `Service ClusterIPs` アドレスを設定できるようになります。 ([#116516](https://github.com/kubernetes/kubernetes/pull/116516), [@aojea](https://github.com/aojea)) [sig/network,sig/api-machinery,sig/auth,sig/apps,sig/cli,sig/testing]

- 新しく `LoadBalancerIPMode` feature gate のフィールドが追加されました。 ([#119937](https://github.com/kubernetes/kubernetes/pull/119937), [@RyanAoh](https://github.com/RyanAoh)) [SIG API Machinery, Apps, Cloud Provider, Network and Testing] [sig/network,sig/api-machinery,sig/apps,sig/testing,sig/cloud-provider]

- 新しく `certificates.k8s.io/v1alpha1` ClusterTrustBundle objects が pod でサポートされました。 ([#113374](https://github.com/kubernetes/kubernetes/pull/113374), [@ahmedtd](https://github.com/ahmedtd)) [sig/storage,sig/node,sig/api-machinery,sig/auth,sig/apps,sig/testing]

- 新しく `DisableNodeKubeProxyVersion` feature gate が追加されました。もし `DisableNodeKubeProxyVersion` を有効化した場合は `kubeProxyVersion` フィールドが設定されなくなります。 ([#120954](https://github.com/kubernetes/kubernetes/pull/120954), [@HirazawaUi](https://github.com/HirazawaUi)) [sig/node,sig/api-machinery,sig/apps]
  - :pencil: `node.Status.NodeInfo.KubeProxyVersion` のバージョンが実際の kube-proxy のバージョンと異なっていたり、そもそも kube-proxy を使用しない構成になっていることもあるので、このフィールドを kubelet で管理するのを辞めていこうという話になります。

- Job の status の `Ready` フィールドに書かれているコメントを修正しました。 ([#121765](https://github.com/kubernetes/kubernetes/pull/121765), [@mimowo](https://github.com/mimowo)) [sig/api-machinery,sig/apps]

-  Job pod failure policy action の `FailIndex` の API に書かれているコメントを修正しました。([#121764](https://github.com/kubernetes/kubernetes/pull/121764), [@mimowo](https://github.com/mimowo)) [sig/api-machinery,sig/apps]

- Go API: volume を使用する際に `ResourceRequirements` の構造体ではなく `VolumeResourceRequirements` を利用するようにリプレイスされました。 ([#118653](https://github.com/kubernetes/kubernetes/pull/118653), [@pohly](https://github.com/pohly)) [sig/scheduling,sig/storage,sig/node,sig/api-machinery,sig/auth,sig/apps,sig/testing]

- `Job BackoffLimitPerIndex` が `beta` になりました。 ([#121356](https://github.com/kubernetes/kubernetes/pull/121356), [@mimowo](https://github.com/mimowo)) [sig/apps]

- `Job` の pod failure policy の `onPodConditions` が optional とマークされました 。([#120204](https://github.com/kubernetes/kubernetes/pull/120204), [@mimowo](https://github.com/mimowo)) [sig/api-machinery,sig/apps]
  - :pencil: `onExitCodes` を指定するケースもあるので、`onPodConditions` が必ず必要というわけではないので、必須(required)だったのが任意(optional)という形に修正されています。

- `matchLabelKeys/mismatchLabelKeys` に hard/soft `PodAffinity/PodAntiAffinity` が導入されました。 ([#116065](https://github.com/kubernetes/kubernetes/pull/116065), [@sanposhiho](https://github.com/sanposhiho)) [sig/scheduling,sig/api-machinery,sig/apps,sig/testing,sig/cloud-provider]

- `CSINodeExpandSecret` が `GA` となりデフォルトで有効化されます。CSI ドライバーは、このリリース以降、CSI Client によってオプションで送信される `NodeExpansion`リクエストで渡される　`secretRef` の値を利用できるようになります。([#121303](https://github.com/kubernetes/kubernetes/pull/121303), [@humblec](https://github.com/humblec)) [sig/storage,sig/api-machinery,sig/apps]

- CSI node driver が動作していない場合に `NodeStageVolume` が再度呼ばれるようになりました。 ([#120330](https://github.com/kubernetes/kubernetes/pull/120330), [@rohitssingh](https://github.com/rohitssingh)) [sig/storage,sig/apps,sig/testing]

- `ValidatingAdmissionPolicy` の型チェックで CRDs と API extensions types がサポートされました。 ([#119109](https://github.com/kubernetes/kubernetes/pull/119109), [@jiahuif](https://github.com/jiahuif)) [sig/api-machinery,sig/auth,sig/apps,sig/testing]

### :sparkle: Feature（機能追加）

- Pod 作成のイベントをトリガーに Job controller からラベル付けされて作成された Pod をトラッキングするメトリクス `job_pods_creation_total` が追加されました。 ([#121481](https://github.com/kubernetes/kubernetes/pull/121481), [@dejanzele](https://github.com/dejanzele)) [sig/apps,sig/testing]

- `NodeLifeCycleController` から `TaintManager` を分離しました。 (KEP-3902). ([#119208](https://github.com/kubernetes/kubernetes/pull/119208), [@atosatto](https://github.com/atosatto)) [sig/scheduling,sig/node,sig/api-machinery,sig/apps,sig/instrumentation,sig/testing]

- `ReadWriteOncePod` が `GA` になりました。 ([#121077](https://github.com/kubernetes/kubernetes/pull/121077), [@chrishenzie](https://github.com/chrishenzie)) [sig/scheduling,sig/storage,sig/node,sig/apps,sig/testing]

- `BackoffLimitPerIndex` の機能に `job_finished_indexes_total` のメトリクスが追加されました。([#121292](https://github.com/kubernetes/kubernetes/pull/121292), [@mimowo](https://github.com/mimowo)) [sig/apps,sig/testing]

- `PodReplacementPolicy` が `beta` になりました。 ([#121491](https://github.com/kubernetes/kubernetes/pull/121491), [@dejanzele](https://github.com/dejanzele)) [sig/apps,sig/testing]

- Pod に含まれる再起動可能な init container の resource が autoscaler によって再計算されるようになりました。 ([#120001](https://github.com/kubernetes/kubernetes/pull/120001), [@qingwave](https://github.com/qingwave)) [sig/autoscaling,sig/apps]
  - :pencil: これは init container を sidecar として利用できるようになったので、init container のコンテナもずっと起動したままのケースが発生するようになりました。そのため、そのリソースを autoscaler でも計算する必要性が出てきたので修正されたという話になります。

- ノードに直接 token を bind する `TokenRequests` が `alpha` でサポートされました、token 使用時ノード名と uid が存在しているかチェックします。(該当の機能は `ServiceAccountTokenNodeBinding` と `ServiceAccountTokenNodeBindingValidation`　で保護されています )([#120780](https://github.com/kubernetes/kubernetes/pull/120780), [@munnerz](https://github.com/munnerz)) [sig/api-machinery,sig/auth,sig/apps,sig/cli,sig/testing]

- `kube-controller-manager`: `LegacyServiceAccountTokenCleanUp` が`beta` になり、デフォルトで有効化されます。有効化されている時  `--legacy-service-account-token-clean-up-period` (デフォルト1年) で指定した期間を使用されておらず、`.secrets` list of a ServiceAccount object から参照もされておらず、pods からも参照されていない legacy service account token secrets には自動で `kubernetes.io/legacy-token-invalid-since` ラベルが付与されます。このラベルにより authentication layer は credentials を拒否します。 無効としてラベル付けされて `--legacy-service-account-token-clean-up-period` (デフォルト1年) 経過した credential と利用されていない secret は自動で削除されます。ラベルが付与された Secrets から `kubernetes.io/legacy-token-invalid-since` のラベルを削除すると再アクティブ化します。 ([#120682](https://github.com/kubernetes/kubernetes/pull/120682), [@yt2985](https://github.com/yt2985)) [sig/auth,sig/apps,sig/testing]


### :bug: Bug or Regression(バグ修正)

- Job で作成された Pod から tracking finalizers 削除する冗長な処理を追加しました。この処理は Job が完了したと control plane からマークされた後に実行されます。 ([#119944](https://github.com/kubernetes/kubernetes/pull/119944), [@Sharpz7](https://github.com/Sharpz7)) [sig/apps]

- `ExternalIPs` を使用する `Services` で `ExternalTrafficPolicy` を使用できるようになりました。 ([#119150](https://github.com/kubernetes/kubernetes/pull/119150), [@tnqn](https://github.com/tnqn)) [sig/network,sig/api-machinery,sig/apps,sig/cli,sig/testing,sig/release,sig/cloud-provider]


- `Parallel` policy と PVC labels を持つ StatefulSet がスケールアップするときにクラッシュする可能性がある `kube-controller-manager` の `v1.28.0` における regression を修正しました。([#121142](https://github.com/kubernetes/kubernetes/pull/121142), [@aleksandra-malinowska](https://github.com/aleksandra-malinowska)) [sig/apps]

- cronjob controller が既に作成された Job の status を見失う可能性があるバグを修正しました。([#120649](https://github.com/kubernetes/kubernetes/pull/120649), [@andrewsykim](https://github.com/andrewsykim)) [sig/apps]

- `PodDisruptionConditions` がデフォルトで有効になったことによって発生した regression を修正しました。重複した key を持つ Pod が garbage collector により削除されないケースが修正されました。
 ([#121103](https://github.com/kubernetes/kubernetes/pull/121103), [@mimowo](https://github.com/mimowo)) [sig/scheduling,sig/node,sig/auth,sig/apps,sig/testing]
  - :pencil: 以下のように containerPort と protocol を重複しているなどの時にガベージコレクションがされなかったようです。

      ```yaml
      containers:
        - name: nginx
          image: "nginx:latest"
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 8080
              name: http
              protocol: TCP
            - containerPort: 8080
              name: metrics
              protocol: TCP
      ```

- `TopologyCache` の `HasPopulatedHints` method で同時に map にアクセスする不具合を修正しました。([#118189](https://github.com/kubernetes/kubernetes/pull/118189), [@Miciah](https://github.com/Miciah)) [sig/network,sig/apps]

- Pod Disruption Budget (PDB) で "{}," のような空の値が selector に設定されている場合に該当の namespace の pod がドレインされない問題が修正されました。([#119732](https://github.com/kubernetes/kubernetes/pull/119732), [@sairameshv](https://github.com/sairameshv)) [sig/apps]
  - :pencil: 以下のように selector を設定しているケースの話になります。期待としては `{}` と書いた時に全ての Pod を対象になることを期待しているとのことです。

      ```yaml
      apiVersion: policy/v1
      kind: PodDisruptionBudget
      metadata:
        name: pdb
      spec:
        minAvailable: 100%  
        selector: {}
      ```

      そもそもこれは作成時に拒否されるのかな？と思っていたのでこういう書き方をして作成できることを知らなかったです。個人的にはこの不具合がずっと気づかれなかったことを考えるに、PDB は対象の Pod の特性に合わせて label 毎に指定しておいた方が無難かなと思いました。

- eviction やノード障害の後に `StatefulSet` の pod が再起動しなくなる不具合を修正しました。([#120398](https://github.com/kubernetes/kubernetes/pull/120398), [@aleksandra-malinowska](https://github.com/aleksandra-malinowska)) [sig/apps]
  - :pencil:[toVersus](https://qiita.com/toVersus)さんが[こちら](https://zenn.dev/toversus/articles/88ce2ea66b532d#statefulset-%E3%81%AE-pod-%E3%81%8C%E5%86%8D%E8%B5%B7%E5%8B%95%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84%E5%95%8F%E9%A1%8C)にわかりやすくまとめてくれているのでご参照ください。

- `Jobs` が `ResourceQuota` に達した時に `CronJob` が clean up に失敗する可能性があるバグを修正しました。 ([#119776](https://github.com/kubernetes/kubernetes/pull/119776), [@ASverdlov](https://github.com/ASverdlov)) [sig/apps]

- discovery requests に失敗した時に `garbagecollection` controller が重複したイベントを登録する不具合を修正しました。([#117992](https://github.com/kubernetes/kubernetes/pull/117992), [@liggitt](https://github.com/liggitt)) [sig/api-machinery,sig/apps]

- detach 失敗後の volume への attach が修正されました。detach 失敗後の volume を attach されたものとして扱わないようになりました。Kubernetes は pod で利用する前にそれらが完全に attach されているか確認するようになります。([#120595](https://github.com/kubernetes/kubernetes/pull/120595), [@jsafrane](https://github.com/jsafrane)) [sig/storage,sig/apps]

- `podRecreationPolicy: Failed` が使用され、terminating pods の数が parallelism を超過した場合に Job controller が panic になる不具合を修正しました。 ([#121147](https://github.com/kubernetes/kubernetes/pull/121147), [@kannon92](https://github.com/kannon92)) [sig/apps]

- cronjob controller の requeue time の計算が修正され、, failed や stuck した job のリキューが改善しました。
([#121327](https://github.com/kubernetes/kubernetes/pull/121327), [@soltysh](https://github.com/soltysh)) [sig/apps]

- StatefulSet で image の更新時に partitioning 数より番号が小さい pod が削除されるケースを修正しました。([#120731](https://github.com/kubernetes/kubernetes/pull/120731), [@adilGhaffarDev](https://github.com/adilGhaffarDev)) [sig/apps,sig/testing]

- terminating Pods を tracking する Job status を修正しました。 この field は他の変更がない限り更新されません。([#121342](https://github.com/kubernetes/kubernetes/pull/121342), [@dejanzele](https://github.com/dejanzele)) [sig/apps,sig/testing]
  - :pencil: これについてはちょっと内容を見ると changelog のメッセージと修正内容がマッチしてないように思えていて、ここでは主に job controller のテストの方に修正が入っています。

- pod とそれぞれの namespace を host を共有する sysctls が禁止され、pod の作成・更新時に sysctls がチェックされるようになりました。 ([#118705](https://github.com/kubernetes/kubernetes/pull/118705), [@pacoxu](https://github.com/pacoxu)) [sig/node,sig/apps]
  - :pencil: Kubernetes では [Unsafe Sysctls](https://kubernetes.io/docs/tasks/administer-cluster/sysctl-cluster/#safe-and-unsafe-sysctls) というのがあって、kubelet 側で変更できないようになっています。kubelt 側で制限されているものを Pod 作成時に API Server のタイミングでチェックすることで、無駄な Pod の作成をなくすという話になります。

      ```yaml
      apiVersion: v1
      kind: Pod
      metadata:
        name: sysctl-2
      spec:
        hostNetwork: true
        securityContext:
          sysctls:
          - name: net.ipv4.ip_local_port_range
            value: "40000 65535"
        containers:
        - name: sysctl
          image: docker.m.daocloud.io/library/nginx:1.14.1
          securityContext:
            privileged: true
      ```

- `DaemonSet` のローリングアップデート時にスケジールの制約に合わないノードを対象から除外するように修正しました。`DaemonSet` のローリングアップデートが tolerations 等の起因でスタック する問題が解消されました。 ([#119317](https://github.com/kubernetes/kubernetes/pull/119317), [@mochizuki875](https://github.com/mochizuki875)) [sig/apps,sig/testing]

- 以前は `spec.type` が `LoadBalancer` 出ない場合にも `status.loadBalancer` が設定できましたが、`metadata` か `spec` が更新されると削除されていました。 `spec.type` が  `LoadBalancer` でない時は設定できないようになります。稀にこれが期待しない動作になる場合は `AllowServiceLBStatusOnNonLB` feature gate を有効化することで元の挙動に戻すことができます。この機能を有効化する場合は、コントリビューターが問題を理解できるように Kubernetes プロジェクトの issue に起票して下さい。([#119789](https://github.com/kubernetes/kubernetes/pull/119789), [@thockin](https://github.com/thockin)) [sig/apps,sig/testing]

- `scheduler`: taint manager から報告されたイベントから `apiVersion` が欠落していたイベントを修正しました。([#114095](https://github.com/kubernetes/kubernetes/pull/114095), [@aimuz](https://github.com/aimuz)) [sig/scheduling,sig/node,sig/apps]


### :microscope: Other (その他の修正)

- `ResourceClaim` のランダムなサフィックスの前にハイフンが追加されたので名前が読みやすくなりました。 (`<pod name>-<claim name>-<random suffix>`). ([#120336](https://github.com/kubernetes/kubernetes/pull/120336), [@pohly](https://github.com/pohly)) [sig/node,sig/apps]

- `JobReadyPods` が `stable` になりました。 feature gate を使って無効化することもできなくなります。 ([#121302](https://github.com/kubernetes/kubernetes/pull/121302), [@stuton](https://github.com/stuton)) [sig/apps,sig/testing]

- 以前のバージョンの Kubernetes on Google Cloud で workloads (e.g. Deployments, DaemonSets, etc.) 利用時に `PersistentDisk` volumes を利用時に read-only mode で使う必要がありました。このバリデーションはホストの実行コストが少なく殆どバリデーションをされていませんでした。もし特定のユースケースで問題となる場合は `SkipReadOnlyValidationGCE` を有効化して、Kubernete の bug として報告して下さい。  ([#121083](https://github.com/kubernetes/kubernetes/pull/121083), [@thockin](https://github.com/thockin)) [sig/apps]

- `v1.28` で GA となった `JobTrackingWithFinalizers` の feature gate が削除されました。 ([#119100](https://github.com/kubernetes/kubernetes/pull/119100), [@bzsuni](https://github.com/bzsuni)) [sig/apps]

- `LegacyServiceAccountTokenNoAutoGeneration` feature gate が削除されました。(この機能は stable となり、常時有効化されます) ([#120192](https://github.com/kubernetes/kubernetes/pull/120192), [@SataQiu](https://github.com/SataQiu)) [SIG Apps, Auth and Scheduling] [sig/scheduling,sig/auth,sig/apps]

- `DownwardAPIHugePages` feature gate が削除されました。(この機能は stable となり、常時有効化されます) ([#120249](https://github.com/kubernetes/kubernetes/pull/120249), [@pacoxu](https://github.com/pacoxu)) [SIG Apps and Node] [sig/node,sig/apps]

- `job_controller_job_sync_duration_seconds` metric の resolution が `4ms` に `1min` 変更されました。 ([#120577](https://github.com/kubernetes/kubernetes/pull/120577), [@alculquicondor](https://github.com/alculquicondor)) [sig/apps,sig/instrumentation]

- `GetPodQOS(pod *core.Pod)` function は `PodStatus.QOSClass` の値が設定されていた場合に格納されている値を返すようになります `QOSClass` の値を計算や評価に使いたい場合は `ComputePodQOS(pod*core.Pod)` を使うようにして下さい。 ([#119665](https://github.com/kubernetes/kubernetes/pull/119665), [@vinaykul](https://github.com/vinaykul)) [sig/scheduling,sig/node,sig/api-machinery,sig/apps,sig/cli,sig/testing]

- `Statefulset` は `.start.ordinal` を削除するときのテストで新しい replicas の作成を待つようになりました。 ([#119761](https://github.com/kubernetes/kubernetes/pull/119761), [@soltysh](https://github.com/soltysh)) [sig/apps,sig/testing]

## 所感

今回は sig-apps がメインで開発する機能については新機能追加もなく、機能の安定化のみを行なった落ち着いたリリースになったのかなと思います。sig-apps がレビューで入っている物の中では個人的に印象的だったのは PreStop で `sleep` が使えるようになったのが便利だったので、必要に応じては自分もこの機能は使っていきたいなと思いました。