はじめに
本記事では、Kubernetes 1.13 の CHANGELOG から SIG-CLI の取り組みについてまとめています。
新たに追加されたコマンド
-
kubectl diff
: 現在のオンラインの設定(クラスタに保存されているオブジェクト)とファイルまたは標準入力で指定された設定の差分を出力する
廃止予定のコマンド
kubectl convert
削除されたコマンド
kubectl run-container
kubectl alpha
その他、オプションの追加、削除は https://github.com/superbrothers/kubectl-docs/compare/v1.12.0...v1.13.0 を参照してください。
アップグレード前に確認すべき内容
廃止予定となっていた
kubectl run-container
コマンドが完全に削除されました。代わりにkubectl run
コマンドを使用してください。
廃止予定の機能
kubectl convert
コマンドは廃止予定となりました。将来のリリースで削除される予定です。
kubectl convert
コマンドは、Kubernetes の内部 API に依存しており、kubectl は内部 API への依存を取り除かなければならないとのことで廃止されることになったようです。では代わりにどうするかというと、1つの方法は kubectl apply
したのちに好きなバージョンで kubectl get
する。もう1つの方法は kubectl plugin を作るのもいいねとのこと。
SIG CLI の主な取り組み
v1.13 のリリースで SIG CLI は主にサーバサイドプリンティングとその kubectl サポート、サーバサイドドライラン機能をベースとした
kubectl diff
コマンドの仕上げといった過去のリリースから取り組んできた機能の安定性に注力しました。また、メインリポジトリ1からの離脱に備えて kubectl のコードの分離を続けています。最後に、コミュニティからの素晴らしいサポートとフィードバックにより、新しいプラグイン機構をベータに昇格しました。
新しいプラグイン機構のつかいかたは、kubectl のプラグイン機能 kubectl plugin を使おう! で解説しています。
SIG CLI の主な変更点
#70436: kubectl apply
で deployment strategy が切り替えられるように
これまで Deployment オブジェクトの spec.strategy
フィールドを明示的にクリアしなければ rollingUpdate
から recreate
に変更することができなかったようです。この変更によって切り替えられるようになりました。
#70443: kubectl plugin list
がいつも同じ順序でプラグインのパスを出力するように
それに加えてプラグインにエラーを見つけた場合、それらを一度に全て出力するようになりました。以前はエラーが見つかるとその時点で出力してコマンドが終了してしまいました。
#70311: kubectl get --continue-on-error
がエラーが見つかっても終了しないように
kubectl get --continue-on-error
コマンドはエラーが見つかっても終了しないことが期待されていたところ、そのような挙動になっていなかったようです。
#70740: kubectl get
が結果が空かつソートを指定したときにランタイムエラーにならないように
#68655: kubectl cordon/uncordon/drain
が複数のノードを指定可能に
これまで kubectl cordon/uncordon/drain
コマンドは1つのノードしか指定できませんでした。この変更で一度のコマンドで複数のノードを対象にできるようになりました。べんりですね。
$ kubectl cordon node01 node02 node03
#70699: admin/edit/view のユーザが kubectl rollout
の実行に失敗する問題を修正
controllerrevisions の read access の権限が admin/edit/view ロールに追加されていなかったことで、kubectl rollout
コマンドの実行に失敗していたようです。
#70039: kubectl rollout undo
は存在しない revision にロールバックしようとするとエラーになるように
この変更に加えて、kubectl rollout undo
は廃止予定の extensions/v1beta1
の rollback API を利用しなくなりました。この変更によりロールバックしても Event が作成されなくなるようです。
#71006: kubecl run
でデフォルトで作成される Deployments が apps/v1
に
#65189: kubectl cp
がリモートパスとしてパスショートカット (../
) をサポート
#69344: kubectl apply --prune
の dry-run 時の出力を修正
kubectl apply
コマンドを --prune
オプションありで実行するときに --dry-run
オプションありとなしで表示される内容が異なっていたようで、--dry-run
オプションのありなしに関わらず同じ内容が出力されるように修正されました。