LoginSignup
2
0

Kubernetes 1.28: SIG-CLI (kubectl) の変更内容

Last updated at Posted at 2023-08-29

ここでは、Kubernetes 1.28 の CHANGELOG から SIG-CLI (kubectl) の取り組みについてまとめています。:pencil: は筆者によるコメントです。

新たに追加された主なコマンドとフラグ

  • kubectl diff --concurrency フラグ: 差分を並列処理するオブジェクトの数。数が大きいほど高速だが、より多くのメモリ、I/O、CPU を使用する (デフォルトは 1)

変更があった主なコマンドとフラグ

なし

廃止予定のコマンドとフラグ

なし

削除されたコマンドとフラグ

  • kubectl version --short フラグ: バージョン数のみを出力する。デフォルトの挙動が --short フラグに揃えられたため削除された。

そのほか、細かい変更は、 https://github.com/superbrothers/kubectl-docs/compare/v1.27.0...v1.28.0 で参照できます。

所感

SIG-CLI は完全に落ち着いており小さい変更とバグ修正のみでした。

SelfSubjectReview API が v1 に昇格し、kubectl auth whoami が GA したのはめでたいです。これまでは自身のユーザ名やグループを知る方法がなかったので、RBAC の設定のときに面倒でした。

kubectl diff --concurrency フラグは地味に便利です。CI 時に時間がかかっている場合は並列数を高く設定してみると改善されるかもしれません。

What's New (Major Themes)(主要な変更)

SIG-CLI に関連する情報はありません。

Urgent Upgrade Notes(必ず一読してからアップグレードしなければならない事項)

SIG-CLI に関連する情報はありません。

Changes by Kind(種類別の変更)

Deprecation(廃止)

  • kubectl version のデフォルトの出力を kubectl version --short が出力するものと同じに変更され、--short フラグを完全に削除されました (#116720, soltysh)
    • :pencil: v1.24 から kubectl version を実行すると警告が出るようになってました

API Change(API の変更)

  • SelfSubjectReview API が authentication.k8s.io/v1 に昇格し、kubectl auth whoami コマンドは GA しました (#117713, nabokihms) [SIG API Machinery, Architecture, Auth, CLI and Testing]
    • :pencil: SelfSubjectReview API は自身のトークンや証明書からユーザ情報(ユーザ名やグループ)を返してくれる機能で、kubectl auth whoami はその API を使うコマンドです
    • :pencil: Token Review API という似た機能がありますが、こちらは自身ではなく ServiceAccount トークンを検証してくれるものです

Feature(機能)

  • kubectl diff で処理の並列数を設定するための --concurrency フラグが追加されました (#118810, brancz)
    • :pencil: kubectl diff は内部的に diff が処理が直列で実行されていたため、非常に多くのオブジェクトを処理しないといけない場合に時間がかかる問題がありました
    • :pencil: --concurrency フラグのデフォルト値は 1 のため、並列に処理したい場合は明示的に値を指定する必要があります
  • kubectl に新しいコマンドライン引数 --interactive が追加されました。新しいコマンドライン引数により、ユーザはリソースごとの削除要求を対話的に確認できます。 (#114530, ardaguclu) [SIG CLI and Testing]
    • :pencil: 次のように削除前に削除対象となるオブジェクトリストを確認できます
       $ KUBECTL_INTERACTIVE_DELETE=true k delete po --all --interactive
      You are about to delete the following 3 resource(s):
      pod/nginx-7b77898b76-kpkdc
      pod/nginx-7b77898b76-tfcc2
      pod/nginx-7b77898b76-v5kgv
      Do you want to continue? (y/n): y
      pod "nginx-7b77898b76-kpkdc" deleted
      pod "nginx-7b77898b76-tfcc2" deleted
      pod "nginx-7b77898b76-v5kgv" deleted
      
    • :pencil: --interactive フラグはアルファであり、使用には KUBECTL_INTERACTIVE_DELETE=true 環境変数を付与する必要があります
    • :pencil: 個人的にインタラクティブな処理は不要で、kubectl plugin でカバーすべきという意見なのですが、ほしい人は多かったかもしれません
  • wait --for=jsonpath='{expression}'[=value] の "value" の部分がオプションになった。値を指定しない場合、つまり wait --for=jsonpath='{expression}' のようなコマンドの場合、式がオブジェクトやリテラルのような 任意の 単一の JSON 値を返すと、待機条件がマッチしたと解釈される。 (#118160, minherz)
    • :pencil: これまではフィールドがすでに存在している場合にしか使用できませんでしたが、この変更で新しくフィールドが追加される場合にも対応できるようになりました
  • サブコマンドを持つコマンドのヘルプメッセージがよりわかりやすくなりました。これは kubectl <command> --help ... の代わりに完全なコマンドを表示します。

kubectl create secret --help の説明が変更されました。3種類のシークレットタイプの簡単な紹介と、コマンドの使い方の明確な手引が追加されました。 (#117930, LronDC)
- :pencil: これまでサブコマンド(例えば kubectl create)のヘルプを出力した場合にも kubectl <command> --help となってしまっていたところが、kubectl create <command> --help と出力されるようになったというものです

Bug or Regression

  • kubectl {$COMMAND}--help 内のコードブロックに3つのインデントが追加されました (#118029, ardaguclu)
  • 手動でトリガされた場合に Cronjob の status.lastSuccessfulTime が反映されない問題が修正されました (#118530, carlory)
    • :pencil: 「手動にトリガ」とは、kubectl create job --from cronjob/name を使用して Job を作成した場合のことを言ってます
    • :pencil: kubectl create job コマンドで作成した Job に CronJob controller が期待する Owner Reference が設定されていなかったことが問題でした
  • Deployment で kubectl port-forward を使用すると、実行中の pod が利用可能な場合でも、終了中の pod に接続されるバグが修正されました (#119256, brianpursley) [SIG CLI]
    • :pencil: Deployment でとありますが、Deployment に限らず Service などを使った場合でも同様です。また、kubectl port-forward に限らず kubectl logs など他のコマンドでも同様です。
  • explain が jsonpath を正しく認識していなかったバグが修正されました (#115694, mpuckett159)
    • :pencil: どうやら CR でフィールド名に . が含まれる場合に正しく処理されていなかったようです。通常フィールド名にドットを使うことはないと思うので、ほぼほぼ影響なさそうです
  • 指定した api version に変換できないリソースがあった場合に kubectl-convert が失敗する問題が修正されました。新しい動作として、変換に失敗したリソースを警告し、残りのリソースの変換を継続するようになりました (#117002, gxwilkerson33)
  • 指定された種類のリソースがない場合に、kubectl rollout status からの応答やエラーがない問題が修正されました (#117884, gxwilkerson33) [SIG CLI]
  • restricted debug profile が修正されました (#117543, mochizuki875)
    • :pencil: kubectl debug の restricted debug profile で作成される pod が Pod Security Standard の restricted ポリシーを満たしていなかったようです。具体的には allowPrivilegedEscalationseccompProfile が指定されていませんでした
  • kubectl events --for が replicasets.apps などの完全修飾名もサポートするようになりました (#117034, ardaguclu)
  • すべてのリソースで kubectl explain が正しく動作するようになりました (#118876, atiratree)
    • :pencil: bindings のように GET メソッドを持たないリソースで explain が機能していなかったようです
  • kubectl expose は同じポートに異なるプロトコルを持つ Service を作成することをサポートするようになりました (#114909, aimuz)

Other (Cleanup or Flake)

  • genericclioptions.IOStreams が廃止されました。genericiooptions.IOStreams を使用してください (#117102, ardaguclu)
  • すでに冗長な KUBECTL_EXPLAIN_OPENAPIV3 が削除されました (#119286, ardaguclu)
    • :pencil: OpenAPI v3 は 1.27 でベータに昇格しており環境変数の指定はすでに不要でした
2
0
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
0